{"annotations": {"list": []}, "editable": false, "graphTooltip": 0, "panels": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "description": "Devices answering scrapes (up==1) vs silent (up==0).", "fieldConfig": {"defaults": {"mappings": [{"options": {"0": {"text": "OFFLINE"}, "1": {"text": "ONLINE"}}, "type": "value"}], "thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": 0}, {"color": "green", "value": 1}]}}, "overrides": []}, "gridPos": {"h": 4, "w": 8, "x": 0, "y": 0}, "id": 1, "options": {"colorMode": "background", "graphMode": "none", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "up{job=\"node\",device_id=\"$device\"}", "refId": "A"}], "title": "Online / Offline", "type": "stat"}, {"datasource": {"type": "prometheus", "uid": "prometheus"}, "description": "100 - available% across reporting devices.", "fieldConfig": {"defaults": {"max": 100, "min": 0, "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": 0}, {"color": "yellow", "value": 70}, {"color": "red", "value": 90}]}, "unit": "percent"}, "overrides": []}, "gridPos": {"h": 4, "w": 8, "x": 8, "y": 0}, "id": 2, "options": {"colorMode": "value", "graphMode": "none", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "100 * (1 - node_memory_MemAvailable_bytes{job=\"node\",device_id=\"$device\"} / node_memory_MemTotal_bytes{job=\"node\",device_id=\"$device\"})", "refId": "A"}], "title": "RAM used %", "type": "stat"}, {"datasource": {"type": "prometheus", "uid": "prometheus"}, "description": "Average CPU over 5m from node_cpu_seconds_total.", "fieldConfig": {"defaults": {"max": 100, "min": 0, "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": 0}, {"color": "yellow", "value": 70}, {"color": "red", "value": 90}]}, "unit": "percent"}, "overrides": []}, "gridPos": {"h": 4, "w": 8, "x": 16, "y": 0}, "id": 3, "options": {"colorMode": "value", "graphMode": "none", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "100 * (1 - avg(rate(node_cpu_seconds_total{job=\"node\",device_id=\"$device\",mode=\"idle\"}[5m])) / count(rate(node_cpu_seconds_total{job=\"node\",device_id=\"$device\",mode=\"idle\"}[5m])))", "refId": "A"}], "title": "CPU used %", "type": "stat"}, {"datasource": {"type": "prometheus", "uid": "prometheus"}, "description": "Root filesystem usage %.", "fieldConfig": {"defaults": {"max": 100, "min": 0, "thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": 0}, {"color": "yellow", "value": 75}, {"color": "red", "value": 90}]}, "unit": "percent"}, "overrides": []}, "gridPos": {"h": 6, "w": 12, "x": 0, "y": 4}, "id": 4, "options": {"colorMode": "value", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "100 * (1 - node_filesystem_avail_bytes{job=\"node\",device_id=\"$device\",mountpoint=\"/\"} / node_filesystem_size_bytes{job=\"node\",device_id=\"$device\",mountpoint=\"/\"})", "refId": "A"}], "title": "Disk / used %", "type": "stat"}, {"datasource": {"type": "prometheus", "uid": "prometheus"}, "description": "Seconds since the last WireGuard handshake; rising values mean a stale tunnel. Source: textfile metric wireguard_last_handshake_seconds.", "fieldConfig": {"defaults": {"thresholds": {"mode": "absolute", "steps": [{"color": "green", "value": 0}, {"color": "yellow", "value": 180}, {"color": "red", "value": 600}]}, "unit": "s"}, "overrides": []}, "gridPos": {"h": 6, "w": 12, "x": 12, "y": 4}, "id": 5, "options": {"colorMode": "value", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto"}, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "time() - wireguard_last_handshake_seconds{job=\"node\",device_id=\"$device\"}", "refId": "A"}], "title": "WireGuard handshake age", "type": "stat"}, {"datasource": {"type": "prometheus", "uid": "prometheus"}, "description": "Running containers (1) vs stopped (0), including MEG. Source: textfile metric docker_container_running.", "fieldConfig": {"defaults": {"mappings": [{"options": {"0": {"text": "STOPPED"}, "1": {"text": "RUNNING"}}, "type": "value"}], "thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": 0}, {"color": "green", "value": 1}]}}, "overrides": []}, "gridPos": {"h": 6, "w": 24, "x": 0, "y": 10}, "id": 6, "targets": [{"datasource": {"type": "prometheus", "uid": "prometheus"}, "expr": "docker_container_running{job=\"node\",device_id=\"$device\"}", "legendFormat": "{{name}}", "refId": "A"}], "title": "Docker containers", "type": "timeseries"}], "refresh": "30s", "schemaVersion": 39, "tags": ["blueforce", "fleet"], "templating": {"list": [{"current": {}, "datasource": {"type": "prometheus", "uid": "prometheus"}, "definition": "label_values(up{job=\"node\"}, device_id)", "includeAll": false, "multi": false, "name": "device", "options": [], "query": {"query": "label_values(up{job=\"node\"}, device_id)", "refId": "PrometheusVariableQueryEditor-VariableQuery"}, "refresh": 1, "regex": "", "type": "query"}]}, "time": {"from": "now-6h", "to": "now"}, "timepicker": {}, "timezone": "", "title": "Blueforce Fleet Overview", "uid": "bf-fleet-overview", "version": 1}