{
  "annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": {"type": "grafana", "uid": "-- Grafana --"},
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "type": "dashboard"
      }
    ]
  },
  "editable": true,
  "graphTooltip": 0,
  "schemaVersion": 39,
  "style": "dark",
  "tags": ["freeradius", "radius"],
  "title": "FreeRADIUS",
  "uid": "freeradius-operator",
  "version": 1,
  "templating": {
    "list": [
      {
        "name": "datasource",
        "label": "Data source",
        "type": "datasource",
        "query": "prometheus",
        "refresh": 1,
        "current": {},
        "hide": 0
      },
      {
        "name": "cluster",
        "label": "Cluster",
        "type": "query",
        "datasource": {"type": "prometheus", "uid": "${datasource}"},
        "query": "label_values(freeradius_up, cluster)",
        "refresh": 2,
        "includeAll": true,
        "multi": true,
        "current": {"selected": true, "text": "All", "value": "$__all"}
      }
    ]
  },
  "time": {"from": "now-1h", "to": "now"},
  "panels": [
    {
      "id": 1,
      "title": "Cluster Up",
      "type": "stat",
      "gridPos": {"h": 4, "w": 6, "x": 0, "y": 0},
      "datasource": {"type": "prometheus", "uid": "${datasource}"},
      "targets": [
        {"expr": "min(freeradius_up{cluster=~\"$cluster\"})", "refId": "A"}
      ],
      "fieldConfig": {
        "defaults": {
          "mappings": [
            {"type": "value", "options": {"0": {"text": "DOWN", "color": "red"}, "1": {"text": "UP", "color": "green"}}}
          ],
          "thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]}
        }
      }
    },
    {
      "id": 2,
      "title": "Access-Request rate",
      "type": "timeseries",
      "gridPos": {"h": 8, "w": 12, "x": 6, "y": 0},
      "datasource": {"type": "prometheus", "uid": "${datasource}"},
      "targets": [
        {"expr": "sum by (cluster) (rate(freeradius_access_requests_total{cluster=~\"$cluster\"}[1m]))", "legendFormat": "{{cluster}}", "refId": "A"}
      ],
      "fieldConfig": {"defaults": {"unit": "reqps"}}
    },
    {
      "id": 3,
      "title": "Auth outcomes",
      "type": "timeseries",
      "gridPos": {"h": 8, "w": 12, "x": 0, "y": 8},
      "datasource": {"type": "prometheus", "uid": "${datasource}"},
      "targets": [
        {"expr": "sum by (cluster) (rate(freeradius_access_accepts_total{cluster=~\"$cluster\"}[1m]))", "legendFormat": "accept {{cluster}}", "refId": "A"},
        {"expr": "sum by (cluster) (rate(freeradius_access_rejects_total{cluster=~\"$cluster\"}[1m]))", "legendFormat": "reject {{cluster}}", "refId": "B"},
        {"expr": "sum by (cluster) (rate(freeradius_access_challenges_total{cluster=~\"$cluster\"}[1m]))", "legendFormat": "challenge {{cluster}}", "refId": "C"}
      ],
      "fieldConfig": {"defaults": {"unit": "reqps", "custom": {"stacking": {"mode": "normal"}}}}
    },
    {
      "id": 4,
      "title": "Reject ratio",
      "type": "timeseries",
      "gridPos": {"h": 8, "w": 12, "x": 12, "y": 8},
      "datasource": {"type": "prometheus", "uid": "${datasource}"},
      "targets": [
        {"expr": "sum by (cluster) (rate(freeradius_access_rejects_total{cluster=~\"$cluster\"}[5m])) / clamp_min(sum by (cluster) (rate(freeradius_access_requests_total{cluster=~\"$cluster\"}[5m])), 1)", "legendFormat": "{{cluster}}", "refId": "A"}
      ],
      "fieldConfig": {"defaults": {"unit": "percentunit", "min": 0, "max": 1}}
    },
    {
      "id": 5,
      "title": "Queue depth",
      "type": "timeseries",
      "gridPos": {"h": 8, "w": 12, "x": 0, "y": 16},
      "datasource": {"type": "prometheus", "uid": "${datasource}"},
      "targets": [
        {"expr": "freeradius_queue_len_internal{cluster=~\"$cluster\"}", "legendFormat": "internal {{cluster}}", "refId": "A"},
        {"expr": "freeradius_queue_len_auth{cluster=~\"$cluster\"}", "legendFormat": "auth {{cluster}}", "refId": "B"},
        {"expr": "freeradius_queue_len_acct{cluster=~\"$cluster\"}", "legendFormat": "acct {{cluster}}", "refId": "C"},
        {"expr": "freeradius_queue_len_proxy{cluster=~\"$cluster\"}", "legendFormat": "proxy {{cluster}}", "refId": "D"}
      ]
    },
    {
      "id": 6,
      "title": "Scrape duration",
      "type": "timeseries",
      "gridPos": {"h": 8, "w": 12, "x": 12, "y": 16},
      "datasource": {"type": "prometheus", "uid": "${datasource}"},
      "targets": [
        {"expr": "freeradius_scrape_duration_seconds{cluster=~\"$cluster\"}", "legendFormat": "{{cluster}}", "refId": "A"}
      ],
      "fieldConfig": {"defaults": {"unit": "s"}}
    },
    {
      "id": 7,
      "title": "Auth errors (rate)",
      "type": "timeseries",
      "gridPos": {"h": 8, "w": 24, "x": 0, "y": 24},
      "datasource": {"type": "prometheus", "uid": "${datasource}"},
      "targets": [
        {"expr": "sum by (cluster) (rate(freeradius_auth_malformed_requests_total{cluster=~\"$cluster\"}[5m]))", "legendFormat": "malformed {{cluster}}", "refId": "A"},
        {"expr": "sum by (cluster) (rate(freeradius_auth_invalid_requests_total{cluster=~\"$cluster\"}[5m]))", "legendFormat": "invalid {{cluster}}", "refId": "B"},
        {"expr": "sum by (cluster) (rate(freeradius_auth_dropped_requests_total{cluster=~\"$cluster\"}[5m]))", "legendFormat": "dropped {{cluster}}", "refId": "C"},
        {"expr": "sum by (cluster) (rate(freeradius_auth_duplicate_requests_total{cluster=~\"$cluster\"}[5m]))", "legendFormat": "duplicate {{cluster}}", "refId": "D"}
      ],
      "fieldConfig": {"defaults": {"unit": "reqps"}}
    }
  ]
}
