apiVersion: v1 kind: ConfigMap metadata: name: traefik-dashboard namespace: observability labels: grafana_dashboard: "1" data: traefik.json: | { "annotations": { "list": [] }, "editable": true, "graphTooltip": 1, "id": null, "links": [], "panels": [ { "title": "Request Rate", "type": "timeseries", "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, "targets": [ { "expr": "sum(rate(traefik_entrypoint_requests_total[5m])) by (entrypoint)", "legendFormat": "{{ entrypoint }}" } ], "fieldConfig": { "defaults": { "unit": "reqps" } } }, { "title": "Error Rate (4xx/5xx)", "type": "timeseries", "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, "targets": [ { "expr": "sum(rate(traefik_entrypoint_requests_total{code=~\"4..\"}[5m]))", "legendFormat": "4xx" }, { "expr": "sum(rate(traefik_entrypoint_requests_total{code=~\"5..\"}[5m]))", "legendFormat": "5xx" } ], "fieldConfig": { "defaults": { "unit": "reqps" } } }, { "title": "Request Duration (p50 / p95 / p99)", "type": "timeseries", "gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 }, "targets": [ { "expr": "histogram_quantile(0.50, sum(rate(traefik_entrypoint_request_duration_seconds_bucket[5m])) by (le))", "legendFormat": "p50" }, { "expr": "histogram_quantile(0.95, sum(rate(traefik_entrypoint_request_duration_seconds_bucket[5m])) by (le))", "legendFormat": "p95" }, { "expr": "histogram_quantile(0.99, sum(rate(traefik_entrypoint_request_duration_seconds_bucket[5m])) by (le))", "legendFormat": "p99" } ], "fieldConfig": { "defaults": { "unit": "s" } } }, { "title": "Open Connections", "type": "timeseries", "gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 }, "targets": [ { "expr": "sum(traefik_entrypoint_open_connections) by (entrypoint)", "legendFormat": "{{ entrypoint }}" } ] } ], "schemaVersion": 39, "tags": ["homelab", "traefik", "ingress"], "templating": { "list": [] }, "time": { "from": "now-6h", "to": "now" }, "title": "Traefik", "uid": "traefik" }