Capture current Ansible control plane state

Commit the accumulated infrastructure work that was living only in the
working tree: monitoring stack, emergency access/bot, gyro allocator,
grimmory, adguard, backup audit and the OpenCode agent definitions.

Also ignore Python bytecode, local archives and Nix/direnv artifacts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
This commit is contained in:
Dmitry
2026-08-26 21:39:28 +03:00
co-authored by Claude Opus 5
parent 4bafa7d09e
commit c676be81ec
126 changed files with 10583 additions and 44 deletions
@@ -0,0 +1,26 @@
{
"title": "Backups",
"uid": "homelab-backups",
"schemaVersion": 39,
"version": 1,
"panels": [
{
"type": "table",
"title": "Audit Result",
"gridPos": {"h": 10, "w": 12, "x": 0, "y": 0},
"targets": [{"expr": "homelab_backup_audit_success", "format": "table", "instant": true, "refId": "A"}]
},
{
"type": "timeseries",
"title": "Backup Age (Hours)",
"gridPos": {"h": 10, "w": 12, "x": 12, "y": 0},
"targets": [{"expr": "homelab_backup_audit_snapshot_age_hours", "legendFormat": "{{profile}} {{vmid}}", "refId": "A"}]
},
{
"type": "timeseries",
"title": "Audit Levels",
"gridPos": {"h": 10, "w": 24, "x": 0, "y": 10},
"targets": [{"expr": "homelab_backup_audit_level_success", "legendFormat": "{{profile}} {{level}}", "refId": "A"}]
}
]
}
@@ -0,0 +1,34 @@
{
"title": "HomeLab Overview",
"uid": "homelab-overview",
"schemaVersion": 39,
"version": 1,
"panels": [
{
"type": "stat",
"title": "Active Alerts",
"gridPos": {"h": 8, "w": 6, "x": 0, "y": 0},
"targets": [{"expr": "count(ALERTS{alertstate=\"firing\"})", "refId": "A"}],
"options": {"reduceOptions": {"calcs": ["lastNotNull"]}}
},
{
"type": "stat",
"title": "Successful Probes",
"gridPos": {"h": 8, "w": 6, "x": 6, "y": 0},
"targets": [{"expr": "sum(probe_success)", "refId": "A"}],
"options": {"reduceOptions": {"calcs": ["lastNotNull"]}}
},
{
"type": "timeseries",
"title": "Filesystem Free Space",
"gridPos": {"h": 10, "w": 12, "x": 0, "y": 8},
"targets": [{"expr": "node_filesystem_avail_bytes{fstype!~\"tmpfs|overlay\"}", "legendFormat": "{{instance}} {{mountpoint}}", "refId": "A"}]
},
{
"type": "timeseries",
"title": "Backup Audit Success",
"gridPos": {"h": 10, "w": 12, "x": 12, "y": 8},
"targets": [{"expr": "homelab_backup_audit_success", "legendFormat": "{{profile}} {{instance}}", "refId": "A"}]
}
]
}
@@ -0,0 +1,26 @@
{
"title": "Proxmox and Storage",
"uid": "proxmox-storage",
"schemaVersion": 39,
"version": 1,
"panels": [
{
"type": "timeseries",
"title": "Node CPU Usage",
"gridPos": {"h": 9, "w": 12, "x": 0, "y": 0},
"targets": [{"expr": "1 - avg by(instance) (rate(node_cpu_seconds_total{mode=\"idle\"}[5m]))", "legendFormat": "{{instance}}", "refId": "A"}]
},
{
"type": "timeseries",
"title": "Node Memory Available",
"gridPos": {"h": 9, "w": 12, "x": 12, "y": 0},
"targets": [{"expr": "node_memory_MemAvailable_bytes", "legendFormat": "{{instance}}", "refId": "A"}]
},
{
"type": "timeseries",
"title": "Disk Read and Write",
"gridPos": {"h": 9, "w": 24, "x": 0, "y": 9},
"targets": [{"expr": "rate(node_disk_read_bytes_total[5m])", "legendFormat": "read {{instance}} {{device}}", "refId": "A"}, {"expr": "rate(node_disk_written_bytes_total[5m])", "legendFormat": "write {{instance}} {{device}}", "refId": "B"}]
}
]
}
@@ -0,0 +1,26 @@
{
"title": "Services and Network",
"uid": "services-network",
"schemaVersion": 39,
"version": 1,
"panels": [
{
"type": "table",
"title": "Probe State",
"gridPos": {"h": 10, "w": 12, "x": 0, "y": 0},
"targets": [{"expr": "probe_success", "format": "table", "instant": true, "refId": "A"}]
},
{
"type": "timeseries",
"title": "Probe Duration",
"gridPos": {"h": 10, "w": 12, "x": 12, "y": 0},
"targets": [{"expr": "probe_duration_seconds", "legendFormat": "{{job}} {{instance}}", "refId": "A"}]
},
{
"type": "timeseries",
"title": "TLS Certificate Remaining",
"gridPos": {"h": 10, "w": 24, "x": 0, "y": 10},
"targets": [{"expr": "(probe_ssl_earliest_cert_expiry - time()) / 86400", "legendFormat": "{{instance}}", "refId": "A"}]
}
]
}