# sys-info Periodic host metrics source. Emits one structured `metrics` event per interval tick covering host identity, memory, swap, CPU, network I/O, disk usage + I/O, and component temperatures. Reuses the existing `sysinfo` crate (no extra dependencies). Pair it with any sink to ship host metrics through your pipeline. ## Config | Key | Type | Default | Description | |--------------|-----------------------|---------|-------------------------------------------------------------------| | `interval` | number (seconds) | `30` | Seconds between metric snapshots. Must be > 0. | | `interfaces` | list of glob patterns | (all) | Network interface names to include. Supports `*` and `?`. | | `disks` | list of glob patterns | (all) | Disk mount points to include. Supports `*` and `?`. | Unknown config keys are rejected at startup. Filter values are compiled eagerly: invalid glob patterns fail before the pipeline starts. Recommended minimum interval: 5 seconds. Refresh calls do syscalls; very short intervals are operator's responsibility. ## Event shape ```json { "type": "metrics", "ts": 1718000000000, "interval-secs": 30, "host": { "name": "web-01", "uptime-secs": 864000, "os": "Ubuntu 22.04.3 LTS", "kernel": "5.15.0-91-generic" }, "memory": { "total-bytes": 17179869184, "used-bytes": 9663676416, "avail-bytes": 7516192768 }, "swap": { "total-bytes": 4294967296, "used-bytes": 1073741824 }, "cpu": { "usage-pct": 12.4, "core-count": 8, "load-avg-1": 1.23, "load-avg-5": 0.98, "load-avg-15": 0.75 }, "network": { "eth0": { "rx-bytes": 204800, "tx-bytes": 81920, "rx-pkts": 142, "tx-pkts": 98, "rx-errors": 0, "tx-errors": 0 } }, "disks": { "/": { "device": "/dev/sda1", "kind": "ssd", "total-bytes": 500107862016, "used-bytes": 312345600000, "rx-bytes": 4096, "tx-bytes": 8192 } }, "temps": { "CPU": { "current-celsius": 52.0, "max-celsius": 95.0, "critical-celsius": 100.0 } } } ``` `network`, `disks`, and `temps` are maps keyed by interface name, mount point, and component label respectively. Disk `kind` is one of `"ssd"`, `"hdd"`, or `"unknown"`. Components with no readable temperature are omitted. Network and disk `rx-bytes`/`tx-bytes` are deltas since the previous tick; the first event after start may show zeros while the deltas warm up. ## Platform availability `sysinfo` does not expose every category on every platform. On `start()`, the plugin probes for empty `network`, `disks`, and `temps` collections and logs a warning of the form: ``` [sys-info] warning: not available on this platform ``` before the first tick fires. ## Example ```yaml pipeline: sys-info: config: interval: 30 interfaces: ["eth*", "en*"] disks: ["/", "/var/*"] stdout: inChannels: - sys-info ```