--- name: metrics description: Metrics aggregator with system and skill metrics metadata: version: "1.0.0" vibestack: main: false metrics-port: 9090 --- # Metrics Skill Aggregates metrics from system (node_exporter) and other skills into a single `/metrics` endpoint. ## Features - System metrics via node_exporter (CPU, memory, disk, network) - Auto-discovers skills that expose metrics - Single aggregated endpoint for Prometheus scraping - Auto-registers with Caddy if present ## How Skills Expose Metrics Skills can expose metrics by adding to their SKILL.md: ```yaml metadata: vibestack: metrics-port: 8080 ``` Or by setting environment variable: ```bash METRICS_PORT_myskill=8080 ``` The aggregator will scrape `localhost:{port}/metrics` for each discovered skill. ## Configuration | Variable | Description | Default | |----------|-------------|---------| | `METRICS_PORT` | Aggregator port | `9090` | | `NODE_EXPORTER_PORT` | node_exporter port | `9100` | | `METRICS_DOMAIN` | Domain for Caddy auto-config | (none) | | `METRICS_PATH` | URL path for metrics | `/metrics` | ## Collected Metrics ### System (node_exporter) - `node_cpu_*` - CPU usage - `node_memory_*` - Memory usage - `node_disk_*` - Disk I/O - `node_network_*` - Network I/O - `node_filesystem_*` - Filesystem usage ### Per-Skill Each skill's metrics are prefixed with the skill name: ``` # From ttyd skill ttyd_connections_active 5 ttyd_sessions_total 123 ``` ## Usage ```bash # Scrape aggregated metrics curl http://localhost:9090/metrics # With Caddy proxy curl https://metrics.example.com/metrics ```