feat(v3.0): Dashboard, Correlation, Recording, and OTLP Exporter#60
Merged
Conversation
#52) Add v3.0 advanced features: - #49: Live Dashboard with WebSocket UI - Dashboard server with configurable host/port - WebSocketHandler for real-time event streaming - EventSerializer for JSON event conversion - DashboardConfig for server configuration - #50: Event Correlation Engine - CorrelationEngine for linking events by PID/TID/Handle - CorrelationGroup for grouping related events - Timeline export to JSON and DataFrame formats - Causality tracing within configurable time windows - #51: ETW Recording & Replay (.etwpack format) - Recorder for capturing events to .etwpack files - Player for replaying recorded events with filtering - EtwpackHeader/EtwpackIndex for file metadata - Support for zstd/lz4 compression types - #52: OpenTelemetry (OTLP) Exporter - OtlpExporter for streaming to OTLP collectors - SpanMapper for custom event-to-span mapping - OtlpFileExporter for file-based export - Support for sampling and batching All features implemented with TDD approach (101 new tests, 303 total). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Clean target/wheels directory before building to prevent old versions - Sort wheels descending by name to select latest version in case multiple exist 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add demo_v2_features.py: MultiSession, ManifestParser, RustEventFilter - Add demo_v3_features.py: Dashboard, Correlation, Recording, OTLP - Fix datetime serialization in recording.py for JSON export - Fix datetime timestamp conversion in otlp.py for OTLP format - Add E402 ignore for examples directory in ruff config 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Implement real-time ETW event visualization using Gradio - Add `pyetwkit dashboard` CLI command with provider/profile support - Add EventBuffer for thread-safe event storage and rate calculation - Add `dashboard` optional dependency group in pyproject.toml - Dashboard auto-refreshes events every 0.5s, stats every 1s Usage: pyetwkit dashboard Microsoft-Windows-Kernel-Process pyetwkit dashboard --profile network --port 8080 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change default port expectation from 8080 to 7860 (Gradio default) - Update WebSocketHandler tests to use EventBuffer methods (add_event, get_events) - Add thread_id to batch serialization test mock events 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Features
Dashboard (#49)
Dashboardserver with configurable host/portWebSocketHandlerfor real-time event streaming to browser clientsEventSerializerfor JSON event conversionDashboardConfigfor server configurationCorrelation Engine (#50)
CorrelationEnginefor linking events by shared identifiersCorrelationGroupfor grouping related eventsRecording & Replay (#51)
Recorderfor capturing events to .etwpack filesPlayerfor replaying recorded events with filteringEtwpackHeader/EtwpackIndexfor file metadataOTLP Exporter (#52)
OtlpExporterfor streaming to OTLP collectorsSpanMapperfor custom event-to-span mappingOtlpFileExporterfor file-based exportTest plan
Closes #49, Closes #50, Closes #51, Closes #52
🤖 Generated with Claude Code