Metrics

The agent collects the following metrics on every collection interval (default 10s). All metrics follow the OpenTelemetry semantic conventions and are exported via OTLP.

Metric reference

Metric nameTypeUnitDescription
system.cpu.usageGauge%Overall CPU usage percentage across all cores
system.memory.usedGaugebytesRAM currently in use
system.memory.totalGaugebytesTotal installed RAM
system.disk.usedGaugebytesDisk space used on the root partition
system.disk.totalGaugebytesTotal disk capacity of the root partition
system.network.bytes_inCounterbytesTotal bytes received across all interfaces
system.network.bytes_outCounterbytesTotal bytes sent across all interfaces

OTLP payload example

Each batch sent to the collector looks like the following (simplified JSON representation):

OTLP payload (simplified)
{
  "resource_metrics": [{
    "resource": {
      "attributes": {
        "host.name": "my-server",
        "os.type": "linux"
      }
    },
    "scope_metrics": [{
      "metrics": [
        {
          "name": "system.cpu.usage",
          "gauge": { "data_points": [{ "as_double": 12.4, "time_unix_nano": 1700000000000000000 }] }
        },
        {
          "name": "system.memory.used",
          "gauge": { "data_points": [{ "as_int": 3328000000, "time_unix_nano": 1700000000000000000 }] }
        }
      ]
    }]
  }]
}

Collection details

  • CPU — read from /proc/stat (Linux) or GetSystemTimes (Windows). Averaged across all logical cores.
  • Memory — read from /proc/meminfo (Linux) or GlobalMemoryStatusEx (Windows).
  • Disk — read from statvfs("/") (Linux) or the system drive (Windows). Only the root/system partition is measured in v0.1.
  • Network — cumulative counters from /proc/net/dev (Linux) or GetIfTable (Windows). All interfaces are summed.

Timestamps

Timestamps are generated at the moment of collection, not at the moment of transmission. This ensures accurate time-series data even when the offline buffer replays delayed batches.