{
  "__inputs": [
    {
      "name": "DS_PROMETHEUS",
      "label": "Prometheus",
      "description": "",
      "type": "datasource",
      "pluginId": "prometheus",
      "pluginName": "Prometheus"
    }
  ],
  "__requires": [
    {
      "type": "grafana",
      "id": "grafana",
      "name": "Grafana",
      "version": "10.0.0"
    },
    {
      "type": "datasource",
      "id": "prometheus",
      "name": "Prometheus",
      "version": "1.0.0"
    },
    {
      "type": "panel",
      "id": "timeseries",
      "name": "Time series",
      "version": ""
    },
    {
      "type": "panel",
      "id": "stat",
      "name": "Stat",
      "version": ""
    },
    {
      "type": "panel",
      "id": "gauge",
      "name": "Gauge",
      "version": ""
    }
  ],
  "id": null,
  "uid": "qpc-overview",
  "title": "quicprochat Server Overview",
  "description": "Operational dashboard for quicprochat server instances",
  "tags": ["quicprochat", "qpc"],
  "timezone": "browser",
  "editable": true,
  "graphTooltip": 1,
  "refresh": "10s",
  "time": {
    "from": "now-1h",
    "to": "now"
  },
  "panels": [
    {
      "title": "Server Status",
      "type": "stat",
      "gridPos": { "h": 4, "w": 4, "x": 0, "y": 0 },
      "targets": [
        {
          "expr": "up{job=\"qpc-server\"}",
          "legendFormat": "{{instance}}"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "mappings": [
            { "type": "value", "options": { "0": { "text": "DOWN", "color": "red" }, "1": { "text": "UP", "color": "green" } } }
          ],
          "thresholds": {
            "steps": [
              { "value": null, "color": "red" },
              { "value": 1, "color": "green" }
            ]
          }
        }
      }
    },
    {
      "title": "Enqueue Rate",
      "type": "stat",
      "gridPos": { "h": 4, "w": 4, "x": 4, "y": 0 },
      "targets": [
        {
          "expr": "rate(enqueue_total[5m])",
          "legendFormat": "msgs/sec"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "ops",
          "thresholds": {
            "steps": [
              { "value": null, "color": "green" },
              { "value": 100, "color": "yellow" },
              { "value": 500, "color": "red" }
            ]
          }
        }
      }
    },
    {
      "title": "Fetch Rate",
      "type": "stat",
      "gridPos": { "h": 4, "w": 4, "x": 8, "y": 0 },
      "targets": [
        {
          "expr": "rate(fetch_total[5m])",
          "legendFormat": "fetches/sec"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "ops",
          "thresholds": {
            "steps": [
              { "value": null, "color": "green" }
            ]
          }
        }
      }
    },
    {
      "title": "Auth Success Rate",
      "type": "gauge",
      "gridPos": { "h": 4, "w": 4, "x": 12, "y": 0 },
      "targets": [
        {
          "expr": "rate(auth_login_success_total[5m]) / (rate(auth_login_success_total[5m]) + rate(auth_login_failure_total[5m]))",
          "legendFormat": "success ratio"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "percentunit",
          "min": 0,
          "max": 1,
          "thresholds": {
            "steps": [
              { "value": null, "color": "red" },
              { "value": 0.5, "color": "yellow" },
              { "value": 0.9, "color": "green" }
            ]
          }
        }
      }
    },
    {
      "title": "Delivery Queue Depth",
      "type": "stat",
      "gridPos": { "h": 4, "w": 4, "x": 16, "y": 0 },
      "targets": [
        {
          "expr": "delivery_queue_depth",
          "legendFormat": "depth"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "thresholds": {
            "steps": [
              { "value": null, "color": "green" },
              { "value": 10000, "color": "yellow" },
              { "value": 100000, "color": "red" }
            ]
          }
        }
      }
    },
    {
      "title": "Rate Limit Hits",
      "type": "stat",
      "gridPos": { "h": 4, "w": 4, "x": 20, "y": 0 },
      "targets": [
        {
          "expr": "rate(rate_limit_hit_total[5m])",
          "legendFormat": "hits/sec"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "ops",
          "thresholds": {
            "steps": [
              { "value": null, "color": "green" },
              { "value": 1, "color": "yellow" },
              { "value": 10, "color": "red" }
            ]
          }
        }
      }
    },
    {
      "title": "Message Throughput",
      "type": "timeseries",
      "gridPos": { "h": 8, "w": 12, "x": 0, "y": 4 },
      "targets": [
        {
          "expr": "rate(enqueue_total[5m])",
          "legendFormat": "enqueue rate"
        },
        {
          "expr": "rate(fetch_total[5m])",
          "legendFormat": "fetch rate"
        },
        {
          "expr": "rate(fetch_wait_total[5m])",
          "legendFormat": "fetch_wait rate"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "ops",
          "custom": {
            "drawStyle": "line",
            "lineInterpolation": "smooth",
            "fillOpacity": 10
          }
        }
      }
    },
    {
      "title": "Enqueue Bandwidth",
      "type": "timeseries",
      "gridPos": { "h": 8, "w": 12, "x": 12, "y": 4 },
      "targets": [
        {
          "expr": "rate(enqueue_bytes_total[5m])",
          "legendFormat": "bytes/sec"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "Bps",
          "custom": {
            "drawStyle": "line",
            "lineInterpolation": "smooth",
            "fillOpacity": 10,
            "gradientMode": "scheme"
          }
        }
      }
    },
    {
      "title": "Authentication",
      "type": "timeseries",
      "gridPos": { "h": 8, "w": 12, "x": 0, "y": 12 },
      "targets": [
        {
          "expr": "rate(auth_login_success_total[5m])",
          "legendFormat": "success/sec"
        },
        {
          "expr": "rate(auth_login_failure_total[5m])",
          "legendFormat": "failure/sec"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "ops",
          "custom": {
            "drawStyle": "line",
            "lineInterpolation": "smooth",
            "fillOpacity": 10
          }
        },
        "overrides": [
          {
            "matcher": { "id": "byName", "options": "failure/sec" },
            "properties": [
              { "id": "color", "value": { "fixedColor": "red", "mode": "fixed" } }
            ]
          }
        ]
      }
    },
    {
      "title": "Delivery Queue Depth Over Time",
      "type": "timeseries",
      "gridPos": { "h": 8, "w": 12, "x": 12, "y": 12 },
      "targets": [
        {
          "expr": "delivery_queue_depth",
          "legendFormat": "queue depth"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "custom": {
            "drawStyle": "line",
            "lineInterpolation": "smooth",
            "fillOpacity": 20,
            "gradientMode": "scheme",
            "thresholdsStyle": { "mode": "area" }
          },
          "thresholds": {
            "steps": [
              { "value": null, "color": "green" },
              { "value": 10000, "color": "yellow" },
              { "value": 100000, "color": "red" }
            ]
          }
        }
      }
    },
    {
      "title": "Rate Limiting & Key Packages",
      "type": "timeseries",
      "gridPos": { "h": 8, "w": 12, "x": 0, "y": 20 },
      "targets": [
        {
          "expr": "rate(rate_limit_hit_total[5m])",
          "legendFormat": "rate limit hits/sec"
        },
        {
          "expr": "rate(key_package_upload_total[5m])",
          "legendFormat": "key package uploads/sec"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "ops",
          "custom": {
            "drawStyle": "line",
            "lineInterpolation": "smooth",
            "fillOpacity": 10
          }
        },
        "overrides": [
          {
            "matcher": { "id": "byName", "options": "rate limit hits/sec" },
            "properties": [
              { "id": "color", "value": { "fixedColor": "orange", "mode": "fixed" } }
            ]
          }
        ]
      }
    },
    {
      "title": "Cumulative Totals",
      "type": "timeseries",
      "gridPos": { "h": 8, "w": 12, "x": 12, "y": 20 },
      "targets": [
        {
          "expr": "enqueue_total",
          "legendFormat": "total enqueued"
        },
        {
          "expr": "fetch_total",
          "legendFormat": "total fetched"
        },
        {
          "expr": "auth_login_success_total",
          "legendFormat": "total logins"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "custom": {
            "drawStyle": "line",
            "lineInterpolation": "smooth",
            "fillOpacity": 5
          }
        }
      }
    }
  ],
  "templating": {
    "list": [
      {
        "name": "datasource",
        "type": "datasource",
        "query": "prometheus",
        "current": {},
        "hide": 0
      }
    ]
  },
  "annotations": {
    "list": [
      {
        "name": "Deploys",
        "datasource": "-- Grafana --",
        "enable": true,
        "iconColor": "blue",
        "tags": ["deploy"]
      }
    ]
  },
  "schemaVersion": 38,
  "version": 1
}
