Add per-alias log levels, metrics, and web dashboard#14
Open
fotag wants to merge 9 commits into
Open
Conversation
- Per-alias log level control - Add LogLevel property to ConfigurationEntry - Add EntryLogger class with runtime level changes - Pass EntryLogger to all message processors via IMessageProcessor interface - Add SetLogLevel/GetLogLevel API endpoints and Orchestrator methods - Metrics system - Add QueueMetrics model tracking messages received/sent/failed - Add MetricsStore for thread-safe per-alias metrics - Add periodic metrics logging via configurable interval - Web dashboard - Add Kestrel-based dashboard server with REST API and SSE - Real-time monitoring with sparkline graphs - Runtime log level changes via dropdown - Dark mode support - JSON structured logging - Update NLog.config to use JsonLayout - All logs include @timestamp, level, logger, message, alias - Route Kestrel logs through NLog - AWS profile support - Add Profile property to ConfigurationEntry - Support AWS credentials file profiles in AwsQueueClient - Build system improvements - Add Makefile with cross-platform build targets - Add Dockerfile for binary export and runtime images - Support for macOS, Linux (x64/arm64), Windows - Documentation - Update README with new features and build instructions
Owner
|
@fotag I love this. While you're at it, you might bump the packages to latest .Net 8 versions:
Testing frameworks also need an update but we can tackle this on another PR. |
AWS SDK 4.x returns null instead of empty collections for MessageAttributes and Attributes. Added null-safe handling to prevent ArgumentNullException. Ref: aws/aws-sdk-net#3600
- Add null checks in Orchestrator.GetLogLevel/SetLogLevel for pre-Start calls - Reorder startup: Orchestrator before Dashboard to prevent race condition - Remove encode="false" from NLog exception attribute for valid JSON output Fixes dashboard crashes when accessed during startup and enables proper Filebeat JSON parsing of exception stack traces.
- Add universalTime=true to NLog @timestamp for correct UTC timestamps - Change IOrchestrator DI registration from Transient to Singleton Transient registration caused Dashboard to get a different Orchestrator instance than Worker, resulting in 404 errors when changing log levels.
Plus add dashboard sorting/summary.
3b2e53f to
d62300e
Compare
- Add DefaultLogLevel to AppSettings - Exclude LogLevel from config comparison - Dashboard shows timeout info - Add message-id from SQS in logs
d62300e to
3e28bae
Compare
- Log SQS MessageId instead of ReceiptHandle for correlation - Add messageId as ES field in all logs - Move attributes logging to Debug level - Include attributes in Error logs - Add timing and details to HTTP/Kafka/PowerShell processors
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.
Per-alias log level control
Metrics system
Web dashboard
JSON structured logging
AWS profile support
Build system improvements
Documentation