Initial commit: JMon cross-platform monitoring system

- gRPC client-server metrics collection
- PeriodicTimer-based 5-second sampling
- Delta encoding with configurable thresholds
- Queue/retry mechanism for resilience
- ProcessId tracking for duplicate detection
- Server-side state reconstruction
- Native AOT compilation support
- Docker/Podman containerization
- PostgreSQL + TimescaleDB persistence layer
This commit is contained in:
2026-01-05 23:23:55 -06:00
commit 127b3ad5bf
16 changed files with 1241 additions and 0 deletions

32
JMonAgent/MetricsQueue.cs Normal file
View File

@@ -0,0 +1,32 @@
using System.Collections.Concurrent;
namespace JMonAgent;
public class MetricsQueue
{
private readonly ConcurrentQueue<JMon.Protos.DeltaMetrics> _queue = new();
private readonly ILogger<MetricsQueue> _logger;
public MetricsQueue(ILogger<MetricsQueue> logger)
{
_logger = logger;
}
public void Enqueue(JMon.Protos.DeltaMetrics metrics)
{
_queue.Enqueue(metrics);
_logger.LogWarning("Metrics queued (total: {count})", _queue.Count);
}
public List<JMon.Protos.DeltaMetrics> DequeueAll()
{
var items = new List<JMon.Protos.DeltaMetrics>();
while (_queue.TryDequeue(out var item))
{
items.Add(item);
}
return items;
}
public int Count => _queue.Count;
}