diff --git a/contrib/openshift/grafana/dashboards/dashboard-clair.configmap.yaml b/contrib/openshift/grafana/dashboards/dashboard-clair.configmap.yaml index 56659e4667..a91d1bc26e 100644 --- a/contrib/openshift/grafana/dashboards/dashboard-clair.configmap.yaml +++ b/contrib/openshift/grafana/dashboards/dashboard-clair.configmap.yaml @@ -32,11 +32,13 @@ data: ] }, "editable": true, + "fiscalYearStartMonth": 0, "gnetId": null, "graphTooltip": 1, - "id": 1, - "iteration": 1642631554696, + "id": 167, + "iteration": 1643412894556, "links": [], + "liveNow": false, "panels": [ { "datasource": "$datasource", @@ -367,7 +369,7 @@ data: }, "id": 18, "panels": [], - "title": "Database", + "title": "Database Indexer", "type": "row" }, { @@ -423,8 +425,8 @@ data: "overrides": [] }, "gridPos": { - "h": 8, - "w": 12, + "h": 7, + "w": 24, "x": 0, "y": 18 }, @@ -492,133 +494,655 @@ data: "type": "timeseries" }, { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", "datasource": "$datasource", "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "Seconds", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, "gridPos": { "h": 8, - "w": 12, - "x": 12, - "y": 18 + "w": 4, + "x": 0, + "y": 25 }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, "id": 22, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } + "legend": { + "show": true }, + "maxDataPoints": 50, + "repeat": null, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_setindexreport_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_setindexreport_duration_seconds_bucket[5m])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "IndexReport", + "legendFormat": "{{ le }}", "refId": "A" - }, + } + ], + "title": "Database query duration set index_report (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 4, + "x": 4, + "y": 25 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 48, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_layerscanned_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_layerscanned_duration_seconds_bucket[5m])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "LayerScanned", + "legendFormat": "{{ le }}", "refId": "B" - }, + } + ], + "title": "Database query duration layer scanned (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 4, + "x": 8, + "y": 25 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 51, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_manifestscanned_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_persistmanifest_duration_seconds_bucket[$rate])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "ManifestScanned", - "refId": "C" - }, + "legendFormat": "{{ le }}", + "refId": "D" + } + ], + "title": "Database query duration persist manifest (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 4, + "x": 12, + "y": 25 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 52, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_persistmanifest_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_manifestscanned_duration_seconds_bucket[5m])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "PersistManifest", - "refId": "D" - }, + "legendFormat": "{{ le }}", + "refId": "C" + } + ], + "title": "Database query duration manifest scanned (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 4, + "x": 16, + "y": 25 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 53, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_registerscanners_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_registerscanners_duration_seconds_bucket[5m])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "RegisterScanners", + "legendFormat": "{{ le }}", "refId": "E" - }, + } + ], + "title": "Database query duration register scanners (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 4, + "x": 20, + "y": 25 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 54, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_setindexfinished_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_setindexfinished_duration_seconds_bucket[5m])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "SetIndexReport", + "legendFormat": "{{ le }}", "refId": "F" } ], - "title": "Database query duration (indexer) (p$dbquantile)", - "type": "timeseries" + "title": "Database query duration set index finished (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 33 + }, + "id": 50, + "panels": [], + "title": "Database matcher", + "type": "row" }, { "datasource": "$datasource", @@ -673,10 +1197,10 @@ data: "overrides": [] }, "gridPos": { - "h": 8, - "w": 12, + "h": 7, + "w": 24, "x": 0, - "y": 26 + "y": 34 }, "id": 21, "options": { @@ -692,7 +1216,7 @@ data: "targets": [ { "exemplar": true, - "expr": "rate(claircore_vulnstore_get_total[$rate])", + "expr": "rate(claircore_vulnstore_getvulnerabilities_total[$rate])", "interval": "", "legendFormat": "VulnStoreGet: {{instance }}: {{ query }}", "refId": "A" @@ -734,768 +1258,338 @@ data: "type": "timeseries" }, { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, "gridPos": { "h": 8, - "w": 12, - "x": 12, - "y": 26 + "w": 4, + "x": 0, + "y": 41 }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, "id": 33, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } + "legend": { + "show": false }, + "maxDataPoints": 50, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_get_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_vulnstore_getvulnerabilities_duration_seconds_bucket[$rate])) by (le)", + "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "VulnStoreGet: {{instance }}: {{ query }}", + "legendFormat": "{{ le }}", "refId": "A" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_getlatestrefs_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "GetLatestRefs: {{instance }}: {{ query }}", - "refId": "B" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_getlatestupdateref_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "GetLatestUpdateRef: {{instance }}: {{ query }}", - "refId": "C" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_getupdateoperations_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "GetUpdateOperations: {{instance }}: {{ query }}", - "refId": "D" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_updatevulnerabilities_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "UpdateVulnerabilities: {{instance }}: {{ query }}", - "refId": "E" } ], - "title": "Database query duration (matcher) (p$dbquantile)", - "type": "timeseries" + "title": "Database latency get latest refs (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null }, { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, "gridPos": { "h": 8, - "w": 12, - "x": 0, - "y": 34 - }, - "id": 43, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, + "w": 4, + "x": 4, + "y": 41 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 55, + "legend": { + "show": false + }, + "maxDataPoints": 50, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "rate(claircore_vulnstore_gc_total[$rate])", + "expr": "sum(rate(claircore_vulnstore_getlatestrefs_duration_seconds_bucket[$rate])) by (le)", + "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "GarbageCollection: {{instance }}: {{ query }}", - "refId": "E" + "legendFormat": "{{ le }}", + "refId": "B" } ], - "title": "Database query count GC (matcher)", - "type": "timeseries" + "title": "Database latency get latest refs (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null }, { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, "gridPos": { "h": 8, - "w": 12, - "x": 12, - "y": 34 - }, - "id": 44, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, + "w": 4, + "x": 8, + "y": 41 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 56, + "legend": { + "show": false + }, + "maxDataPoints": 50, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_gc_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_vulnstore_getlatestupdateref_duration_seconds_bucket[$rate])) by (le)", + "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "UpdateVulnerabilities: {{instance }}: {{ query }}", - "refId": "F" + "legendFormat": "{{ le }}", + "refId": "C" } ], - "title": "Database query duration GC (matcher) (p$dbquantile)", - "type": "timeseries" + "title": "Database latency get latest update refs (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null }, { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, "gridPos": { "h": 8, - "w": 12, - "x": 0, - "y": 42 + "w": 4, + "x": 12, + "y": 41 }, - "id": 36, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ - { - "exemplar": true, - "expr": "rate(clair_notifier_created_total[$rate])", - "interval": "", - "legendFormat": "CreatedTotal: {{instance }}: {{ query }}", - "refId": "A" - }, - { - "exemplar": true, - "expr": "rate(clair_notifier_failed_total[$rate])", - "hide": false, - "interval": "", - "legendFormat": "NotifierFailed: {{instance }}: {{ query }}", - "refId": "B" - }, - { - "exemplar": true, - "expr": "rate(clair_notifier_putreceipt_total[$rate])", - "hide": false, - "interval": "", - "legendFormat": "NotifierPutReceipt: {{instance }}: {{ query }}", - "refId": "C" - }, - { - "exemplar": true, - "expr": "rate(clair_notifier_receiptbyuoid_total[$rate])", - "hide": false, - "interval": "", - "legendFormat": "NotifierReceiptByUOID: {{instance }}: {{ query }}", - "refId": "D" - } - ], - "title": "Database query count (notifier)", - "type": "timeseries" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 42 - }, - "id": 38, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(clair_notifier_created_duration_seconds_bucket[$rate]))", - "interval": "", - "legendFormat": "CreatedTotal: {{instance }}: {{ query }}", - "refId": "A" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(clair_notifier_failed_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "NotifierFailed: {{instance }}: {{ query }}", - "refId": "B" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(clair_notifier_putreceipt_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "NotifierPutReceipt: {{instance }}: {{ query }}", - "refId": "C" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(clair_notifier_receiptbyuoid_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "NotifierReceiptByUOID: {{instance }}: {{ query }}", - "refId": "D" - } - ], - "title": "Database query duration (notifier) (p$dbquantile)", - "type": "timeseries" - }, - { - "collapsed": false, - "datasource": "$datasource", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 50 - }, - "id": 2, - "panels": [], - "title": "API Requests", - "type": "row" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 51 - }, - "id": 4, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ - { - "exemplar": true, - "expr": "sum by (code) (rate(clair_http_matcher_api_v1_vulnerability_report_request_total[$rate]))", - "instant": false, - "interval": "", - "legendFormat": "Status {{ code }} ", - "refId": "A" - } - ], - "title": "Vulnerability Report Requests / $rate", - "type": "timeseries" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "Seconds", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 51 + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 57, + "legend": { + "show": false }, - "id": 15, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "repeat": null, + "maxDataPoints": 50, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "histogram_quantile($apiquantile, rate(clair_http_matcher_api_v1_vulnerability_report_request_duration_seconds_bucket[$rate]))", - "instant": false, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "title": "Vulnerability Report Request Latency (p$apiquantile)", - "type": "timeseries" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 59 - }, - "id": 7, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" + "expr": "sum(rate(claircore_vulnstore_getupdateoperations_duration_seconds_bucket[$rate])) by (le)", + "format": "heatmap", + "hide": false, + "interval": "", + "legendFormat": "{{ le }}", + "refId": "D" } - }, + ], + "title": "Database latency get update operations (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "gridPos": { + "h": 8, + "w": 4, + "x": 16, + "y": 41 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 58, + "legend": { + "show": false + }, + "maxDataPoints": 50, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{handler=\"/indexer/api/v1/index_report\", method=\"post\"}[$rate]))", - "instant": false, - "interval": "1", - "legendFormat": "Status {{ code }} ", - "refId": "A" + "expr": "sum(rate(claircore_vulnstore_updatevulnerabilities_duration_seconds_bucket[$rate])) by (le)", + "format": "heatmap", + "hide": false, + "interval": "", + "legendFormat": "{{ le }}", + "refId": "E" } ], - "title": "Create Index Report Requests / $rate", - "type": "timeseries" + "title": "Database latency update vulnerabilities (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null }, { "datasource": "$datasource", - "description": "", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { - "axisLabel": "Seconds", + "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 30, + "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, @@ -1536,12 +1630,12 @@ data: "overrides": [] }, "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 59 + "h": 7, + "w": 24, + "x": 0, + "y": 49 }, - "id": 14, + "id": 43, "options": { "legend": { "calcs": [], @@ -1555,16 +1649,383 @@ data: "targets": [ { "exemplar": true, - "expr": "histogram_quantile($apiquantile, rate(clair_http_indexerv1_request_duration_seconds_bucket{method=\"post\", handler=\"/indexer/api/v1/index_report\"}[$rate]))", - "instant": false, - "interval": "1", - "legendFormat": "", - "refId": "A" + "expr": "rate(claircore_vulnstore_gc_total[$rate])", + "hide": false, + "interval": "", + "legendFormat": "GarbageCollection: {{instance }}: {{ query }}", + "refId": "E" } ], - "title": "Create Index Report Request Latency (p$apiquantile)", + "title": "Database query count GC (matcher)", "type": "timeseries" }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 56 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 44, + "legend": { + "show": false + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(rate(claircore_vulnstore_gc_duration_seconds_bucket{query=\"updateOps\"}[$rate])) by (le)", + "format": "heatmap", + "hide": false, + "interval": "", + "legendFormat": "{{ le }}", + "refId": "F" + } + ], + "title": "Database query duration GC - updateOps (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 56 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 59, + "legend": { + "show": false + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(rate(claircore_vulnstore_gc_duration_seconds_bucket{query=\"deleteVulns\"}[$rate])) by (le)", + "format": "heatmap", + "hide": false, + "interval": "", + "legendFormat": "{{ le }}", + "refId": "F" + } + ], + "title": "Database query duration GC - deleteVulns (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 64 + }, + "id": 61, + "panels": [ + { + "datasource": "$datasource", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "id": 36, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "rate(clair_notifier_created_total[$rate])", + "interval": "", + "legendFormat": "CreatedTotal: {{instance }}: {{ query }}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "rate(clair_notifier_failed_total[$rate])", + "hide": false, + "interval": "", + "legendFormat": "NotifierFailed: {{instance }}: {{ query }}", + "refId": "B" + }, + { + "exemplar": true, + "expr": "rate(clair_notifier_putreceipt_total[$rate])", + "hide": false, + "interval": "", + "legendFormat": "NotifierPutReceipt: {{instance }}: {{ query }}", + "refId": "C" + }, + { + "exemplar": true, + "expr": "rate(clair_notifier_receiptbyuoid_total[$rate])", + "hide": false, + "interval": "", + "legendFormat": "NotifierReceiptByUOID: {{instance }}: {{ query }}", + "refId": "D" + } + ], + "title": "Database query count (notifier)", + "type": "timeseries" + }, + { + "datasource": "$datasource", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 30, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "id": 38, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "histogram_quantile($dbquantile, rate(clair_notifier_created_duration_seconds_bucket[$rate]))", + "interval": "", + "legendFormat": "CreatedTotal: {{instance }}: {{ query }}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "histogram_quantile($dbquantile, rate(clair_notifier_failed_duration_seconds_bucket[$rate]))", + "hide": false, + "interval": "", + "legendFormat": "NotifierFailed: {{instance }}: {{ query }}", + "refId": "B" + }, + { + "exemplar": true, + "expr": "histogram_quantile($dbquantile, rate(clair_notifier_putreceipt_duration_seconds_bucket[$rate]))", + "hide": false, + "interval": "", + "legendFormat": "NotifierPutReceipt: {{instance }}: {{ query }}", + "refId": "C" + }, + { + "exemplar": true, + "expr": "histogram_quantile($dbquantile, rate(clair_notifier_receiptbyuoid_duration_seconds_bucket[$rate]))", + "hide": false, + "interval": "", + "legendFormat": "NotifierReceiptByUOID: {{instance }}: {{ query }}", + "refId": "D" + } + ], + "title": "Database query duration (notifier) (p$dbquantile)", + "type": "timeseries" + } + ], + "title": "Database - Notifier", + "type": "row" + }, + { + "collapsed": false, + "datasource": "$datasource", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 65 + }, + "id": 2, + "panels": [], + "title": "API Requests", + "type": "row" + }, { "datasource": "$datasource", "fieldConfig": { @@ -1584,7 +2045,7 @@ data: "tooltip": false, "viz": false }, - "lineInterpolation": "stepBefore", + "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { @@ -1621,9 +2082,9 @@ data: "h": 8, "w": 12, "x": 0, - "y": 67 + "y": 66 }, - "id": 6, + "id": 4, "options": { "legend": { "calcs": [], @@ -1637,16 +2098,82 @@ data: "targets": [ { "exemplar": true, - "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{handler=\"/indexer/api/v1/index_state\", method=\"get\"}[$rate]))", + "expr": "sum by (code) (rate(clair_http_matcher_api_v1_vulnerability_report_request_total[$rate]))", "instant": false, "interval": "", - "legendFormat": "Status {{code}}", + "legendFormat": "Status {{ code }} ", "refId": "A" } ], - "title": "Indexer State Requests / $rate", + "title": "Vulnerability Report Requests", "type": "timeseries" }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 66 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 15, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "repeat": null, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(rate(clair_http_matcher_api_v1_vulnerability_report_request_duration_seconds_bucket [5m])) by (le)", + "format": "heatmap", + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{ le }}", + "refId": "A" + } + ], + "title": "Vulnerability Report Request Latency", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "middle", + "yBucketNumber": null, + "yBucketSize": null + }, { "datasource": "$datasource", "fieldConfig": { @@ -1655,18 +2182,18 @@ data: "mode": "palette-classic" }, "custom": { - "axisLabel": "Seconds", + "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 30, + "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, - "lineInterpolation": "stepBefore", + "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { @@ -1695,18 +2222,17 @@ data: "value": 80 } ] - }, - "unit": "short" + } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 67 + "x": 0, + "y": 74 }, - "id": 13, + "id": 7, "options": { "legend": { "calcs": [], @@ -1720,16 +2246,81 @@ data: "targets": [ { "exemplar": true, - "expr": "histogram_quantile($apiquantile, rate(clair_http_indexerv1_request_duration_seconds_bucket{method=\"get\", handler=\"/indexer/api/v1/index_state\"}[$rate]))", + "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{handler=\"/indexer/api/v1/index_report\", method=\"post\"}[$rate]))", "instant": false, - "interval": "", - "legendFormat": "", + "interval": "1", + "legendFormat": "Status {{ code }} ", "refId": "A" } ], - "title": "Indexer State Request Latency (p$apiquantile)", + "title": "Create Index Report Requests", "type": "timeseries" }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateGreys", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 74 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 14, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(increase(clair_http_indexerv1_request_duration_seconds_bucket{method=\"post\", handler=\"/indexer/api/v1/index_report\"} [5m])) by (le)", + "format": "heatmap", + "instant": false, + "interval": "1", + "legendFormat": "{{ le }}", + "refId": "A" + } + ], + "title": "Create Index Report Request Latency", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, { "datasource": "$datasource", "fieldConfig": { @@ -1749,7 +2340,7 @@ data: "tooltip": false, "viz": false }, - "lineInterpolation": "linear", + "lineInterpolation": "stepBefore", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { @@ -1786,9 +2377,9 @@ data: "h": 8, "w": 12, "x": 0, - "y": 75 + "y": 82 }, - "id": 5, + "id": 6, "options": { "legend": { "calcs": [], @@ -1802,16 +2393,81 @@ data: "targets": [ { "exemplar": true, - "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{method=\"get\", handler=\"/indexer/api/v1/index_report/:digest\"}[$rate]))", + "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{handler=\"/indexer/api/v1/index_state\", method=\"get\"}[$rate]))", "instant": false, - "interval": "1", - "legendFormat": "Status {{ code }} ", + "interval": "", + "legendFormat": "Status {{code}}", "refId": "A" } ], - "title": "Index Report Requests / $rate", + "title": "Indexer State Requests", "type": "timeseries" }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateGreys", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 82 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 47, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(increase(clair_http_indexerv1_request_duration_seconds_bucket{method=\"get\", handler=\"/indexer/api/v1/index_state\"} [5m])) by (le)", + "format": "heatmap", + "instant": false, + "interval": "1", + "legendFormat": "{{ le }}", + "refId": "A" + } + ], + "title": "Indexer State Request Latency", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, { "datasource": "$datasource", "fieldConfig": { @@ -1820,11 +2476,11 @@ data: "mode": "palette-classic" }, "custom": { - "axisLabel": "Seconds", + "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 30, + "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, @@ -1867,10 +2523,10 @@ data: "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 75 + "x": 0, + "y": 90 }, - "id": 16, + "id": 5, "options": { "legend": { "calcs": [], @@ -1884,16 +2540,81 @@ data: "targets": [ { "exemplar": true, - "expr": "histogram_quantile($apiquantile, rate(clair_http_indexerv1_request_duration_seconds_bucket{method=\"get\", handler=\"/indexer/api/v1/index_report/:digest\"}[$rate]))", + "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{method=\"get\", handler=\"/indexer/api/v1/index_report/:digest\"}[$rate]))", "instant": false, "interval": "1", - "legendFormat": "", + "legendFormat": "Status {{ code }} ", "refId": "A" } ], - "title": "Index Report Request Latency (p$apiquantile)", + "title": "Index Report Requests", "type": "timeseries" }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateGreys", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 90 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 46, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(increase(clair_http_indexerv1_request_duration_seconds_bucket{method=\"get\", handler=\"/indexer/api/v1/index_report/:digest\"} [5m])) by (le)", + "format": "heatmap", + "instant": false, + "interval": "1", + "legendFormat": "{{ le }}", + "refId": "A" + } + ], + "title": "Index Report Request Latency", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, { "datasource": "$datasource", "fieldConfig": { @@ -1950,7 +2671,7 @@ data: "h": 8, "w": 12, "x": 0, - "y": 83 + "y": 98 }, "id": 41, "options": { @@ -1973,7 +2694,7 @@ data: "refId": "A" } ], - "title": "Get Notifications Requests / $rate", + "title": "Get Notifications Requests", "type": "timeseries" }, { @@ -2032,7 +2753,7 @@ data: "h": 8, "w": 12, "x": 12, - "y": 83 + "y": 98 }, "id": 40, "options": { @@ -2114,7 +2835,7 @@ data: "h": 8, "w": 12, "x": 0, - "y": 91 + "y": 106 }, "id": 39, "options": { @@ -2137,7 +2858,7 @@ data: "refId": "A" } ], - "title": "Delete Notification Requests / $rate", + "title": "Delete Notification Requests", "type": "timeseries" }, { @@ -2196,7 +2917,7 @@ data: "h": 8, "w": 12, "x": 12, - "y": 91 + "y": 106 }, "id": 42, "options": { @@ -2229,7 +2950,7 @@ data: "h": 1, "w": 24, "x": 0, - "y": 99 + "y": 114 }, "id": 9, "panels": [], @@ -2292,7 +3013,7 @@ data: "h": 8, "w": 12, "x": 0, - "y": 100 + "y": 115 }, "id": 11, "options": { @@ -2374,7 +3095,7 @@ data: "h": 8, "w": 12, "x": 12, - "y": 100 + "y": 115 }, "id": 12, "options": { @@ -2400,8 +3121,8 @@ data: "type": "timeseries" } ], - "refresh": "", - "schemaVersion": 30, + "refresh": false, + "schemaVersion": 32, "style": "dark", "tags": [], "templating": { @@ -2531,9 +3252,9 @@ data: { "allValue": null, "current": { - "selected": false, - "text": "0.20", - "value": "0.20" + "selected": true, + "text": "0.95", + "value": "0.95" }, "description": null, "error": null, @@ -2544,7 +3265,7 @@ data: "name": "apiquantile", "options": [ { - "selected": false, + "selected": true, "text": "0.95", "value": "0.95" }, @@ -2559,7 +3280,7 @@ data: "value": "0.5" }, { - "selected": true, + "selected": false, "text": "0.20", "value": "0.20" }, @@ -2577,8 +3298,8 @@ data: { "current": { "selected": false, - "text": "Prometheus", - "value": "Prometheus" + "text": "clairp01ue1-prometheus", + "value": "clairp01ue1-prometheus" }, "description": null, "error": null, @@ -2598,7 +3319,7 @@ data: ] }, "time": { - "from": "now-1h", + "from": "now-6h", "to": "now" }, "timepicker": {}, diff --git a/local-dev/grafana/provisioning/dashboards/dashboard.json b/local-dev/grafana/provisioning/dashboards/dashboard.json index 35d817af57..ad29114f19 100644 --- a/local-dev/grafana/provisioning/dashboards/dashboard.json +++ b/local-dev/grafana/provisioning/dashboards/dashboard.json @@ -19,11 +19,13 @@ ] }, "editable": true, + "fiscalYearStartMonth": 0, "gnetId": null, "graphTooltip": 1, - "id": 1, - "iteration": 1642631554696, + "id": 167, + "iteration": 1643412894556, "links": [], + "liveNow": false, "panels": [ { "datasource": "$datasource", @@ -354,7 +356,7 @@ }, "id": 18, "panels": [], - "title": "Database", + "title": "Database Indexer", "type": "row" }, { @@ -410,8 +412,8 @@ "overrides": [] }, "gridPos": { - "h": 8, - "w": 12, + "h": 7, + "w": 24, "x": 0, "y": 18 }, @@ -479,133 +481,655 @@ "type": "timeseries" }, { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", "datasource": "$datasource", "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "Seconds", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, "gridPos": { "h": 8, - "w": 12, - "x": 12, - "y": 18 + "w": 4, + "x": 0, + "y": 25 }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, "id": 22, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } + "legend": { + "show": true }, + "maxDataPoints": 50, + "repeat": null, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_setindexreport_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_setindexreport_duration_seconds_bucket[5m])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "IndexReport", + "legendFormat": "{{ le }}", "refId": "A" - }, + } + ], + "title": "Database query duration set index_report (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 4, + "x": 4, + "y": 25 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 48, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_layerscanned_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_layerscanned_duration_seconds_bucket[5m])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "LayerScanned", + "legendFormat": "{{ le }}", "refId": "B" - }, + } + ], + "title": "Database query duration layer scanned (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 4, + "x": 8, + "y": 25 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 51, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_manifestscanned_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_persistmanifest_duration_seconds_bucket[$rate])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "ManifestScanned", - "refId": "C" - }, + "legendFormat": "{{ le }}", + "refId": "D" + } + ], + "title": "Database query duration persist manifest (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 4, + "x": 12, + "y": 25 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 52, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_persistmanifest_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_manifestscanned_duration_seconds_bucket[5m])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "PersistManifest", - "refId": "D" - }, + "legendFormat": "{{ le }}", + "refId": "C" + } + ], + "title": "Database query duration manifest scanned (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 4, + "x": 16, + "y": 25 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 53, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_registerscanners_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_registerscanners_duration_seconds_bucket[5m])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "RegisterScanners", + "legendFormat": "{{ le }}", "refId": "E" - }, + } + ], + "title": "Database query duration register scanners (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 4, + "x": 20, + "y": 25 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 54, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_indexer_setindexfinished_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_indexer_setindexfinished_duration_seconds_bucket[5m])) by (le)", "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "SetIndexReport", + "legendFormat": "{{ le }}", "refId": "F" } ], - "title": "Database query duration (indexer) (p$dbquantile)", - "type": "timeseries" + "title": "Database query duration set index finished (indexer)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "transformations": [ + { + "id": "groupBy", + "options": { + "fields": { + "IndexReport": { + "aggregations": [ + "lastNotNull" + ], + "operation": null + }, + "LayerScanned": { + "aggregations": [], + "operation": null + }, + "ManifestScanned": { + "aggregations": [], + "operation": null + }, + "PersistManifest": { + "aggregations": [], + "operation": null + }, + "RegisterScanners": { + "aggregations": [], + "operation": null + }, + "SetIndexReport": { + "aggregations": [], + "operation": null + }, + "Time": { + "aggregations": [ + "sum" + ], + "operation": null + } + } + } + } + ], + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "collapsed": false, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 33 + }, + "id": 50, + "panels": [], + "title": "Database matcher", + "type": "row" }, { "datasource": "$datasource", @@ -660,10 +1184,10 @@ "overrides": [] }, "gridPos": { - "h": 8, - "w": 12, + "h": 7, + "w": 24, "x": 0, - "y": 26 + "y": 34 }, "id": 21, "options": { @@ -679,7 +1203,7 @@ "targets": [ { "exemplar": true, - "expr": "rate(claircore_vulnstore_get_total[$rate])", + "expr": "rate(claircore_vulnstore_getvulnerabilities_total[$rate])", "interval": "", "legendFormat": "VulnStoreGet: {{instance }}: {{ query }}", "refId": "A" @@ -721,768 +1245,338 @@ "type": "timeseries" }, { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, "gridPos": { "h": 8, - "w": 12, - "x": 12, - "y": 26 + "w": 4, + "x": 0, + "y": 41 }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, "id": 33, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } + "legend": { + "show": false }, + "maxDataPoints": 50, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_get_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_vulnstore_getvulnerabilities_duration_seconds_bucket[$rate])) by (le)", + "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "VulnStoreGet: {{instance }}: {{ query }}", + "legendFormat": "{{ le }}", "refId": "A" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_getlatestrefs_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "GetLatestRefs: {{instance }}: {{ query }}", - "refId": "B" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_getlatestupdateref_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "GetLatestUpdateRef: {{instance }}: {{ query }}", - "refId": "C" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_getupdateoperations_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "GetUpdateOperations: {{instance }}: {{ query }}", - "refId": "D" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_updatevulnerabilities_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "UpdateVulnerabilities: {{instance }}: {{ query }}", - "refId": "E" } ], - "title": "Database query duration (matcher) (p$dbquantile)", - "type": "timeseries" + "title": "Database latency get latest refs (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null }, { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, "gridPos": { "h": 8, - "w": 12, - "x": 0, - "y": 34 - }, - "id": 43, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, + "w": 4, + "x": 4, + "y": 41 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 55, + "legend": { + "show": false + }, + "maxDataPoints": 50, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "rate(claircore_vulnstore_gc_total[$rate])", + "expr": "sum(rate(claircore_vulnstore_getlatestrefs_duration_seconds_bucket[$rate])) by (le)", + "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "GarbageCollection: {{instance }}: {{ query }}", - "refId": "E" + "legendFormat": "{{ le }}", + "refId": "B" } ], - "title": "Database query count GC (matcher)", - "type": "timeseries" + "title": "Database latency get latest refs (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null }, { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, "gridPos": { "h": 8, - "w": 12, - "x": 12, - "y": 34 - }, - "id": 44, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, + "w": 4, + "x": 8, + "y": 41 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 56, + "legend": { + "show": false + }, + "maxDataPoints": 50, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(claircore_vulnstore_gc_duration_seconds_bucket[$rate]))", + "expr": "sum(rate(claircore_vulnstore_getlatestupdateref_duration_seconds_bucket[$rate])) by (le)", + "format": "heatmap", "hide": false, "interval": "", - "legendFormat": "UpdateVulnerabilities: {{instance }}: {{ query }}", - "refId": "F" + "legendFormat": "{{ le }}", + "refId": "C" } ], - "title": "Database query duration GC (matcher) (p$dbquantile)", - "type": "timeseries" + "title": "Database latency get latest update refs (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null }, { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, "gridPos": { "h": 8, - "w": 12, - "x": 0, - "y": 42 + "w": 4, + "x": 12, + "y": 41 }, - "id": 36, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ - { - "exemplar": true, - "expr": "rate(clair_notifier_created_total[$rate])", - "interval": "", - "legendFormat": "CreatedTotal: {{instance }}: {{ query }}", - "refId": "A" - }, - { - "exemplar": true, - "expr": "rate(clair_notifier_failed_total[$rate])", - "hide": false, - "interval": "", - "legendFormat": "NotifierFailed: {{instance }}: {{ query }}", - "refId": "B" - }, - { - "exemplar": true, - "expr": "rate(clair_notifier_putreceipt_total[$rate])", - "hide": false, - "interval": "", - "legendFormat": "NotifierPutReceipt: {{instance }}: {{ query }}", - "refId": "C" - }, - { - "exemplar": true, - "expr": "rate(clair_notifier_receiptbyuoid_total[$rate])", - "hide": false, - "interval": "", - "legendFormat": "NotifierReceiptByUOID: {{instance }}: {{ query }}", - "refId": "D" - } - ], - "title": "Database query count (notifier)", - "type": "timeseries" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 42 - }, - "id": 38, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(clair_notifier_created_duration_seconds_bucket[$rate]))", - "interval": "", - "legendFormat": "CreatedTotal: {{instance }}: {{ query }}", - "refId": "A" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(clair_notifier_failed_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "NotifierFailed: {{instance }}: {{ query }}", - "refId": "B" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(clair_notifier_putreceipt_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "NotifierPutReceipt: {{instance }}: {{ query }}", - "refId": "C" - }, - { - "exemplar": true, - "expr": "histogram_quantile($dbquantile, rate(clair_notifier_receiptbyuoid_duration_seconds_bucket[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "NotifierReceiptByUOID: {{instance }}: {{ query }}", - "refId": "D" - } - ], - "title": "Database query duration (notifier) (p$dbquantile)", - "type": "timeseries" - }, - { - "collapsed": false, - "datasource": "$datasource", - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 50 - }, - "id": 2, - "panels": [], - "title": "API Requests", - "type": "row" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 51 - }, - "id": 4, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "targets": [ - { - "exemplar": true, - "expr": "sum by (code) (rate(clair_http_matcher_api_v1_vulnerability_report_request_total[$rate]))", - "instant": false, - "interval": "", - "legendFormat": "Status {{ code }} ", - "refId": "A" - } - ], - "title": "Vulnerability Report Requests / $rate", - "type": "timeseries" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "Seconds", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 30, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 51 + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 57, + "legend": { + "show": false }, - "id": 15, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" - } - }, - "repeat": null, + "maxDataPoints": 50, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "histogram_quantile($apiquantile, rate(clair_http_matcher_api_v1_vulnerability_report_request_duration_seconds_bucket[$rate]))", - "instant": false, - "interval": "", - "legendFormat": "", - "refId": "A" - } - ], - "title": "Vulnerability Report Request Latency (p$apiquantile)", - "type": "timeseries" - }, - { - "datasource": "$datasource", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 0, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 59 - }, - "id": 7, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom" - }, - "tooltip": { - "mode": "single" + "expr": "sum(rate(claircore_vulnstore_getupdateoperations_duration_seconds_bucket[$rate])) by (le)", + "format": "heatmap", + "hide": false, + "interval": "", + "legendFormat": "{{ le }}", + "refId": "D" } - }, + ], + "title": "Database latency get update operations (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "gridPos": { + "h": 8, + "w": 4, + "x": 16, + "y": 41 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 58, + "legend": { + "show": false + }, + "maxDataPoints": 50, + "reverseYBuckets": false, "targets": [ { "exemplar": true, - "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{handler=\"/indexer/api/v1/index_report\", method=\"post\"}[$rate]))", - "instant": false, - "interval": "1", - "legendFormat": "Status {{ code }} ", - "refId": "A" + "expr": "sum(rate(claircore_vulnstore_updatevulnerabilities_duration_seconds_bucket[$rate])) by (le)", + "format": "heatmap", + "hide": false, + "interval": "", + "legendFormat": "{{ le }}", + "refId": "E" } ], - "title": "Create Index Report Requests / $rate", - "type": "timeseries" + "title": "Database latency update vulnerabilities (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null }, { "datasource": "$datasource", - "description": "", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { - "axisLabel": "Seconds", + "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 30, + "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, @@ -1523,12 +1617,12 @@ "overrides": [] }, "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 59 + "h": 7, + "w": 24, + "x": 0, + "y": 49 }, - "id": 14, + "id": 43, "options": { "legend": { "calcs": [], @@ -1542,16 +1636,383 @@ "targets": [ { "exemplar": true, - "expr": "histogram_quantile($apiquantile, rate(clair_http_indexerv1_request_duration_seconds_bucket{method=\"post\", handler=\"/indexer/api/v1/index_report\"}[$rate]))", - "instant": false, - "interval": "1", - "legendFormat": "", - "refId": "A" + "expr": "rate(claircore_vulnstore_gc_total[$rate])", + "hide": false, + "interval": "", + "legendFormat": "GarbageCollection: {{instance }}: {{ query }}", + "refId": "E" } ], - "title": "Create Index Report Request Latency (p$apiquantile)", + "title": "Database query count GC (matcher)", "type": "timeseries" }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 56 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 44, + "legend": { + "show": false + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(rate(claircore_vulnstore_gc_duration_seconds_bucket{query=\"updateOps\"}[$rate])) by (le)", + "format": "heatmap", + "hide": false, + "interval": "", + "legendFormat": "{{ le }}", + "refId": "F" + } + ], + "title": "Database query duration GC - updateOps (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 56 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 59, + "legend": { + "show": false + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(rate(claircore_vulnstore_gc_duration_seconds_bucket{query=\"deleteVulns\"}[$rate])) by (le)", + "format": "heatmap", + "hide": false, + "interval": "", + "legendFormat": "{{ le }}", + "refId": "F" + } + ], + "title": "Database query duration GC - deleteVulns (matcher)", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": 0, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, + { + "collapsed": true, + "datasource": null, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 64 + }, + "id": 61, + "panels": [ + { + "datasource": "$datasource", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 20 + }, + "id": 36, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "rate(clair_notifier_created_total[$rate])", + "interval": "", + "legendFormat": "CreatedTotal: {{instance }}: {{ query }}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "rate(clair_notifier_failed_total[$rate])", + "hide": false, + "interval": "", + "legendFormat": "NotifierFailed: {{instance }}: {{ query }}", + "refId": "B" + }, + { + "exemplar": true, + "expr": "rate(clair_notifier_putreceipt_total[$rate])", + "hide": false, + "interval": "", + "legendFormat": "NotifierPutReceipt: {{instance }}: {{ query }}", + "refId": "C" + }, + { + "exemplar": true, + "expr": "rate(clair_notifier_receiptbyuoid_total[$rate])", + "hide": false, + "interval": "", + "legendFormat": "NotifierReceiptByUOID: {{instance }}: {{ query }}", + "refId": "D" + } + ], + "title": "Database query count (notifier)", + "type": "timeseries" + }, + { + "datasource": "$datasource", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 30, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 20 + }, + "id": 38, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" + }, + "tooltip": { + "mode": "single" + } + }, + "targets": [ + { + "exemplar": true, + "expr": "histogram_quantile($dbquantile, rate(clair_notifier_created_duration_seconds_bucket[$rate]))", + "interval": "", + "legendFormat": "CreatedTotal: {{instance }}: {{ query }}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "histogram_quantile($dbquantile, rate(clair_notifier_failed_duration_seconds_bucket[$rate]))", + "hide": false, + "interval": "", + "legendFormat": "NotifierFailed: {{instance }}: {{ query }}", + "refId": "B" + }, + { + "exemplar": true, + "expr": "histogram_quantile($dbquantile, rate(clair_notifier_putreceipt_duration_seconds_bucket[$rate]))", + "hide": false, + "interval": "", + "legendFormat": "NotifierPutReceipt: {{instance }}: {{ query }}", + "refId": "C" + }, + { + "exemplar": true, + "expr": "histogram_quantile($dbquantile, rate(clair_notifier_receiptbyuoid_duration_seconds_bucket[$rate]))", + "hide": false, + "interval": "", + "legendFormat": "NotifierReceiptByUOID: {{instance }}: {{ query }}", + "refId": "D" + } + ], + "title": "Database query duration (notifier) (p$dbquantile)", + "type": "timeseries" + } + ], + "title": "Database - Notifier", + "type": "row" + }, + { + "collapsed": false, + "datasource": "$datasource", + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 65 + }, + "id": 2, + "panels": [], + "title": "API Requests", + "type": "row" + }, { "datasource": "$datasource", "fieldConfig": { @@ -1571,7 +2032,7 @@ "tooltip": false, "viz": false }, - "lineInterpolation": "stepBefore", + "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { @@ -1608,9 +2069,9 @@ "h": 8, "w": 12, "x": 0, - "y": 67 + "y": 66 }, - "id": 6, + "id": 4, "options": { "legend": { "calcs": [], @@ -1624,16 +2085,82 @@ "targets": [ { "exemplar": true, - "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{handler=\"/indexer/api/v1/index_state\", method=\"get\"}[$rate]))", + "expr": "sum by (code) (rate(clair_http_matcher_api_v1_vulnerability_report_request_total[$rate]))", "instant": false, "interval": "", - "legendFormat": "Status {{code}}", + "legendFormat": "Status {{ code }} ", "refId": "A" } ], - "title": "Indexer State Requests / $rate", + "title": "Vulnerability Report Requests", "type": "timeseries" }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateOranges", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 66 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 15, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "repeat": null, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(rate(clair_http_matcher_api_v1_vulnerability_report_request_duration_seconds_bucket [5m])) by (le)", + "format": "heatmap", + "instant": false, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{ le }}", + "refId": "A" + } + ], + "title": "Vulnerability Report Request Latency", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "middle", + "yBucketNumber": null, + "yBucketSize": null + }, { "datasource": "$datasource", "fieldConfig": { @@ -1642,18 +2169,18 @@ "mode": "palette-classic" }, "custom": { - "axisLabel": "Seconds", + "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 30, + "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, - "lineInterpolation": "stepBefore", + "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { @@ -1682,18 +2209,17 @@ "value": 80 } ] - }, - "unit": "short" + } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 67 + "x": 0, + "y": 74 }, - "id": 13, + "id": 7, "options": { "legend": { "calcs": [], @@ -1707,16 +2233,81 @@ "targets": [ { "exemplar": true, - "expr": "histogram_quantile($apiquantile, rate(clair_http_indexerv1_request_duration_seconds_bucket{method=\"get\", handler=\"/indexer/api/v1/index_state\"}[$rate]))", + "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{handler=\"/indexer/api/v1/index_report\", method=\"post\"}[$rate]))", "instant": false, - "interval": "", - "legendFormat": "", + "interval": "1", + "legendFormat": "Status {{ code }} ", "refId": "A" } ], - "title": "Indexer State Request Latency (p$apiquantile)", + "title": "Create Index Report Requests", "type": "timeseries" }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateGreys", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 74 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 14, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(increase(clair_http_indexerv1_request_duration_seconds_bucket{method=\"post\", handler=\"/indexer/api/v1/index_report\"} [5m])) by (le)", + "format": "heatmap", + "instant": false, + "interval": "1", + "legendFormat": "{{ le }}", + "refId": "A" + } + ], + "title": "Create Index Report Request Latency", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, { "datasource": "$datasource", "fieldConfig": { @@ -1736,7 +2327,7 @@ "tooltip": false, "viz": false }, - "lineInterpolation": "linear", + "lineInterpolation": "stepBefore", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { @@ -1773,9 +2364,9 @@ "h": 8, "w": 12, "x": 0, - "y": 75 + "y": 82 }, - "id": 5, + "id": 6, "options": { "legend": { "calcs": [], @@ -1789,16 +2380,81 @@ "targets": [ { "exemplar": true, - "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{method=\"get\", handler=\"/indexer/api/v1/index_report/:digest\"}[$rate]))", + "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{handler=\"/indexer/api/v1/index_state\", method=\"get\"}[$rate]))", "instant": false, - "interval": "1", - "legendFormat": "Status {{ code }} ", + "interval": "", + "legendFormat": "Status {{code}}", "refId": "A" } ], - "title": "Index Report Requests / $rate", + "title": "Indexer State Requests", "type": "timeseries" }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateGreys", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 82 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 47, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(increase(clair_http_indexerv1_request_duration_seconds_bucket{method=\"get\", handler=\"/indexer/api/v1/index_state\"} [5m])) by (le)", + "format": "heatmap", + "instant": false, + "interval": "1", + "legendFormat": "{{ le }}", + "refId": "A" + } + ], + "title": "Indexer State Request Latency", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, { "datasource": "$datasource", "fieldConfig": { @@ -1807,11 +2463,11 @@ "mode": "palette-classic" }, "custom": { - "axisLabel": "Seconds", + "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 30, + "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, @@ -1854,10 +2510,10 @@ "gridPos": { "h": 8, "w": 12, - "x": 12, - "y": 75 + "x": 0, + "y": 90 }, - "id": 16, + "id": 5, "options": { "legend": { "calcs": [], @@ -1871,16 +2527,81 @@ "targets": [ { "exemplar": true, - "expr": "histogram_quantile($apiquantile, rate(clair_http_indexerv1_request_duration_seconds_bucket{method=\"get\", handler=\"/indexer/api/v1/index_report/:digest\"}[$rate]))", + "expr": "sum by (code) (rate(clair_http_indexerv1_request_total{method=\"get\", handler=\"/indexer/api/v1/index_report/:digest\"}[$rate]))", "instant": false, "interval": "1", - "legendFormat": "", + "legendFormat": "Status {{ code }} ", "refId": "A" } ], - "title": "Index Report Request Latency (p$apiquantile)", + "title": "Index Report Requests", "type": "timeseries" }, + { + "cards": { + "cardPadding": null, + "cardRound": null + }, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateGreys", + "exponent": 0.5, + "mode": "opacity" + }, + "dataFormat": "tsbuckets", + "datasource": "$datasource", + "description": "", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 90 + }, + "heatmap": {}, + "hideZeroBuckets": false, + "highlightCards": true, + "id": 46, + "legend": { + "show": true + }, + "maxDataPoints": 50, + "reverseYBuckets": false, + "targets": [ + { + "exemplar": true, + "expr": "sum(increase(clair_http_indexerv1_request_duration_seconds_bucket{method=\"get\", handler=\"/indexer/api/v1/index_report/:digest\"} [5m])) by (le)", + "format": "heatmap", + "instant": false, + "interval": "1", + "legendFormat": "{{ le }}", + "refId": "A" + } + ], + "title": "Index Report Request Latency", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "xBucketNumber": null, + "xBucketSize": null, + "yAxis": { + "decimals": null, + "format": "s", + "logBase": 1, + "max": null, + "min": null, + "show": true, + "splitFactor": null + }, + "yBucketBound": "auto", + "yBucketNumber": null, + "yBucketSize": null + }, { "datasource": "$datasource", "fieldConfig": { @@ -1937,7 +2658,7 @@ "h": 8, "w": 12, "x": 0, - "y": 83 + "y": 98 }, "id": 41, "options": { @@ -1960,7 +2681,7 @@ "refId": "A" } ], - "title": "Get Notifications Requests / $rate", + "title": "Get Notifications Requests", "type": "timeseries" }, { @@ -2019,7 +2740,7 @@ "h": 8, "w": 12, "x": 12, - "y": 83 + "y": 98 }, "id": 40, "options": { @@ -2101,7 +2822,7 @@ "h": 8, "w": 12, "x": 0, - "y": 91 + "y": 106 }, "id": 39, "options": { @@ -2124,7 +2845,7 @@ "refId": "A" } ], - "title": "Delete Notification Requests / $rate", + "title": "Delete Notification Requests", "type": "timeseries" }, { @@ -2183,7 +2904,7 @@ "h": 8, "w": 12, "x": 12, - "y": 91 + "y": 106 }, "id": 42, "options": { @@ -2216,7 +2937,7 @@ "h": 1, "w": 24, "x": 0, - "y": 99 + "y": 114 }, "id": 9, "panels": [], @@ -2279,7 +3000,7 @@ "h": 8, "w": 12, "x": 0, - "y": 100 + "y": 115 }, "id": 11, "options": { @@ -2361,7 +3082,7 @@ "h": 8, "w": 12, "x": 12, - "y": 100 + "y": 115 }, "id": 12, "options": { @@ -2387,8 +3108,8 @@ "type": "timeseries" } ], - "refresh": "", - "schemaVersion": 30, + "refresh": false, + "schemaVersion": 32, "style": "dark", "tags": [], "templating": { @@ -2518,9 +3239,9 @@ { "allValue": null, "current": { - "selected": false, - "text": "0.20", - "value": "0.20" + "selected": true, + "text": "0.95", + "value": "0.95" }, "description": null, "error": null, @@ -2531,7 +3252,7 @@ "name": "apiquantile", "options": [ { - "selected": false, + "selected": true, "text": "0.95", "value": "0.95" }, @@ -2546,7 +3267,7 @@ "value": "0.5" }, { - "selected": true, + "selected": false, "text": "0.20", "value": "0.20" }, @@ -2564,8 +3285,8 @@ { "current": { "selected": false, - "text": "Prometheus", - "value": "Prometheus" + "text": "clairp01ue1-prometheus", + "value": "clairp01ue1-prometheus" }, "description": null, "error": null, @@ -2585,7 +3306,7 @@ ] }, "time": { - "from": "now-1h", + "from": "now-6h", "to": "now" }, "timepicker": {}, @@ -2593,4 +3314,4 @@ "title": "Clair V4", "uid": "I1JBFlRnz", "version": 1 -} \ No newline at end of file +}