{
  "title": "Feedser CVE & KEV Observability",
  "uid": "feedser-cve-kev",
  "schemaVersion": 38,
  "version": 1,
  "editable": true,
  "timezone": "",
  "time": {
    "from": "now-24h",
    "to": "now"
  },
  "refresh": "5m",
  "templating": {
    "list": [
      {
        "name": "datasource",
        "type": "datasource",
        "query": "prometheus",
        "refresh": 1,
        "hide": 0
      }
    ]
  },
  "panels": [
    {
      "type": "timeseries",
      "title": "CVE fetch success vs failure",
      "gridPos": { "h": 9, "w": 12, "x": 0, "y": 0 },
      "fieldConfig": {
        "defaults": {
          "unit": "ops",
          "custom": {
            "drawStyle": "line",
            "lineWidth": 2,
            "fillOpacity": 10
          }
        },
        "overrides": []
      },
      "targets": [
        {
          "refId": "A",
          "expr": "rate(cve_fetch_success_total[5m])",
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "legendFormat": "success"
        },
        {
          "refId": "B",
          "expr": "rate(cve_fetch_failures_total[5m])",
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "legendFormat": "failure"
        }
      ]
    },
    {
      "type": "timeseries",
      "title": "KEV fetch cadence",
      "gridPos": { "h": 9, "w": 12, "x": 12, "y": 0 },
      "fieldConfig": {
        "defaults": {
          "unit": "ops",
          "custom": {
            "drawStyle": "line",
            "lineWidth": 2,
            "fillOpacity": 10
          }
        },
        "overrides": []
      },
      "targets": [
        {
          "refId": "A",
          "expr": "rate(kev_fetch_success_total[30m])",
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "legendFormat": "success"
        },
        {
          "refId": "B",
          "expr": "rate(kev_fetch_failures_total[30m])",
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "legendFormat": "failure"
        },
        {
          "refId": "C",
          "expr": "rate(kev_fetch_unchanged_total[30m])",
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "legendFormat": "unchanged"
        }
      ]
    },
    {
      "type": "table",
      "title": "KEV parse anomalies (24h)",
      "gridPos": { "h": 8, "w": 12, "x": 0, "y": 9 },
      "fieldConfig": {
        "defaults": {
          "unit": "short"
        },
        "overrides": []
      },
      "targets": [
        {
          "refId": "A",
          "expr": "sum by (reason) (increase(kev_parse_anomalies_total[24h]))",
          "format": "table",
          "datasource": { "type": "prometheus", "uid": "${datasource}" }
        }
      ],
      "transformations": [
        {
          "id": "organize",
          "options": {
            "renameByName": {
              "Value": "count"
            }
          }
        }
      ]
    },
    {
      "type": "timeseries",
      "title": "Advisories emitted",
      "gridPos": { "h": 8, "w": 12, "x": 12, "y": 9 },
      "fieldConfig": {
        "defaults": {
          "unit": "ops",
          "custom": {
            "drawStyle": "line",
            "lineWidth": 2,
            "fillOpacity": 10
          }
        },
        "overrides": []
      },
      "targets": [
        {
          "refId": "A",
          "expr": "rate(cve_map_success_total[15m])",
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "legendFormat": "CVE"
        },
        {
          "refId": "B",
          "expr": "rate(kev_map_advisories_total[24h])",
          "datasource": { "type": "prometheus", "uid": "${datasource}" },
          "legendFormat": "KEV"
        }
      ]
    }
  ]
}
