hive-c0re already samples each agent container's cgroup load for the dashboard (stats/container_stats.rs); this rides those gauges out to the configured OTLP endpoint, reusing the existing services.hyperhive.otel config (endpoint + auth header) — no new toggle. - New stats/otel_metrics.rs: exports via the OpenTelemetry Rust SDK (same crates as hive-metric) with the semconv container.* metric names + container.name attribute so off-the-shelf OTel/Grafana dashboards work, plus the hive agent label. container.cpu.time (counter, s, from cumulative cpu.stat usage_usec), container.memory.usage, container.memory.usage.limit; memory peak / on-disk storage / instantaneous cpu percent stay hyperhive.* custom (no semconv equivalent). Observable instruments read a shared snapshot an async task refreshes (gather() is async; SDK callbacks sync). - container_stats: expose cpu_time_usec (cumulative) on ContainerResource. - The OTLP auth header is loaded onto hive-c0re's own unit via systemd LoadCredential and read from $CREDENTIALS_DIRECTORY/otel-headers. - docs/observability.md documents the host-emitted semconv metrics. Host-side export, so it covers containers even when their agent is idle.
11 lines
393 B
Rust
11 lines
393 B
Rust
//! Metrics aggregation for the dashboard: hive-wide turn-stats
|
|
//! rollups, host-system probes / server warnings, and live
|
|
//! per-container cgroup load. Each submodule is re-exported at the
|
|
//! crate root, so `crate::hive_stats::…` etc. keep working unchanged.
|
|
|
|
pub mod container_stats;
|
|
pub mod hive_stats;
|
|
pub mod host_stats;
|
|
pub mod otel_metrics;
|
|
pub mod sweep_health;
|
|
pub mod warnings;
|