From d5ade5a5281a35fd73ea76fea43186aca4f283a0 Mon Sep 17 00:00:00 2001 From: Jess Lowe Date: Fri, 6 Nov 2026 02:38:58 +0000 Subject: [PATCH 1/2] migrate to grafana fork --- .../base/ksm/ksm_cluster_pod_monitoring.yaml | 3 +- .../configmaps/grafana_dashboards_prov.yaml | 3 +- .../configmaps/grafana_datasources.yaml | 8 - .../dashboards/data-quality-drift.json | 1058 ++++++++++------- .../dashboards/executive-overview.json | 759 ++++++++---- .../dashboards/pipeline-ingestion-ops.json | 1025 +++++++++------- .../monitoring/grafana_deployment.yaml | 48 +- tools/run_grafana_local.sh | 33 +- 8 files changed, 1773 insertions(+), 1164 deletions(-) diff --git a/deployment/clouddeploy/gke-workers/base/ksm/ksm_cluster_pod_monitoring.yaml b/deployment/clouddeploy/gke-workers/base/ksm/ksm_cluster_pod_monitoring.yaml index 63ec93161ab..a559e472b1b 100644 --- a/deployment/clouddeploy/gke-workers/base/ksm/ksm_cluster_pod_monitoring.yaml +++ b/deployment/clouddeploy/gke-workers/base/ksm/ksm_cluster_pod_monitoring.yaml @@ -1,7 +1,7 @@ apiVersion: monitoring.googleapis.com/v1 kind: ClusterPodMonitoring metadata: - name: kube-state-metrics + name: osv-kube-state-metrics labels: app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/part-of: google-cloud-managed-prometheus @@ -9,6 +9,7 @@ spec: selector: matchLabels: app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/version: 2.14.0 endpoints: - port: metrics # Customized from 30s to 5s. diff --git a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/configmaps/grafana_dashboards_prov.yaml b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/configmaps/grafana_dashboards_prov.yaml index d62e3307d67..90542db3b02 100644 --- a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/configmaps/grafana_dashboards_prov.yaml +++ b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/configmaps/grafana_dashboards_prov.yaml @@ -14,6 +14,7 @@ data: folder: '' type: file disableDeletion: false + updateIntervalSeconds: 10 editable: false options: - path: /etc/grafana/dashboards + path: /etc/plutono/dashboards diff --git a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/configmaps/grafana_datasources.yaml b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/configmaps/grafana_datasources.yaml index 6ac299aa5df..21921f021fd 100644 --- a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/configmaps/grafana_datasources.yaml +++ b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/configmaps/grafana_datasources.yaml @@ -27,11 +27,3 @@ data: jsonData: authenticationType: gce defaultProject: oss-vdb-test - - name: Cloud Logging - uid: cloud-logging - type: googlecloud-logging-datasource - access: proxy - editable: false - jsonData: - authenticationType: gce - defaultProject: oss-vdb-test diff --git a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/data-quality-drift.json b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/data-quality-drift.json index d1519a9f818..7280fc6dfb5 100644 --- a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/data-quality-drift.json +++ b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/data-quality-drift.json @@ -3,23 +3,20 @@ "list": [ { "builtIn": 1, - "datasource": { - "type": "grafana", - "uid": "-- Grafana --" - }, + "datasource": "-- Plutono --", "enable": true, "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "type": "dashboard" } ] }, "editable": false, - "fiscalYearStartMonth": 0, + "gnetId": null, "graphTooltip": 1, "id": null, "links": [], - "liveNow": false, "panels": [ { "collapsed": false, @@ -34,10 +31,7 @@ "type": "row" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, + "datasource": "GMP (Prometheus)", "fieldConfig": { "defaults": { "color": { @@ -53,7 +47,7 @@ } ] }, - "unit": "none" + "unit": "short" }, "overrides": [] }, @@ -78,29 +72,20 @@ }, "textMode": "auto" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(osv_dataset_total_vulnerabilities{ecosystem=\"all\"}) or sum(osv_dataset_total_vulnerabilities)", - "instant": true, + "refId": "A", "legendFormat": "Total Vulns", - "range": false, - "refId": "A" + "instant": true } ], "title": "Total Vulnerabilities", "type": "stat" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, + "datasource": "GMP (Prometheus)", "fieldConfig": { "defaults": { "color": { @@ -124,7 +109,7 @@ } ] }, - "unit": "none" + "unit": "short" }, "overrides": [] }, @@ -149,29 +134,20 @@ }, "textMode": "auto" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(osv_recordchecker_drift)", - "instant": true, + "refId": "A", "legendFormat": "Datastore vs GCS Drift", - "range": false, - "refId": "A" + "instant": true } ], "title": "Datastore vs GCS Drift", "type": "stat" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, + "datasource": "GMP (Prometheus)", "fieldConfig": { "defaults": { "color": { @@ -195,7 +171,7 @@ } ] }, - "unit": "none" + "unit": "short" }, "overrides": [] }, @@ -220,29 +196,20 @@ }, "textMode": "auto" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(osv_data_quality_findings)", - "instant": true, + "refId": "A", "legendFormat": "Active Linter Findings", - "range": false, - "refId": "A" + "instant": true } ], "title": "Active Linter Findings", "type": "stat" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, + "datasource": "GMP (Prometheus)", "fieldConfig": { "defaults": { "color": { @@ -283,19 +250,13 @@ }, "textMode": "auto" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(osv_export_zip_size_bytes{ecosystem=\"all\"}) or sum(osv_export_zip_size_bytes)", - "instant": true, + "refId": "A", "legendFormat": "all.zip Size", - "range": false, - "refId": "A" + "instant": true } ], "title": "Export all.zip Size", @@ -314,133 +275,189 @@ "type": "row" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "short" - }, - "overrides": [] - }, + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 6 }, + "hiddenSeries": false, "id": 5, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum by (type) (osv_recordchecker_drift)", - "legendFormat": "Drift Type: {{type}}", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "Drift Type: {{type}}" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum by (reason, status) (increase(osv_recoverer_processed_records_total[1h]))", - "legendFormat": "Recoverer (1h): {{reason}} ({{status}})", - "range": true, - "refId": "B" + "refId": "B", + "legendFormat": "Recoverer (1h): {{reason}} ({{status}})" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Datastore vs. GCS Drift Discrepancies & Recoverer Activity", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "gmp" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "short" - }, - "overrides": [] + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 6 }, + "hiddenSeries": false, "id": 6, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum by (source) (osv_recordchecker_invalid_records)", - "legendFormat": "{{source}}", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "{{source}}" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Invalid Records Detected by Record Checker", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { "collapsed": false, @@ -455,122 +472,184 @@ "type": "row" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "short" - }, - "overrides": [] - }, + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 15 }, + "hiddenSeries": false, "id": 7, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum by (rule_code, severity) (osv_data_quality_findings)", - "legendFormat": "[{{severity}}] {{rule_code}}", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "[{{severity}}] {{rule_code}}" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Linter Findings by Rule Code & Severity", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "gmp" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "short" - }, - "overrides": [] + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 15 }, + "hiddenSeries": false, "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "topk(10, sum by (source) (osv_data_quality_findings))", - "legendFormat": "{{source}}", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "{{source}}" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Top Upstream Sources by Linter Findings", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { "collapsed": false, @@ -585,138 +664,199 @@ "type": "row" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 10, - "lineWidth": 2 - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "orange", - "value": 24 - }, - { - "color": "red", - "value": 72 - } - ] - }, - "unit": "h" - }, - "overrides": [] - }, + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 24 }, + "hiddenSeries": false, "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "(time() - max by (source) (osv_importer_last_new_record_timestamp_seconds)) / 3600", - "legendFormat": "{{source}}", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "{{source}}" + } + ], + "thresholds": [ + { + "colorMode": "warning", + "fill": false, + "line": true, + "op": "gt", + "value": 24 + }, + { + "colorMode": "critical", + "fill": false, + "line": true, + "op": "gt", + "value": 72 } ], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Feed Ingestion Staleness (Hours Since Last New Record)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "gmp" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "bars", - "fillOpacity": 80, - "lineWidth": 1 - }, - "unit": "short" - }, - "overrides": [] + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, + "yaxes": [ + { + "format": "h", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 8, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 24 }, + "hiddenSeries": false, "id": 10, + "legend": { + "alignAsTable": true, + "avg": false, + "current": false, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": true, + "values": true + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "sum", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "topk(10, sum by (source) (increase(osv_importer_records_discovered_total[1d])))", - "legendFormat": "{{source}}", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "{{source}}" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Daily Discovered Records by Upstream Source", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { "collapsed": false, @@ -731,136 +871,194 @@ "type": "row" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "ops" - }, - "overrides": [] - }, + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 33 }, + "hiddenSeries": false, "id": 11, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(rate(osv_gitter_commits_scanned_total[5m]))", - "legendFormat": "Commits Scanned / s", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "Commits Scanned / s" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(rate(osv_gitter_data_errors_total[5m]))", - "legendFormat": "Gitter Data Errors / s", - "range": true, - "refId": "B" + "refId": "B", + "legendFormat": "Gitter Data Errors / s" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Gitter Commit Scanning Velocity & Data Errors", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "gmp" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "bytes" - }, - "overrides": [] + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, + "yaxes": [ + { + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 33 }, + "hiddenSeries": false, "id": 12, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "topk(10, osv_export_zip_size_bytes)", - "legendFormat": "{{ecosystem}} archive", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "{{ecosystem}} archive" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Export Archive Expansion (Top Ecosystems & all.zip)", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "bytes", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } } ], "refresh": "1m", - "schemaVersion": 39, + "schemaVersion": 27, + "style": "dark", "tags": [ "osv", "quality", @@ -892,4 +1090,4 @@ "title": "3. Vulnerability Data Quality & Ecosystem Health", "uid": "osv-data-quality-drift", "version": 1 -} \ No newline at end of file +} diff --git a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/executive-overview.json b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/executive-overview.json index d8d190d1e55..4405ce44ce4 100644 --- a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/executive-overview.json +++ b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/executive-overview.json @@ -3,48 +3,60 @@ "list": [ { "builtIn": 1, - "datasource": { - "type": "grafana", - "uid": "-- Grafana --" - }, + "datasource": "-- Plutono --", "enable": true, "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "type": "dashboard" } ] }, "editable": false, - "fiscalYearStartMonth": 0, + "gnetId": null, "graphTooltip": 1, "id": null, "links": [], - "liveNow": false, "panels": [ { "collapsed": false, - "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, "id": 100, "title": "Service Level Objectives (SLOs) & Key Performance Indicators", "type": "row" }, { - "datasource": { "type": "prometheus", "uid": "gmp" }, + "datasource": "GMP (Prometheus)", "fieldConfig": { "defaults": { - "color": { "mode": "thresholds" }, + "color": { + "mode": "thresholds" + }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ - { "color": "blue", "value": null } + { + "color": "blue", + "value": null + } ] }, - "unit": "none" + "unit": "short" }, "overrides": [] }, - "gridPos": { "h": 4, "w": 6, "x": 0, "y": 1 }, + "gridPos": { + "h": 4, + "w": 6, + "x": 0, + "y": 1 + }, "id": 1, "options": { "colorMode": "value", @@ -52,48 +64,63 @@ "justifyMode": "auto", "orientation": "auto", "reduceOptions": { - "calcs": ["lastNotNull"], + "calcs": [ + "lastNotNull" + ], "fields": "", "values": false }, "textMode": "auto" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "editorMode": "code", "expr": "sum(increase(osv_worker_tasks_processed_total[$__range]))", - "instant": true, + "refId": "A", "legendFormat": "Total Tasks", - "range": false, - "refId": "A" + "instant": true } ], "title": "Total Tasks Processed", "type": "stat" }, { - "datasource": { "type": "prometheus", "uid": "gmp" }, + "datasource": "GMP (Prometheus)", "fieldConfig": { "defaults": { - "color": { "mode": "thresholds" }, + "color": { + "mode": "thresholds" + }, "mappings": [], "max": 100, "min": 0, "thresholds": { "mode": "absolute", "steps": [ - { "color": "red", "value": null }, - { "color": "orange", "value": 95 }, - { "color": "green", "value": 99 } + { + "color": "red", + "value": null + }, + { + "color": "orange", + "value": 95 + }, + { + "color": "green", + "value": 99 + } ] }, "unit": "percent" }, "overrides": [] }, - "gridPos": { "h": 4, "w": 6, "x": 6, "y": 1 }, + "gridPos": { + "h": 4, + "w": 6, + "x": 6, + "y": 1 + }, "id": 2, "options": { "colorMode": "value", @@ -101,48 +128,63 @@ "justifyMode": "auto", "orientation": "auto", "reduceOptions": { - "calcs": ["lastNotNull"], + "calcs": [ + "lastNotNull" + ], "fields": "", "values": false }, "textMode": "auto" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "editorMode": "code", "expr": "(sum(increase(osv_worker_tasks_processed_total{status=\"success\"}[$__range])) / sum(increase(osv_worker_tasks_processed_total{status=~\"success|error\"}[$__range]))) * 100", - "instant": true, + "refId": "A", "legendFormat": "Success Rate", - "range": false, - "refId": "A" + "instant": true } ], "title": "Worker Success Rate (Target: > 99%)", "type": "stat" }, { - "datasource": { "type": "prometheus", "uid": "gmp" }, + "datasource": "GMP (Prometheus)", "fieldConfig": { "defaults": { - "color": { "mode": "thresholds" }, + "color": { + "mode": "thresholds" + }, "mappings": [], "max": 100, "min": 0, "thresholds": { "mode": "absolute", "steps": [ - { "color": "red", "value": null }, - { "color": "orange", "value": 99.0 }, - { "color": "green", "value": 99.95 } + { + "color": "red", + "value": null + }, + { + "color": "orange", + "value": 99.0 + }, + { + "color": "green", + "value": 99.95 + } ] }, "unit": "percent" }, "overrides": [] }, - "gridPos": { "h": 4, "w": 6, "x": 12, "y": 1 }, + "gridPos": { + "h": 4, + "w": 6, + "x": 12, + "y": 1 + }, "id": 3, "options": { "colorMode": "value", @@ -150,46 +192,61 @@ "justifyMode": "auto", "orientation": "auto", "reduceOptions": { - "calcs": ["lastNotNull"], + "calcs": [ + "lastNotNull" + ], "fields": "", "values": false }, "textMode": "auto" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "editorMode": "code", "expr": "(1 - (sum(rate(run_googleapis_com:request_count{service_name=\"osv-grpc-v1\",response_code_class=\"5xx\", monitored_resource=\"cloud_run_revision\"}[$__range])) / sum(rate(run_googleapis_com:request_count{service_name=\"osv-grpc-v1\", monitored_resource=\"cloud_run_revision\"}[$__range])))) * 100", - "instant": true, + "refId": "A", "legendFormat": "Availability", - "range": false, - "refId": "A" + "instant": true } ], "title": "API Availability SLO (Target: 99.95%)", "type": "stat" }, { - "datasource": { "type": "prometheus", "uid": "gmp" }, + "datasource": "GMP (Prometheus)", "fieldConfig": { "defaults": { - "color": { "mode": "thresholds" }, + "color": { + "mode": "thresholds" + }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ - { "color": "green", "value": null }, - { "color": "orange", "value": 0.100 }, - { "color": "red", "value": 0.150 } + { + "color": "green", + "value": null + }, + { + "color": "orange", + "value": 0.1 + }, + { + "color": "red", + "value": 0.15 + } ] }, "unit": "s" }, "overrides": [] }, - "gridPos": { "h": 4, "w": 6, "x": 18, "y": 1 }, + "gridPos": { + "h": 4, + "w": 6, + "x": 18, + "y": 1 + }, "id": 4, "options": { "colorMode": "value", @@ -197,22 +254,21 @@ "justifyMode": "auto", "orientation": "auto", "reduceOptions": { - "calcs": ["lastNotNull"], + "calcs": [ + "lastNotNull" + ], "fields": "", "values": false }, "textMode": "auto" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "editorMode": "code", "expr": "histogram_quantile(0.99, sum by(le) (rate(run_googleapis_com:request_latencies_bucket{service_name=\"osv-grpc-v1\", monitored_resource=\"cloud_run_revision\"}[5m]))) / 1000", - "instant": true, + "refId": "A", "legendFormat": "p99 Latency", - "range": false, - "refId": "A" + "instant": true } ], "title": "API p99 Latency (Target: <= 150ms)", @@ -220,256 +276,513 @@ }, { "collapsed": false, - "gridPos": { "h": 1, "w": 24, "x": 0, "y": 5 }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 5 + }, "id": 101, "title": "Worker Ingestion Pipeline Throughput", "type": "row" }, { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "fieldConfig": { - "defaults": { - "color": { "mode": "palette-classic" }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineInterpolation": "smooth", - "lineWidth": 2, - "showPoints": "never", - "spanNulls": false, - "stacking": { "group": "A", "mode": "none" } - }, - "unit": "ops" - }, - "overrides": [] + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 6 }, - "gridPos": { "h": 8, "w": 12, "x": 0, "y": 6 }, + "hiddenSeries": false, "id": 5, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": ["mean", "lastNotNull", "max"], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { "mode": "multi", "sort": "desc" } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "editorMode": "code", "expr": "sum(rate(osv_worker_tasks_processed_total[5m])) by (status)", - "legendFormat": "{{status}}", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "{{status}}" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Worker Task Processing Rate", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "fieldConfig": { - "defaults": { - "color": { "mode": "palette-classic" }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "bars", - "fillOpacity": 80, - "lineWidth": 1, - "showPoints": "never", - "spanNulls": false, - "stacking": { "group": "A", "mode": "normal" } - }, - "unit": "short" - }, - "overrides": [] + "aliasColors": {}, + "bars": true, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 8, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 6 }, - "gridPos": { "h": 8, "w": 12, "x": 12, "y": 6 }, + "hiddenSeries": false, "id": 6, + "legend": { + "alignAsTable": true, + "avg": false, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": false, + "linewidth": 1, + "nullPointMode": "null", "options": { - "legend": { - "calcs": ["lastNotNull", "max"], - "displayMode": "table", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { "mode": "multi", "sort": "desc" } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": true, + "steppedLine": false, "targets": [ { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "editorMode": "code", "expr": "sum(increase(osv_worker_tasks_processed_total[1h])) by (status)", - "interval": "1h", + "refId": "A", "legendFormat": "{{status}}", - "range": true, - "refId": "A" + "interval": "1h" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Hourly Task Volume by Status", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { "collapsed": false, - "gridPos": { "h": 1, "w": 24, "x": 0, "y": 14 }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 14 + }, "id": 102, "title": "Public API Serving & Error Budget Burn Rate", "type": "row" }, { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "fieldConfig": { - "defaults": { - "color": { "mode": "palette-classic" }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "reqps" - }, - "overrides": [] + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 15 }, - "gridPos": { "h": 8, "w": 12, "x": 0, "y": 15 }, + "hiddenSeries": false, "id": 7, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": ["mean", "lastNotNull", "max"], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { "mode": "multi", "sort": "desc" } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "editorMode": "code", "expr": "sum by (response_code_class) (rate(run_googleapis_com:request_count{service_name=\"osv-grpc-v1\", monitored_resource=\"cloud_run_revision\"}[5m]))", - "legendFormat": "{{response_code_class}}", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "{{response_code_class}}" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Cloud Run Request Rate (QPS by Status Class)", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "reqps", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "fieldConfig": { - "defaults": { - "color": { "mode": "palette-classic" }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 10, - "lineWidth": 2 - }, - "unit": "s" - }, - "overrides": [] + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 15 }, - "gridPos": { "h": 8, "w": 12, "x": 12, "y": 15 }, + "hiddenSeries": false, "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": ["mean", "lastNotNull", "max"], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { "mode": "multi", "sort": "desc" } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "editorMode": "code", "expr": "histogram_quantile(0.50, sum by(le) (rate(run_googleapis_com:request_latencies_bucket{service_name=\"osv-grpc-v1\", monitored_resource=\"cloud_run_revision\"}[5m]))) / 1000", - "legendFormat": "p50 Latency", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "p50 Latency" }, { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "editorMode": "code", "expr": "histogram_quantile(0.95, sum by(le) (rate(run_googleapis_com:request_latencies_bucket{service_name=\"osv-grpc-v1\", monitored_resource=\"cloud_run_revision\"}[5m]))) / 1000", - "legendFormat": "p95 Latency", - "range": true, - "refId": "B" + "refId": "B", + "legendFormat": "p95 Latency" }, { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "editorMode": "code", "expr": "histogram_quantile(0.99, sum by(le) (rate(run_googleapis_com:request_latencies_bucket{service_name=\"osv-grpc-v1\", monitored_resource=\"cloud_run_revision\"}[5m]))) / 1000", - "legendFormat": "p99 Latency", - "range": true, - "refId": "C" + "refId": "C", + "legendFormat": "p99 Latency" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Cloud Run API Latency Percentiles", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { "collapsed": false, - "gridPos": { "h": 1, "w": 24, "x": 0, "y": 23 }, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, "id": 103, "title": "Ingestion Latency by Source", "type": "row" }, { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "fieldConfig": { - "defaults": { - "color": { "mode": "palette-classic" }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 10, - "lineWidth": 2 - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { "color": "green", "value": null }, - { "color": "red", "value": 7200 } - ] - }, - "unit": "s" - }, - "overrides": [] + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, + "gridPos": { + "h": 8, + "w": 24, + "x": 0, + "y": 24 }, - "gridPos": { "h": 8, "w": 24, "x": 0, "y": 24 }, + "hiddenSeries": false, "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": ["mean", "lastNotNull", "max"], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { "mode": "multi", "sort": "desc" } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { "type": "prometheus", "uid": "gmp" }, - "editorMode": "code", "expr": "histogram_quantile(0.95, sum by(le, source) (rate(osv_worker_published_to_available_seconds_bucket[1h])))", - "legendFormat": "{{source}} (p95)", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "{{source}} (p95)" + } + ], + "thresholds": [ + { + "colorMode": "critical", + "fill": false, + "line": true, + "op": "gt", + "value": 7200 } ], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Published-to-Available Lag by Source (Target: < 2h)", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } } ], "refresh": "30s", - "schemaVersion": 39, + "schemaVersion": 27, + "style": "dark", "tags": [ "osv", "executive", diff --git a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/pipeline-ingestion-ops.json b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/pipeline-ingestion-ops.json index 4f383e1c97b..a3b9dbfcdb8 100644 --- a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/pipeline-ingestion-ops.json +++ b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/dashboards/pipeline-ingestion-ops.json @@ -3,23 +3,20 @@ "list": [ { "builtIn": 1, - "datasource": { - "type": "grafana", - "uid": "-- Grafana --" - }, + "datasource": "-- Plutono --", "enable": true, "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "type": "dashboard" } ] }, "editable": false, - "fiscalYearStartMonth": 0, + "gnetId": null, "graphTooltip": 1, "id": null, "links": [], - "liveNow": false, "panels": [ { "collapsed": false, @@ -34,10 +31,7 @@ "type": "row" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, + "datasource": "GMP (Prometheus)", "fieldConfig": { "defaults": { "color": { @@ -86,29 +80,20 @@ }, "textMode": "auto" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(pubsub_googleapis_com:subscription_num_undelivered_messages{subscription_id=~\"default|.*tasks.*\"}) or sum(pubsub_googleapis_com:subscription_num_undelivered_messages{subscription_id=\"default\"})", - "instant": true, + "refId": "A", "legendFormat": "Default Tasks Backlog", - "range": false, - "refId": "A" + "instant": true } ], "title": "Default Tasks Backlog", "type": "stat" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, + "datasource": "GMP (Prometheus)", "fieldConfig": { "defaults": { "color": { @@ -157,29 +142,20 @@ }, "textMode": "auto" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(pubsub_googleapis_com:subscription_num_undelivered_messages{subscription_id=~\".*reimport.*\"})", - "instant": true, + "refId": "A", "legendFormat": "Reimport Backlog", - "range": false, - "refId": "A" + "instant": true } ], "title": "Reimport Queue Backlog", "type": "stat" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, + "datasource": "GMP (Prometheus)", "description": "Current age of the single oldest unacknowledged message across Pub/Sub subscriptions (labeled with its subscription_id). Drops immediately once the message is acknowledged or expires.", "fieldConfig": { "defaults": { @@ -229,29 +205,20 @@ }, "textMode": "value_and_name" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "topk(1, max by (subscription_id) (pubsub_googleapis_com:subscription_oldest_unacked_message_age))", - "instant": true, + "refId": "A", "legendFormat": "{{subscription_id}}", - "range": false, - "refId": "A" + "instant": true } ], "title": "Oldest Unacked Message Age", "type": "stat" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, + "datasource": "GMP (Prometheus)", "fieldConfig": { "defaults": { "color": { @@ -292,19 +259,13 @@ }, "textMode": "auto" }, - "pluginVersion": "11.5.0", + "pluginVersion": "7.5.52", "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(kube_deployment_status_replicas_available{deployment=~\"workers.*\"}) or sum(kube_deployment_status_replicas_available{deployment=\"workers\"})", - "instant": true, + "refId": "A", "legendFormat": "Active Workers", - "range": false, - "refId": "A" + "instant": true } ], "title": "Worker Pool Active Replicas", @@ -323,144 +284,194 @@ "type": "row" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "short" - }, - "overrides": [] - }, + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 6 }, + "hiddenSeries": false, "id": 5, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum by (subscription_id) (pubsub_googleapis_com:subscription_num_undelivered_messages)", - "legendFormat": "{{subscription_id}}", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "{{subscription_id}}" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Pub/Sub Queue Depth by Topic / Subscription", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "gmp" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": true, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "ops" - }, - "overrides": [] + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 6 }, + "hiddenSeries": false, "id": 6, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(rate(pubsub_googleapis_com:topic_send_message_operation_count{topic_id=~\"tasks|reimport|cves\"}[5m]))", - "legendFormat": "Intake Rate (Tasks In)", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "Intake Rate (Tasks In)" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(rate(osv_worker_tasks_processed_total[5m]))", - "legendFormat": "Drain Rate (Worker Tasks Out)", - "range": true, - "refId": "B" + "refId": "B", + "legendFormat": "Drain Rate (Worker Tasks Out)" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum(rate(osv_worker_tasks_processed_total[5m])) - sum(rate(pubsub_googleapis_com:topic_send_message_operation_count{topic_id=~\"tasks|reimport|cves\"}[5m]))", - "legendFormat": "Net Drain Speed (Tasks/s)", - "range": true, - "refId": "C" + "refId": "C", + "legendFormat": "Net Drain Speed (Tasks/s)" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Intake vs. Drain Velocity (Queue Drain Speed)", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { "collapsed": false, @@ -475,172 +486,214 @@ "type": "row" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 10, - "lineWidth": 2 - }, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "orange", - "value": 10 - }, - { - "color": "red", - "value": 30 - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 15 }, + "hiddenSeries": false, "id": 7, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "histogram_quantile(0.50, sum by(le) (rate(osv_worker_record_latency_seconds_bucket[5m])))", - "legendFormat": "p50 Latency", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "p50 Latency" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "histogram_quantile(0.90, sum by(le) (rate(osv_worker_record_latency_seconds_bucket[5m])))", - "legendFormat": "p90 Latency", - "range": true, - "refId": "B" + "refId": "B", + "legendFormat": "p90 Latency" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "histogram_quantile(0.95, sum by(le) (rate(osv_worker_record_latency_seconds_bucket[5m])))", - "legendFormat": "p95 Latency", - "range": true, - "refId": "C" + "refId": "C", + "legendFormat": "p95 Latency" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "histogram_quantile(0.99, sum by(le) (rate(osv_worker_record_latency_seconds_bucket[5m])))", - "legendFormat": "p99 Latency", - "range": true, - "refId": "D" + "refId": "D", + "legendFormat": "p99 Latency" } ], + "thresholds": [ + { + "colorMode": "warning", + "fill": false, + "line": true, + "op": "gt", + "value": 10 + }, + { + "colorMode": "critical", + "fill": false, + "line": true, + "op": "gt", + "value": 30 + } + ], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Worker Task Latency Distribution (Task Receive to Finish)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "gmp" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "ops" - }, - "overrides": [] + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, + "yaxes": [ + { + "format": "s", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 15 }, + "hiddenSeries": false, "id": 8, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum by (action, status) (rate(osv_worker_tasks_processed_total[5m]))", - "legendFormat": "{{action}} ({{status}})", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "{{action}} ({{status}})" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Worker Tasks Processed per Second by Action & Status", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { "collapsed": false, @@ -655,203 +708,284 @@ "type": "row" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "ops" - }, - "overrides": [] - }, + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 8, "x": 0, "y": 24 }, + "hiddenSeries": false, "id": 9, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum by (error_type, recoverable) (rate(osv_worker_failed_tasks_total[5m]))", - "legendFormat": "{{error_type}} (recoverable={{recoverable}})", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "{{error_type}} (recoverable={{recoverable}})" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Worker Task Failures by Error Type & Recoverability", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "gmp" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "short" - }, - "overrides": [] + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, + "yaxes": [ + { + "format": "ops", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 8, "x": 8, "y": 24 }, + "hiddenSeries": false, "id": 10, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum by (status) (osv_reconciler_records_reconciled)", - "legendFormat": "Reconciled ({{status}})", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "Reconciled ({{status}})" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum by (status) (rate(osv_worker_tasks_processed_total{work_pool=\"reimport\"}[5m]))", - "legendFormat": "Reimport Pool / s ({{status}})", - "range": true, - "refId": "B" + "refId": "B", + "legendFormat": "Reimport Pool / s ({{status}})" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Importer Reconciler & Reimport Pool Status", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "gmp" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "drawStyle": "line", - "fillOpacity": 15, - "lineWidth": 2 - }, - "unit": "short" - }, - "overrides": [] + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } + }, + { + "aliasColors": {}, + "bars": false, + "dashLength": 10, + "dashes": false, + "datasource": "GMP (Prometheus)", + "fill": 2, + "fillGradient": 0, "gridPos": { "h": 8, "w": 8, "x": 16, "y": 24 }, + "hiddenSeries": false, "id": 11, + "legend": { + "alignAsTable": true, + "avg": true, + "current": true, + "max": true, + "min": false, + "rightSide": false, + "show": true, + "total": false, + "values": true + }, + "lines": true, + "linewidth": 2, + "nullPointMode": "null", "options": { - "legend": { - "calcs": [ - "mean", - "lastNotNull", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "multi", - "sort": "desc" - } + "alertThreshold": true }, - "pluginVersion": "11.5.0", + "percentage": false, + "pluginVersion": "7.5.52", + "pointradius": 2, + "points": false, + "renderer": "flot", + "seriesOverrides": [], + "spaceLength": 10, + "stack": false, + "steppedLine": false, "targets": [ { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum by (source) (increase(osv_deleter_upstream_withdrawals_total[1h]))", - "legendFormat": "Withdrawals (1h): {{source}}", - "range": true, - "refId": "A" + "refId": "A", + "legendFormat": "Withdrawals (1h): {{source}}" }, { - "datasource": { - "type": "prometheus", - "uid": "gmp" - }, - "editorMode": "code", "expr": "sum by (source) (osv_deleter_refused_deletions)", - "legendFormat": "Safety Refusals: {{source}}", - "range": true, - "refId": "B" + "refId": "B", + "legendFormat": "Safety Refusals: {{source}}" } ], + "thresholds": [], + "timeFrom": null, + "timeRegions": [], + "timeShift": null, "title": "Upstream Withdrawals & Safety Refusals", - "type": "timeseries" + "tooltip": { + "shared": true, + "sort": 2, + "value_type": "individual" + }, + "type": "graph", + "xaxis": { + "buckets": null, + "mode": "time", + "name": null, + "show": true, + "values": [] + }, + "yaxes": [ + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": 0, + "show": true + }, + { + "format": "short", + "label": null, + "logBase": 1, + "max": null, + "min": null, + "show": false + } + ], + "yaxis": { + "align": false, + "alignLevel": null + } }, { "collapsed": false, @@ -866,45 +1000,26 @@ "type": "row" }, { - "datasource": { - "type": "googlecloud-logging-datasource", - "uid": "cloud-logging" - }, + "datasource": null, "gridPos": { - "h": 10, + "h": 7, "w": 24, "x": 0, "y": 33 }, "id": 12, "options": { - "dedupStrategy": "none", - "enableLogDetails": true, - "prettifyLogMessage": false, - "showCommonLabels": false, - "showLabels": false, - "showTime": true, - "sortOrder": "Descending", - "wrapLogMessage": false - }, - "pluginVersion": "11.5.0", - "targets": [ - { - "datasource": { - "type": "googlecloud-logging-datasource", - "uid": "cloud-logging" - }, - "projectId": "oss-vdb-test", - "queryText": "resource.type=\"k8s_container\"\nresource.labels.container_name=~\"^(worker-private|workers-reimport|workers-cves|recoverer|importer|importer-deleter)$\"\nseverity>=ERROR", - "refId": "A" - } - ], - "title": "Failed Worker, Importer & Recoverer Error Logs", - "type": "logs" + "content": "### Cloud Logging Triage Links (`severity >= ERROR`)\nInline Cloud Logging panels require Grafana >= 8.5 (`googlecloud-logging-datasource`); use the pre-filtered Google Cloud Logs Explorer links below for live stack traces and `ref_id` inspection:\n\n- [**All Pipeline Error Logs** (`worker-*`, `recoverer`, `importer`, `importer-deleter`)](https://console.cloud.google.com/logs/query;query=resource.type%3D%22k8s_container%22%0Aresource.labels.container_name%3D~%22%5E%28worker-private%7Cworkers-reimport%7Cworkers-cves%7Crecoverer%7Cimporter%7Cimporter-deleter%29%24%22%0Aseverity%3E%3DERROR?project=oss-vdb-test)\n- [**Worker Pool Errors Only** (`worker-private`, `workers-reimport`, `workers-cves`)](https://console.cloud.google.com/logs/query;query=resource.type%3D%22k8s_container%22%0Aresource.labels.container_name%3D~%22%5E%28worker-private%7Cworkers-reimport%7Cworkers-cves%29%24%22%0Aseverity%3E%3DERROR?project=oss-vdb-test)\n- [**Importer & Deleter Errors** (`importer`, `importer-deleter`)](https://console.cloud.google.com/logs/query;query=resource.type%3D%22k8s_container%22%0Aresource.labels.container_name%3D~%22%5E%28importer%7Cimporter-deleter%29%24%22%0Aseverity%3E%3DERROR?project=oss-vdb-test)\n- [**Recoverer Errors** (`recoverer`)](https://console.cloud.google.com/logs/query;query=resource.type%3D%22k8s_container%22%0Aresource.labels.container_name%3D~%22%5E%28recoverer%29%24%22%0Aseverity%3E%3DERROR?project=oss-vdb-test)\n\n```text\nresource.type=\"k8s_container\"\nresource.labels.container_name=~\"^(worker-private|workers-reimport|workers-cves|recoverer|importer|importer-deleter)$\"\nseverity>=ERROR\n```", + "mode": "markdown" + }, + "pluginVersion": "7.5.52", + "title": "Failed Worker, Importer & Recoverer Error Logs (Cloud Logging Explorer)", + "type": "text" } ], "refresh": "30s", - "schemaVersion": 39, + "schemaVersion": 27, + "style": "dark", "tags": [ "osv", "pipeline", @@ -934,4 +1049,4 @@ "title": "2. Ingestion & Worker Pipeline Operations", "uid": "osv-pipeline-ingestion-ops", "version": 1 -} \ No newline at end of file +} diff --git a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/grafana_deployment.yaml b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/grafana_deployment.yaml index 852593eedd8..234ee4f0242 100644 --- a/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/grafana_deployment.yaml +++ b/deployment/clouddeploy/gke-workers/environments/oss-vdb-test/monitoring/grafana_deployment.yaml @@ -20,42 +20,38 @@ spec: spec: containers: - name: grafana - image: grafana/grafana:11.5.10@sha256:4d1b2146de6488324c4e880be2028620259c414406e36a9ac2160485f8fd3259 + image: ghcr.io/credativ/plutono:v7.5.52@sha256:5e5c86066c5adc0e7fa06f33eeb3396ac6f98cf1f387253c681fb7783c610f5e imagePullPolicy: IfNotPresent ports: - name: http containerPort: 3000 env: - - name: GF_SECURITY_ALLOW_EMBEDDING + - name: PL_SECURITY_ALLOW_EMBEDDING value: "true" - - name: GF_AUTH_ANONYMOUS_ENABLED + - name: PL_AUTH_ANONYMOUS_ENABLED value: "false" - - name: GF_AUTH_BASIC_ENABLED + - name: PL_AUTH_BASIC_ENABLED value: "false" - - name: GF_AUTH_DISABLE_LOGIN_FORM + - name: PL_AUTH_DISABLE_LOGIN_FORM value: "true" - - name: GF_AUTH_JWT_ENABLED + - name: PL_AUTH_DISABLE_SIGNOUT_MENU value: "true" - - name: GF_AUTH_JWT_HEADER_NAME - value: "X-Goog-IAP-JWT-Assertion" - - name: GF_AUTH_JWT_EMAIL_CLAIM - value: "email" - - name: GF_AUTH_JWT_USERNAME_CLAIM - value: "email" - - name: GF_AUTH_JWT_JWK_SET_URL - value: "https://www.gstatic.com/iap/verify/public_key-jwk" - - name: GF_AUTH_JWT_EXPECT_CLAIMS - value: '{"iss": "https://cloud.google.com/iap"}' - - name: GF_AUTH_JWT_AUTO_SIGN_UP + - name: PL_AUTH_PROXY_ENABLED value: "true" - - name: GF_USERS_AUTO_ASSIGN_ORG + - name: PL_AUTH_PROXY_HEADER_NAME + value: "X-Goog-Authenticated-User-Email" + - name: PL_AUTH_PROXY_HEADER_PROPERTY + value: "username" + - name: PL_AUTH_PROXY_AUTO_SIGN_UP value: "true" - - name: GF_USERS_AUTO_ASSIGN_ORG_ROLE + - name: PL_USERS_AUTO_ASSIGN_ORG + value: "true" + - name: PL_USERS_AUTO_ASSIGN_ORG_ROLE value: "Viewer" - - name: GF_SERVER_ROOT_URL + - name: PL_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH + value: "/etc/plutono/dashboards/executive-overview.json" + - name: PL_SERVER_ROOT_URL value: "https://monitoring.test.osv.dev" - - name: GF_INSTALL_PLUGINS - value: "googlecloud-logging-datasource 1.8.1" resources: requests: cpu: 250m @@ -81,16 +77,16 @@ spec: failureThreshold: 2 volumeMounts: - name: datasources - mountPath: /etc/grafana/provisioning/datasources + mountPath: /etc/plutono/provisioning/datasources readOnly: true - name: dashboards-prov - mountPath: /etc/grafana/provisioning/dashboards + mountPath: /etc/plutono/provisioning/dashboards readOnly: true - name: dashboards - mountPath: /etc/grafana/dashboards + mountPath: /etc/plutono/dashboards readOnly: true - name: storage - mountPath: /var/lib/grafana + mountPath: /var/lib/plutono - name: gmp-frontend image: gke.gcr.io/prometheus-engine/frontend:v0.18.2-gke.1@sha256:35ab356d969255dd7694ae371bf0991b97907451b4c7e1574b58a096d3be5977 args: diff --git a/tools/run_grafana_local.sh b/tools/run_grafana_local.sh index f36cb57afcd..a5af4627ec2 100755 --- a/tools/run_grafana_local.sh +++ b/tools/run_grafana_local.sh @@ -56,14 +56,6 @@ datasources: jsonData: authenticationType: gce defaultProject: $GCP_PROJECT - - name: Cloud Logging - uid: cloud-logging - type: googlecloud-logging-datasource - access: proxy - editable: true - jsonData: - authenticationType: gce - defaultProject: $GCP_PROJECT EOF # Extract dashboards.yaml provider @@ -75,9 +67,10 @@ providers: folder: '' type: file disableDeletion: false + updateIntervalSeconds: 10 editable: true # Allow editing locally options: - path: /etc/grafana/dashboards + path: /etc/plutono/dashboards EOF chmod 644 "$TMP_DIR/datasources.yaml" "$TMP_DIR/dashboards.yaml" @@ -91,16 +84,16 @@ docker run -d --rm \ --web.listen-address=0.0.0.0:9090 \ --query.project-id=$GCP_PROJECT -echo "Starting Grafana on http://localhost:3000" +echo "Starting Plutono (Apache 2.0 Grafana 7.5 fork) on http://localhost:3000" echo "Login skipped (Anonymous access enabled as Admin)" echo "To save changes: Edit dashboard in UI -> Settings -> JSON Model -> Copy -> Save to file" # Open browser automatically in background ( - # Wait for Grafana to be ready + # Wait for Plutono to be ready for i in {1..30}; do if curl -s -o /dev/null http://localhost:3000/api/health; then - echo "Grafana is ready! Opening browser..." + echo "Plutono is ready! Opening browser..." if command -v xdg-open > /dev/null; then xdg-open http://localhost:3000 > /dev/null 2>&1 elif command -v open > /dev/null; then @@ -114,19 +107,19 @@ echo "To save changes: Edit dashboard in UI -> Settings -> JSON Model -> Copy -> done ) & -# Run Grafana +# Run Plutono # Anonymous access is enabled as Admin for local development convenience ONLY. # Do NOT use these settings in production! docker run --rm \ --name grafana-local \ --network grafana-local-net \ -p 127.0.0.1:3000:3000 \ - -e GF_AUTH_ANONYMOUS_ENABLED="true" \ - -e GF_AUTH_ANONYMOUS_ORG_ROLE="Admin" \ - -e GF_INSTALL_PLUGINS="googlecloud-logging-datasource 1.8.1" \ + -e PL_AUTH_ANONYMOUS_ENABLED="true" \ + -e PL_AUTH_ANONYMOUS_ORG_ROLE="Admin" \ + -e PL_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH="/etc/plutono/dashboards/executive-overview.json" \ -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/adc.json \ -v "$TMP_DIR/adc.json:/tmp/keys/adc.json:ro" \ - -v "$TMP_DIR/datasources.yaml:/etc/grafana/provisioning/datasources/datasources.yaml:ro" \ - -v "$TMP_DIR/dashboards.yaml:/etc/grafana/provisioning/dashboards/dashboards.yaml:ro" \ - -v "$(pwd)/$MONITORING_DIR/dashboards:/etc/grafana/dashboards:ro" \ - grafana/grafana:11.5.10@sha256:4d1b2146de6488324c4e880be2028620259c414406e36a9ac2160485f8fd3259 + -v "$TMP_DIR/datasources.yaml:/etc/plutono/provisioning/datasources/datasources.yaml:ro" \ + -v "$TMP_DIR/dashboards.yaml:/etc/plutono/provisioning/dashboards/dashboards.yaml:ro" \ + -v "$(pwd)/$MONITORING_DIR/dashboards:/etc/plutono/dashboards:ro" \ + ghcr.io/credativ/plutono:v7.5.52@sha256:5e5c86066c5adc0e7fa06f33eeb3396ac6f98cf1f387253c681fb7783c610f5e From d2275b4dce737ead0b2fd2175d8acd6796f8d7fc Mon Sep 17 00:00:00 2001 From: Jess Lowe Date: Fri, 6 Nov 2026 04:21:41 +0000 Subject: [PATCH 2/2] unname --- .../gke-workers/base/ksm/ksm_cluster_pod_monitoring.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/clouddeploy/gke-workers/base/ksm/ksm_cluster_pod_monitoring.yaml b/deployment/clouddeploy/gke-workers/base/ksm/ksm_cluster_pod_monitoring.yaml index a559e472b1b..9d30428a191 100644 --- a/deployment/clouddeploy/gke-workers/base/ksm/ksm_cluster_pod_monitoring.yaml +++ b/deployment/clouddeploy/gke-workers/base/ksm/ksm_cluster_pod_monitoring.yaml @@ -1,7 +1,7 @@ apiVersion: monitoring.googleapis.com/v1 kind: ClusterPodMonitoring metadata: - name: osv-kube-state-metrics + name: kube-state-metrics labels: app.kubernetes.io/name: kube-state-metrics app.kubernetes.io/part-of: google-cloud-managed-prometheus