Pilot Metrics
Collect and aggregate metrics from Pilot Protocol agents.
Commands
Get agent info
pilotctl --json info
Returns node ID, address, hostname, uptime, peers, encryption status, and traffic counters.
Get peer list
pilotctl --json peers
Lists connected peers with connection time.
Get connections
pilotctl --json connections
Lists active connections with state, ports, bytes sent/received.
Subscribe to custom metrics
pilotctl --json subscribe <source-hostname> "metrics.*" [--timeout <seconds>]
Workflow Example
Fleet health dashboard:
#!/bin/bash
OUTPUT_FILE="/tmp/fleet-metrics-$(date +%Y%m%d-%H%M%S).json"
echo '{"timestamp":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","agents":[]}' > "$OUTPUT_FILE"
agents=$(pilotctl --json trust 2>/dev/null | jq -r '.data.trusted[].hostname')
for agent in $agents; do
ping_result=$(pilotctl --json ping "$agent" 2>/dev/null)
rtt_ms=$(echo "$ping_result" | jq -r '.data.results[0].rtt_ms // null')
agent_data=$(jq -n --arg hostname "$agent" --arg rtt "$rtt_ms" \
'{hostname: $hostname, rtt_ms: ($rtt | tonumber), status: "online"}')
jq --argjson agent "$agent_data" '.agents += [$agent]' "$OUTPUT_FILE" > "${OUTPUT_FILE}.tmp"
mv "${OUTPUT_FILE}.tmp" "$OUTPUT_FILE"
done
Dependencies
Requires pilot-protocol skill, jq, and a running daemon.