diff options
| author | Paul Buetow <paul@buetow.org> | 2026-01-08 20:05:17 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-01-08 20:05:17 +0200 |
| commit | 60df98567daf2e9b0840435b6eac47e9123460cb (patch) | |
| tree | b7e2a019715a15b24de6ab2cc5c32ac52dbb481f | |
| parent | 17d44050c472c6441d1d3d79177e22a414b85c3a (diff) | |
Add Grafana dashboard for ArgoCD applications monitoring
Created comprehensive Grafana dashboard showing:
- Total applications count
- Healthy vs unhealthy applications
- Out-of-sync status
- Detailed table with all applications and their status
- Health status timeline graph
- Sync operations rate
- Active ArgoCD-related alerts
Dashboard will auto-load in Grafana via ConfigMap with label grafana_dashboard='1'
Access at: https://grafana.f3s.buetow.org → Dashboards → ArgoCD Applications
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
| -rw-r--r-- | f3s/prometheus/manifests/argocd-applications-dashboard.yaml | 505 |
1 files changed, 505 insertions, 0 deletions
diff --git a/f3s/prometheus/manifests/argocd-applications-dashboard.yaml b/f3s/prometheus/manifests/argocd-applications-dashboard.yaml new file mode 100644 index 0000000..32da16e --- /dev/null +++ b/f3s/prometheus/manifests/argocd-applications-dashboard.yaml @@ -0,0 +1,505 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: argocd-applications-dashboard + namespace: monitoring + labels: + grafana_dashboard: '1' + app.kubernetes.io/instance: prometheus + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: kube-prometheus-stack + release: prometheus +data: + argocd-applications.json: |- + { + "id": null, + "uid": "argocd-apps-overview", + "title": "ArgoCD Applications - Health & Sync Status", + "tags": [ + "argocd", + "applications", + "monitoring", + "gitops" + ], + "timezone": "browser", + "schemaVersion": 38, + "version": 1, + "refresh": "30s", + "time": { + "from": "now-6h", + "to": "now" + }, + "panels": [ + { + "id": 1, + "gridPos": { + "h": 4, + "w": 6, + "x": 0, + "y": 0 + }, + "type": "stat", + "title": "Total Applications", + "targets": [ + { + "expr": "count(argocd_app_info)", + "refId": "A" + } + ], + "options": { + "graphMode": "none", + "colorMode": "value", + "textMode": "value_and_name" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "blue" + } + ] + } + } + } + }, + { + "id": 2, + "gridPos": { + "h": 4, + "w": 6, + "x": 6, + "y": 0 + }, + "type": "stat", + "title": "Healthy Applications", + "targets": [ + { + "expr": "count(argocd_app_info{health_status=\"Healthy\"})", + "refId": "A" + } + ], + "options": { + "graphMode": "area", + "colorMode": "value", + "textMode": "value_and_name" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "green" + } + ] + } + } + } + }, + { + "id": 3, + "gridPos": { + "h": 4, + "w": 6, + "x": 12, + "y": 0 + }, + "type": "stat", + "title": "Unhealthy Applications", + "targets": [ + { + "expr": "count(argocd_app_info{health_status!=\"Healthy\"})", + "refId": "A" + } + ], + "options": { + "graphMode": "area", + "colorMode": "value", + "textMode": "value_and_name" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "green" + }, + { + "value": 1, + "color": "red" + } + ] + }, + "noValue": "0" + } + } + }, + { + "id": 4, + "gridPos": { + "h": 4, + "w": 6, + "x": 18, + "y": 0 + }, + "type": "stat", + "title": "Out of Sync", + "targets": [ + { + "expr": "count(argocd_app_info{sync_status!=\"Synced\"})", + "refId": "A" + } + ], + "options": { + "graphMode": "area", + "colorMode": "value", + "textMode": "value_and_name" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "value": null, + "color": "green" + }, + { + "value": 1, + "color": "yellow" + } + ] + }, + "noValue": "0" + } + } + }, + { + "id": 5, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 4 + }, + "type": "table", + "title": "Application Status Overview", + "targets": [ + { + "expr": "argocd_app_info", + "refId": "A", + "format": "table", + "instant": true + } + ], + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "Value": true, + "instance": true, + "job": true, + "namespace": true, + "pod": true, + "repo": true, + "dest_server": true + }, + "renameByName": { + "name": "Application", + "health_status": "Health", + "sync_status": "Sync Status", + "dest_namespace": "Namespace", + "project": "Project" + } + } + } + ], + "options": { + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "Application" + } + ] + }, + "fieldConfig": { + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Health" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "type": "color-background" + } + }, + { + "id": "mappings", + "value": [ + { + "type": "value", + "options": { + "Healthy": { + "color": "green", + "text": "✓ Healthy" + }, + "Progressing": { + "color": "yellow", + "text": "⟳ Progressing" + }, + "Degraded": { + "color": "red", + "text": "✗ Degraded" + }, + "Suspended": { + "color": "orange", + "text": "⏸ Suspended" + }, + "Missing": { + "color": "red", + "text": "? Missing" + }, + "Unknown": { + "color": "gray", + "text": "? Unknown" + } + } + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Sync Status" + }, + "properties": [ + { + "id": "custom.cellOptions", + "value": { + "type": "color-background" + } + }, + { + "id": "mappings", + "value": [ + { + "type": "value", + "options": { + "Synced": { + "color": "green", + "text": "✓ Synced" + }, + "OutOfSync": { + "color": "yellow", + "text": "⚠ Out of Sync" + }, + "Unknown": { + "color": "gray", + "text": "? Unknown" + } + } + } + ] + } + ] + } + ] + } + }, + { + "id": 6, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 12 + }, + "type": "timeseries", + "title": "Application Health Status Over Time", + "targets": [ + { + "expr": "count(argocd_app_info{health_status=\"Healthy\"})", + "legendFormat": "Healthy", + "refId": "A" + }, + { + "expr": "count(argocd_app_info{health_status=\"Progressing\"})", + "legendFormat": "Progressing", + "refId": "B" + }, + { + "expr": "count(argocd_app_info{health_status=\"Degraded\"})", + "legendFormat": "Degraded", + "refId": "C" + }, + { + "expr": "count(argocd_app_info{health_status=~\"Suspended|Missing|Unknown\"})", + "legendFormat": "Other (Suspended/Missing/Unknown)", + "refId": "D" + } + ], + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never", + "spanNulls": true + }, + "color": { + "mode": "palette-classic" + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Healthy" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Degraded" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Progressing" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "yellow", + "mode": "fixed" + } + } + ] + } + ] + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "multi" + } + } + }, + { + "id": 7, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 12 + }, + "type": "timeseries", + "title": "Sync Operations", + "targets": [ + { + "expr": "rate(argocd_app_sync_total{phase=\"Succeeded\"}[5m])", + "legendFormat": "{{name}} - Succeeded", + "refId": "A" + }, + { + "expr": "rate(argocd_app_sync_total{phase=\"Error\"}[5m])", + "legendFormat": "{{name}} - Failed", + "refId": "B" + } + ], + "fieldConfig": { + "defaults": { + "custom": { + "fillOpacity": 10, + "showPoints": "never" + }, + "unit": "ops" + } + }, + "options": { + "legend": { + "displayMode": "list", + "placement": "bottom" + } + } + }, + { + "id": 8, + "gridPos": { + "h": 6, + "w": 24, + "x": 0, + "y": 20 + }, + "type": "alertlist", + "title": "Active Alerts", + "options": { + "showOptions": "current", + "maxItems": 20, + "sortOrder": 1, + "dashboardAlerts": false, + "alertName": "", + "dashboardTitle": "", + "tags": [], + "stateFilter": { + "firing": true, + "pending": true, + "noData": false, + "normal": false, + "error": true + }, + "folder": "", + "alertInstanceLabelFilter": "{component=\"argocd\"}" + } + } + ] + } |
