summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-01-08 20:05:17 +0200
committerPaul Buetow <paul@buetow.org>2026-01-08 20:05:17 +0200
commit60df98567daf2e9b0840435b6eac47e9123460cb (patch)
treeb7e2a019715a15b24de6ab2cc5c32ac52dbb481f
parent17d44050c472c6441d1d3d79177e22a414b85c3a (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.yaml505
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\"}"
+ }
+ }
+ ]
+ }