{
  "title": "BRouter (dedicated host)",
  "uid": "trails-brouter",
  "annotations": {
    "list": [
      {
        "name": "Deploys",
        "enable": true,
        "datasource": { "type": "grafana", "uid": "-- Grafana --" },
        "iconColor": "rgba(0, 211, 255, 1)",
        "target": { "limit": 100, "matchAny": false, "tags": ["deploy", "brouter"], "type": "tags" }
      }
    ]
  },
  "timezone": "browser",
  "refresh": "30s",
  "panels": [
    {
      "title": "Scrape up/down",
      "type": "stat",
      "gridPos": { "h": 4, "w": 6, "x": 0, "y": 0 },
      "datasource": { "type": "prometheus", "uid": "prometheus" },
      "targets": [{ "expr": "up{job=\"brouter-cadvisor\"}", "legendFormat": "{{instance}}" }],
      "options": {
        "reduceOptions": { "values": false, "calcs": ["lastNotNull"] },
        "colorMode": "background"
      },
      "fieldConfig": {
        "defaults": {
          "mappings": [
            { "type": "value", "options": { "0": { "text": "DOWN", "color": "red" } } },
            { "type": "value", "options": { "1": { "text": "UP", "color": "green" } } }
          ],
          "thresholds": { "mode": "absolute", "steps": [{ "color": "red", "value": null }, { "color": "green", "value": 1 }] }
        }
      }
    },
    {
      "title": "BRouter request rate (from Planner)",
      "type": "timeseries",
      "gridPos": { "h": 8, "w": 12, "x": 6, "y": 0 },
      "datasource": { "type": "prometheus", "uid": "prometheus" },
      "targets": [{ "expr": "sum(rate(brouter_request_duration_seconds_count[5m])) by (status)", "legendFormat": "{{status}}" }]
    },
    {
      "title": "BRouter latency (p50/p95/p99, from Planner)",
      "type": "timeseries",
      "gridPos": { "h": 8, "w": 18, "x": 0, "y": 8 },
      "datasource": { "type": "prometheus", "uid": "prometheus" },
      "targets": [
        { "expr": "histogram_quantile(0.50, sum(rate(brouter_request_duration_seconds_bucket[5m])) by (le))", "legendFormat": "p50" },
        { "expr": "histogram_quantile(0.95, sum(rate(brouter_request_duration_seconds_bucket[5m])) by (le))", "legendFormat": "p95" },
        { "expr": "histogram_quantile(0.99, sum(rate(brouter_request_duration_seconds_bucket[5m])) by (le))", "legendFormat": "p99" }
      ],
      "fieldConfig": { "defaults": { "unit": "s" } }
    },
    {
      "title": "Container memory (BRouter + Caddy sidecar)",
      "type": "timeseries",
      "gridPos": { "h": 8, "w": 12, "x": 0, "y": 16 },
      "datasource": { "type": "prometheus", "uid": "prometheus" },
      "targets": [
        {
          "expr": "container_memory_usage_bytes{job=\"brouter-cadvisor\",name=~\"trails-brouter.*\"}",
          "legendFormat": "{{name}}"
        }
      ],
      "fieldConfig": { "defaults": { "unit": "bytes" } }
    },
    {
      "title": "Container CPU (BRouter + Caddy sidecar)",
      "type": "timeseries",
      "gridPos": { "h": 8, "w": 12, "x": 12, "y": 16 },
      "datasource": { "type": "prometheus", "uid": "prometheus" },
      "targets": [
        {
          "expr": "sum by (name) (rate(container_cpu_usage_seconds_total{job=\"brouter-cadvisor\",name=~\"trails-brouter.*\"}[5m]))",
          "legendFormat": "{{name}}"
        }
      ],
      "fieldConfig": { "defaults": { "unit": "percentunit" } }
    },
    {
      "title": "Recent BRouter logs",
      "type": "logs",
      "gridPos": { "h": 10, "w": 24, "x": 0, "y": 24 },
      "datasource": { "type": "loki", "uid": "loki" },
      "targets": [{ "expr": "{host=\"brouter\", service=\"brouter\"}" }],
      "options": { "showTime": true, "wrapLogMessage": false }
    }
  ],
  "schemaVersion": 39,
  "version": 1,
  "time": { "from": "now-1h", "to": "now" }
}
