Diagnostics Node
A standalone node that publishes Docker container and system resource metrics to diagnostic topics.
Purpose
The diagnostics node continuously monitors and publishes:
- Docker container metrics: CPU, memory, network, I/O per container
- System resource metrics: Host CPU, memory, disk, network
This complements the metrics published by simulation-bridge (streaming pipeline and Godot connection metrics).
Architecture
Metrics Published
Every 5 seconds:
/diagnostics/docker/containers- One message per running container/diagnostics/system/resources- System-wide resource usage
Collectors
- DockerCollector: Uses bollard (Docker API client) to fetch container stats
- SystemCollector: Uses sysinfo to fetch host system metrics
Running
Standalone
With Full System
# 1. Start control plane
# 2. Start diagnostics node
&
# 3. Start simulation (publishes streaming/Godot metrics)
Monitor Diagnostics
CLI:
# Watch all diagnostics
# Docker only
# System only
Dashboard:
Open browser: http://localhost:3000/dashboard/diagnostics
Metrics Details
Docker Container Metrics
Published to: /diagnostics/docker/containers
DockerContainerMetrics
System Resource Metrics
Published to: /diagnostics/system/resources
SystemResourceMetrics
Dependencies
mecha10-core- Framework context and pub/submecha10-diagnostics- Diagnostic collectorstokio- Async runtimetracing- Logging
Performance
- CPU overhead: < 0.5%
- Memory footprint: < 5MB
- Publishing frequency: Every 5 seconds
- Docker API calls: Async, non-blocking
Integration
With simulation-bridge
simulation-bridge publishes:
/diagnostics/streaming/pipeline/diagnostics/streaming/encoding/diagnostics/streaming/bandwidth/diagnostics/godot/connection
diagnostics-node publishes:
/diagnostics/docker/containers/diagnostics/system/resources
Together they provide complete system visibility.
With CLI
The mecha10 diagnostics CLI command subscribes to all diagnostic topics, so it automatically receives metrics from both nodes.
With Dashboard
The /dashboard/diagnostics page subscribes to all diagnostic topics via WebSocket.
Note: Requires WebSocket server to forward Redis pub/sub messages to WebSocket clients.
Troubleshooting
No Docker metrics
Problem: Docker metrics not appearing
Solutions:
- Verify Docker is running:
docker ps - Check Docker socket permissions
- Ensure diagnostics-node is running:
ps aux | grep diagnostics-node
No system metrics
Problem: System metrics not appearing
Solutions:
- Check diagnostics-node logs
- Verify Redis is accessible:
redis-cli ping - Ensure diagnostics-node has system permissions
Development
Build
Test
# Run the node
# In another terminal, subscribe to topics
> SUBSCRIBE
> SUBSCRIBE
Logs
RUST_LOG=debug