{
  "title": "Neutrx HTTP Client",
  "timezone": "browser",
  "schemaVersion": 39,
  "version": 1,
  "refresh": "30s",
  "tags": ["neutrx", "http", "nodejs"],
  "templating": {
    "list": []
  },
  "panels": [
    {
      "type": "stat",
      "title": "Request Rate",
      "gridPos": { "x": 0, "y": 0, "w": 6, "h": 4 },
      "targets": [
        {
          "expr": "sum(rate(neutrx_requests_total[5m]))",
          "legendFormat": "requests/sec"
        }
      ]
    },
    {
      "type": "stat",
      "title": "Error Rate",
      "gridPos": { "x": 6, "y": 0, "w": 6, "h": 4 },
      "targets": [
        {
          "expr": "sum(rate(neutrx_errors_total[5m]))",
          "legendFormat": "errors/sec"
        }
      ]
    },
    {
      "type": "stat",
      "title": "Cache Hit Rate",
      "gridPos": { "x": 12, "y": 0, "w": 6, "h": 4 },
      "targets": [
        {
          "expr": "sum(rate(neutrx_cache_hits_total[5m])) / clamp_min(sum(rate(neutrx_requests_total[5m])), 1)",
          "legendFormat": "hit ratio"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "percentunit"
        },
        "overrides": []
      }
    },
    {
      "type": "stat",
      "title": "Retries",
      "gridPos": { "x": 18, "y": 0, "w": 6, "h": 4 },
      "targets": [
        {
          "expr": "sum(rate(neutrx_retries_total[5m]))",
          "legendFormat": "retries/sec"
        }
      ]
    },
    {
      "type": "timeseries",
      "title": "Latency Quantiles",
      "gridPos": { "x": 0, "y": 4, "w": 12, "h": 8 },
      "targets": [
        {
          "expr": "neutrx_duration_ms{quantile=\"0.5\"}",
          "legendFormat": "p50"
        },
        {
          "expr": "neutrx_duration_ms{quantile=\"0.9\"}",
          "legendFormat": "p90"
        },
        {
          "expr": "neutrx_duration_ms{quantile=\"0.95\"}",
          "legendFormat": "p95"
        },
        {
          "expr": "neutrx_duration_ms{quantile=\"0.99\"}",
          "legendFormat": "p99"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "ms"
        },
        "overrides": []
      }
    },
    {
      "type": "timeseries",
      "title": "Status Codes",
      "gridPos": { "x": 12, "y": 4, "w": 12, "h": 8 },
      "targets": [
        {
          "expr": "sum by (status) (neutrx_status_total)",
          "legendFormat": "{{status}}"
        }
      ]
    },
    {
      "type": "timeseries",
      "title": "Error Codes",
      "gridPos": { "x": 0, "y": 12, "w": 12, "h": 8 },
      "targets": [
        {
          "expr": "sum by (code) (neutrx_errors_by_code_total)",
          "legendFormat": "{{code}}"
        }
      ]
    },
    {
      "type": "timeseries",
      "title": "Active Requests",
      "gridPos": { "x": 12, "y": 12, "w": 12, "h": 8 },
      "targets": [
        {
          "expr": "neutrx_active_requests",
          "legendFormat": "active"
        }
      ]
    }
  ]
}
