diff --git a/deploy/dashboards/grafana-dashboard-quay-slo.configmap.yaml b/deploy/dashboards/grafana-dashboard-quay-slo.configmap.yaml index 230f7a7cf4..9d3d43b1c5 100644 --- a/deploy/dashboards/grafana-dashboard-quay-slo.configmap.yaml +++ b/deploy/dashboards/grafana-dashboard-quay-slo.configmap.yaml @@ -30,30 +30,63 @@ data: "links": [], "liveNow": false, "panels": [ + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 49, + "panels": [], + "title": "Push/Pull", + "type": "row" + }, { "datasource": { "type": "prometheus", "uid": "${catchpoint_datasource}" }, - "description": "", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "palette-classic" }, - "decimals": 2, - "mappings": [ - { - "options": { - "NaN": { - "index": 0, - "text": "0" - } - }, - "type": "value" + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "success rate", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 4, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" } - ], - "noValue": "0", + }, + "links": [], + "mappings": [], "thresholds": { "mode": "absolute", "steps": [ @@ -63,37 +96,34 @@ data: }, { "color": "red", - "value": 80 + "value": 95 } ] }, - "unit": "percent" + "unit": "percentunit" }, "overrides": [] }, "gridPos": { - "h": 4, - "w": 5, + "h": 9, + "w": 12, "x": 0, - "y": 0 + "y": 1 }, - "id": 34, + "id": 79, "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true }, - "text": {}, - "textMode": "auto" + "tooltip": { + "mode": "multi", + "sort": "none" + } }, - "pluginVersion": "9.3.8", + "pluginVersion": "9.0.3", "targets": [ { "datasource": { @@ -101,11 +131,13 @@ data: "uid": "${catchpoint_datasource}" }, "editorMode": "code", - "expr": "99.9", + "exemplar": false, + "expr": "0.999", "hide": false, - "legendFormat": "pull target", + "instant": false, + "legendFormat": "Target", "range": true, - "refId": "pull target" + "refId": "F" }, { "datasource": { @@ -113,13 +145,22 @@ data: "uid": "${catchpoint_datasource}" }, "editorMode": "code", - "exemplar": false, - "expr": "(sum(increase(catchpoint_checks_total{probe=\"quayio-pull-monitor-v2\"}[$rate]) - increase(catchpoint_check_failures_total{probe=\"quayio-pull-monitor-v2\"}[$rate])) * 100)\n/\nsum(increase(catchpoint_checks_total{probe=\"quayio-pull-monitor-v2\"}[$rate])) > 0", + "expr": "1 - (\n sum(increase(catchpoint_check_failures_total{probe=\"quayio-push-pull-monitor-v2-na\"}[$__range]))\n /\n sum(increase(catchpoint_checks_total{probe=\"quayio-push-pull-monitor-v2-na\"}[$__range]))\n)\n", + "legendFormat": "North America", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${catchpoint_datasource}" + }, + "editorMode": "code", + "expr": "1 - (\n sum(increase(catchpoint_check_failures_total{probe=\"quayio-push-pull-monitor-v2-sa\"}[$__range]))\n /\n sum(increase(catchpoint_checks_total{probe=\"quayio-push-pull-monitor-v2-sa\"}[$__range]))\n)", "hide": false, - "instant": false, - "legendFormat": "pull availability", + "legendFormat": "South America", "range": true, - "refId": "pull availability" + "refId": "B" }, { "datasource": { @@ -127,15 +168,39 @@ data: "uid": "${catchpoint_datasource}" }, "editorMode": "code", - "expr": "0.1 - (\n (sum(increase(catchpoint_check_failures_total{probe=\"quayio-pull-monitor-v2\"}[$rate])) * 100)\n /\n sum(increase(catchpoint_checks_total{probe=\"quayio-pull-monitor-v2\"}[$rate]))\n)", + "expr": "1 - (\n sum(increase(catchpoint_check_failures_total{probe=\"quayio-push-pull-monitor-v2-af\"}[$__range]))\n / \n sum(increase(catchpoint_checks_total{probe=\"quayio-push-pull-monitor-v2-af\"}[$__range]))\n)", "hide": false, - "legendFormat": "error budget left", + "legendFormat": "Africa", "range": true, - "refId": "error budget left pull" + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${catchpoint_datasource}" + }, + "editorMode": "code", + "expr": "1 - (\n sum(increase(catchpoint_check_failures_total{probe=\"quayio-push-pull-monitor-v2-as\"}[$__range]))\n / \n sum(increase(catchpoint_checks_total{probe=\"quayio-push-pull-monitor-v2-as\"}[$__range]))\n)", + "hide": false, + "legendFormat": "Asia", + "range": true, + "refId": "D" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${catchpoint_datasource}" + }, + "editorMode": "code", + "expr": "1 - (\n sum(increase(catchpoint_check_failures_total{probe=\"quayio-push-pull-monitor-v2-oc\"}[$__range]))\n / \n sum(increase(catchpoint_checks_total{probe=\"quayio-push-pull-monitor-v2-oc\"}[$__range]))\n)", + "hide": false, + "legendFormat": "Oceania", + "range": true, + "refId": "E" } ], - "title": "Pull Operations", - "type": "stat" + "title": "Push-Pull Monitor by Region", + "type": "timeseries" }, { "datasource": { @@ -146,21 +211,42 @@ data: "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "palette-classic" }, - "decimals": 2, - "mappings": [ - { - "options": { - "NaN": { - "index": 0, - "text": "0" - } - }, - "type": "value" + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" } - ], - "noValue": "0", + }, + "links": [], + "mappings": [], "thresholds": { "mode": "absolute", "steps": [ @@ -174,33 +260,30 @@ data: } ] }, - "unit": "percent" + "unit": "none" }, "overrides": [] }, "gridPos": { - "h": 4, - "w": 5, - "x": 5, - "y": 0 + "h": 9, + "w": 6, + "x": 12, + "y": 1 }, - "id": 33, + "id": 30, "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true }, - "text": {}, - "textMode": "auto" + "tooltip": { + "mode": "multi", + "sort": "none" + } }, - "pluginVersion": "9.3.8", + "pluginVersion": "9.0.3", "targets": [ { "datasource": { @@ -208,23 +291,10 @@ data: "uid": "${catchpoint_datasource}" }, "editorMode": "code", - "expr": "99.5", - "hide": false, - "legendFormat": "push target", - "range": true, - "refId": "push target" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${catchpoint_datasource}" - }, - "editorMode": "code", - "expr": "(sum(increase(catchpoint_checks_total{probe=\"quayio-push-monitor-v2\"}[$rate]) - increase(catchpoint_check_failures_total{probe=\"quayio-push-monitor-v2\"}[$rate])) * 100)\n/\nsum(increase(catchpoint_checks_total{probe=\"quayio-push-monitor-v2\"}[$rate])) > 0", - "hide": false, - "legendFormat": "push availability", + "expr": "1 - sum(rate(catchpoint_check_failures_total{probe=\"quayio-push-monitor-v2\"}[$__range])) / (sum(rate(catchpoint_checks_total{probe=\"quayio-push-monitor-v2\"}[$__range])) * 0.0001)", + "legendFormat": "Error budget remaining", "range": true, - "refId": "push availability" + "refId": "A" }, { "datasource": { @@ -232,131 +302,137 @@ data: "uid": "${catchpoint_datasource}" }, "editorMode": "code", - "expr": "0.5 - (\n (sum(increase(catchpoint_check_failures_total{probe=\"quayio-push-monitor-v2\"}[$rate])) * 100)\n /\n sum(increase(catchpoint_checks_total{probe=\"quayio-push-monitor-v2\"}[$rate]))\n)", + "expr": "(sum(rate(catchpoint_check_failures_total{probe=\"quayio-push-monitor-v2\"}[$__range]))) / sum(rate(catchpoint_checks_total{probe=\"quayio-push-monitor-v2\"}[$__range])) / 0.0001", "hide": false, - "legendFormat": "error budget left", + "legendFormat": "Error budget burn rate", "range": true, - "refId": "A" + "refId": "B" } ], - "title": "Push Operations", - "type": "stat" + "title": "Push Error Budget Burn Rate", + "type": "timeseries" }, { "datasource": { "type": "prometheus", - "uid": "${datasource}" + "uid": "${catchpoint_datasource}" }, "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" - }, - "decimals": 2, - "mappings": [ - { - "options": { - "NaN": { - "index": 0, - "text": "0" - } - }, - "type": "value" - } - ], - "min": 0, - "thresholds": { - "mode": "percentage", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "mode": "palette-classic" }, - "unit": "percentunit" + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" }, "overrides": [] }, "gridPos": { - "h": 4, - "w": 5, - "x": 10, - "y": 0 + "h": 9, + "w": 6, + "x": 18, + "y": 1 }, - "id": 45, - "links": [], + "id": 31, "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true }, - "textMode": "auto" + "tooltip": { + "mode": "multi", + "sort": "none" + } }, - "pluginVersion": "9.3.8", + "pluginVersion": "9.0.3", "targets": [ { "datasource": { "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "0.995", - "hide": false, - "legendFormat": "target availability", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "uid": "${catchpoint_datasource}" }, "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repository\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repository\",method=\"GET\"}[$rate])) > 0", - "legendFormat": "GET repository", + "expr": "1 - sum(rate(catchpoint_check_failures_total{probe=\"quayio-pull-monitor-v2\"}[$__range])) / (sum(rate(catchpoint_checks_total{probe=\"quayio-pull-monitor-v2\"}[$__range])) * 0.0001)", + "legendFormat": "Error budget remaining", "range": true, "refId": "A" }, { "datasource": { "type": "prometheus", - "uid": "${datasource}" + "uid": "${catchpoint_datasource}" }, "editorMode": "code", - "expr": "0.005 - (\n (sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repository\",method=\"GET\"}[$rate])) - sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repository\", status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate])))\n /\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repository\",method=\"GET\"}[$rate]))\n)", + "expr": "(sum(rate(catchpoint_check_failures_total{probe=\"quayio-pull-monitor-v2\"}[$__range]))) / sum(rate(catchpoint_checks_total{probe=\"quayio-pull-monitor-v2\"}[$__range])) / 0.0001", "hide": false, - "legendFormat": "error budget ", + "legendFormat": "Error budget burn rate", "range": true, - "refId": "C" + "refId": "B" } ], - "title": "repository endpoint (v1 Quay API)", - "transformations": [], - "type": "stat" + "title": "Pull Error Budget Burn Rate", + "type": "timeseries" }, { "datasource": { - "type": "datasource", - "uid": "-- Mixed --" + "type": "prometheus", + "uid": "${catchpoint_datasource}" }, + "description": "", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "thresholds" }, - "decimals": 2, + "decimals": 3, "mappings": [ { "options": { @@ -373,12 +449,16 @@ data: "mode": "absolute", "steps": [ { - "color": "green", + "color": "red", "value": null }, { - "color": "red", - "value": 80 + "color": "#EAB839", + "value": 0.9995 + }, + { + "color": "green", + "value": 0.9999 } ] }, @@ -388,15 +468,14 @@ data: }, "gridPos": { "h": 4, - "w": 5, - "x": 15, - "y": 0 + "w": 6, + "x": 0, + "y": 10 }, - "id": 63, - "links": [], + "id": 34, "options": { "colorMode": "value", - "graphMode": "none", + "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { @@ -406,68 +485,81 @@ data: "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "9.3.8", + "pluginVersion": "10.4.1", "targets": [ { "datasource": { "type": "prometheus", - "uid": "${datasource}" + "uid": "${catchpoint_datasource}" }, "editorMode": "code", - "expr": "0.995", + "exemplar": false, + "expr": "1 - (sum(rate(catchpoint_check_failures_total{probe=\"quayio-pull-monitor-v2\"}[$__range])) / sum(rate(catchpoint_checks_total{probe=\"quayio-pull-monitor-v2\"}[$__range])))\n", "hide": false, - "legendFormat": "target availability", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repositorymanifestsecurity\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repositorymanifestsecurity\",method=\"GET\"}[$rate]))", - "legendFormat": "GET security", + "instant": false, + "legendFormat": "Pull SLI", "range": true, - "refId": "current_rate" + "refId": "pull availability" }, { "datasource": { "type": "prometheus", - "uid": "${datasource}" + "uid": "${catchpoint_datasource}" }, "editorMode": "code", - "expr": "0.005 - (\n (sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repositorymanifestsecurity\",method=\"GET\"}[$rate])) - sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repositorymanifestsecurity\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate])))\n /\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repositorymanifestsecurity\",method=\"GET\"}[$rate]))\n)", + "expr": "0.99999 - (1 - (sum(rate(catchpoint_check_failures_total{probe=\"quayio-pull-monitor-v2\"}[$__range])) / sum(rate(catchpoint_checks_total{probe=\"quayio-pull-monitor-v2\"}[$__range]))))", "hide": false, - "legendFormat": "error budget", + "legendFormat": "Error budget left", "range": true, - "refId": "C" + "refId": "error budget left pull" } ], - "title": "security endpoint (v1 Quay API)", - "transformations": [], + "title": "Pull Operations", "type": "stat" }, { "datasource": { "type": "prometheus", - "uid": "${datasource}" + "uid": "${catchpoint_datasource}" }, + "description": "", "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "thresholds" }, - "decimals": 2, - "mappings": [], + "decimals": 3, + "mappings": [ + { + "options": { + "NaN": { + "index": 0, + "text": "0" + } + }, + "type": "value" + } + ], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", + "color": "red", "value": null + }, + { + "color": "#EAB839", + "value": 0.9995 + }, + { + "color": "green", + "value": 0.9999 } ] }, @@ -477,15 +569,14 @@ data: }, "gridPos": { "h": 4, - "w": 5, - "x": 0, - "y": 4 + "w": 6, + "x": 6, + "y": 10 }, - "id": 65, - "links": [], + "id": 33, "options": { "colorMode": "value", - "graphMode": "none", + "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { @@ -495,49 +586,39 @@ data: "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "text": {}, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "9.3.8", + "pluginVersion": "10.4.1", "targets": [ { "datasource": { "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "0.999\n", - "hide": false, - "legendFormat": "target", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "uid": "${catchpoint_datasource}" }, "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.download_blob\", status!~\"5[0-9][0-9]\", method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.download_blob\", method=\"GET\"}[$rate]))", + "expr": "1 - (sum(rate(catchpoint_check_failures_total{probe=\"quayio-pull-monitor-v2\"}[$__range])) / sum(rate(catchpoint_checks_total{probe=\"quayio-pull-monitor-v2\"}[$__range])))", "hide": false, - "legendFormat": "GET blob", + "legendFormat": "Push SLI", "range": true, - "refId": "B" + "refId": "push availability" }, { "datasource": { "type": "prometheus", - "uid": "${datasource}" + "uid": "${catchpoint_datasource}" }, "editorMode": "code", - "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.download_blob\", status!~\"5[0-9][0-9]\", method=\"GET\"}[$rate]))\n /\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.download_blob\", method=\"GET\"}[$rate]))\n) - 0.999", + "expr": "0.99995 - (1 - (sum(rate(catchpoint_check_failures_total{probe=\"quayio-pull-monitor-v2\"}[$__range])) / sum(rate(catchpoint_checks_total{probe=\"quayio-pull-monitor-v2\"}[$__range]))))", "hide": false, - "legendFormat": "error budget", + "legendFormat": "error budget left", "range": true, - "refId": "C" + "refId": "A" } ], - "title": "GET blob success rate (v2 Registry API)", - "transformations": [], + "title": "Push Operations", "type": "stat" }, { @@ -548,9 +629,8 @@ data: "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "thresholds" }, - "decimals": 2, "mappings": [], "thresholds": { "mode": "absolute", @@ -558,24 +638,27 @@ data: { "color": "green", "value": null + }, + { + "color": "red", + "value": 80 } ] }, - "unit": "percentunit" + "unit": "s" }, "overrides": [] }, "gridPos": { "h": 4, - "w": 5, - "x": 5, - "y": 4 + "w": 6, + "x": 12, + "y": 10 }, - "id": 66, - "links": [], + "id": 42, "options": { "colorMode": "value", - "graphMode": "none", + "graphMode": "area", "justifyMode": "auto", "orientation": "auto", "reduceOptions": { @@ -585,9 +668,11 @@ data: "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "9.3.8", + "pluginVersion": "10.4.1", "targets": [ { "datasource": { @@ -595,52 +680,24 @@ data: "uid": "${datasource}" }, "editorMode": "code", - "expr": "0.995", - "hide": false, - "legendFormat": "target", + "expr": "sum(increase(quay_build_queue_duration_seconds_sum[$rate]))\n/\nsum(increase(quay_build_queue_duration_seconds_count[$rate])) > 0", "range": true, "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.start_blob_upload\", method=\"POST\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.monolithic_upload_or_last_chunk\", method=\"PUT\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.upload_chunk\", method=\"PATCH\", status!~\"5[0-9][0-9]\"}[$rate]))\n)\n/\n(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.start_blob_upload\", method=\"POST\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.monolithic_upload_or_last_chunk\", method=\"PUT\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.upload_chunk\", method=\"PATCH\"}[$rate]))\n)", - "hide": false, - "legendFormat": "upload blob", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "( \n (\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.start_blob_upload\", method=\"POST\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.monolithic_upload_or_last_chunk\", method=\"PUT\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.upload_chunk\", method=\"PATCH\", status!~\"5[0-9][0-9]\"}[$rate]))\n )\n /\n (\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.start_blob_upload\", method=\"POST\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.monolithic_upload_or_last_chunk\", method=\"PUT\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.upload_chunk\", method=\"PATCH\"}[$rate]))\n )\n) - 0.995", - "hide": false, - "legendFormat": "error budget", - "range": true, - "refId": "C" } ], - "title": "upload blob success rate (v2 Registry API)", - "transformations": [], + "title": "Average Time in Build Queue", "type": "stat" }, { "datasource": { - "type": "datasource", - "uid": "-- Mixed --" + "type": "prometheus", + "uid": "${datasource}" }, "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "thresholds" }, - "decimals": 2, "mappings": [], "thresholds": { "mode": "absolute", @@ -661,12 +718,11 @@ data: }, "gridPos": { "h": 4, - "w": 5, - "x": 10, - "y": 4 + "w": 6, + "x": 18, + "y": 10 }, - "id": 46, - "links": [], + "id": 69, "options": { "colorMode": "value", "graphMode": "none", @@ -674,14 +730,16 @@ data: "orientation": "auto", "reduceOptions": { "calcs": [ - "lastNotNull" + "mean" ], "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "9.3.8", + "pluginVersion": "10.4.1", "targets": [ { "datasource": { @@ -691,7 +749,7 @@ data: "editorMode": "code", "expr": "0.995", "hide": false, - "legendFormat": "target availability", + "legendFormat": "target", "range": true, "refId": "B" }, @@ -701,10 +759,10 @@ data: "uid": "${datasource}" }, "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.listrepositorytags\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.listrepositorytags\",method=\"GET\"}[$rate]))", - "legendFormat": "GET tags", + "expr": "sum(increase(quay_build_jobs_total{success=\"true\"}[$rate]))\n/\nsum(increase(quay_build_jobs_total[$rate])) > 0", + "legendFormat": "success %", "range": true, - "refId": "current_rate" + "refId": "A" }, { "datasource": { @@ -712,30 +770,60 @@ data: "uid": "${datasource}" }, "editorMode": "code", - "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.listrepositorytags\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n /\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.listrepositorytags\",method=\"GET\"}[$rate]))\n)\n- 0.995", + "expr": "0.005 - (\n (sum(increase(quay_build_jobs_total[$rate])) - sum(increase(quay_build_jobs_total{success=\"true\"}[$rate])))\n /\n sum(increase(quay_build_jobs_total[$rate]))\n) != 0", "hide": false, "legendFormat": "error budget", "range": true, "refId": "C" } ], - "title": "tags endpoint (v1 Quay API)", - "transformations": [], + "title": "Build Success", "type": "stat" }, { "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" }, "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "palette-classic" }, - "decimals": 2, - "mappings": [], - "thresholds": { + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": 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": [ { @@ -743,90 +831,177 @@ data: "value": null }, { - "color": "#F2495C", - "value": "" + "color": "red", + "value": 80 } ] }, - "unit": "percentunit" + "unit": "short" }, "overrides": [] }, "gridPos": { - "h": 4, - "w": 5, - "x": 15, - "y": 4 + "h": 8, + "w": 24, + "x": 0, + "y": 14 }, - "id": 44, - "links": [], + "id": 54, "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true }, - "textMode": "auto" + "tooltip": { + "mode": "single", + "sort": "none" + } }, - "pluginVersion": "9.3.8", + "pluginVersion": "10.4.1", "targets": [ { "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" }, - "editorMode": "code", - "expr": "0.995", + "dimensions": { + "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" + }, + "expression": "", + "id": "", + "label": "HTTP 2XX", + "matchExact": true, + "metricEditorMode": 0, + "metricName": "HTTPCode_Target_2XX_Count", + "metricQueryType": 0, + "namespace": "AWS/ApplicationELB", + "period": "", + "queryMode": "Metrics", + "refId": "A", + "region": "default", + "sqlExpression": "", + "statistic": "Sum" + }, + { + "datasource": { + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" + }, + "dimensions": { + "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" + }, + "expression": "", "hide": false, - "legendFormat": "target availability", - "range": true, - "refId": "B" + "id": "", + "label": "HTTP 3XX", + "matchExact": true, + "metricEditorMode": 0, + "metricName": "HTTPCode_Target_3XX_Count", + "metricQueryType": 0, + "namespace": "AWS/ApplicationELB", + "period": "", + "queryMode": "Metrics", + "refId": "B", + "region": "default", + "sqlExpression": "", + "statistic": "Sum" }, { "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" }, - "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.user\",status!~\"5[0-9[0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.user\",method=\"GET\"}[$rate]))", - "legendFormat": "GET user", - "range": true, - "refId": "A" + "dimensions": { + "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" + }, + "expression": "", + "hide": false, + "id": "", + "label": "HTTP 4XX", + "matchExact": true, + "metricEditorMode": 0, + "metricName": "HTTPCode_Target_4XX_Count", + "metricQueryType": 0, + "namespace": "AWS/ApplicationELB", + "period": "", + "queryMode": "Metrics", + "refId": "C", + "region": "default", + "sqlExpression": "", + "statistic": "Sum" }, { "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" }, - "editorMode": "code", - "expr": "(\n \n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.user\",status!~\"5[0-9[0-9]\",method=\"GET\"}[$rate]))\n /\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.user\",method=\"GET\"}[$rate]))\n\n)\n-\n0.995", + "dimensions": { + "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" + }, + "expression": "", "hide": false, - "legendFormat": "error budget", - "range": true, - "refId": "C" + "id": "", + "label": "HTTP 5XX", + "matchExact": true, + "metricEditorMode": 0, + "metricName": "HTTPCode_Target_5XX_Count", + "metricQueryType": 0, + "namespace": "AWS/ApplicationELB", + "period": "", + "queryMode": "Metrics", + "refId": "D", + "region": "default", + "sqlExpression": "", + "statistic": "Sum" } ], - "title": "users endpoint (v1 Quay API)", - "transformations": [], - "type": "stat" + "title": "AWS ALB response status", + "type": "timeseries" }, { "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" }, "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } }, - "decimals": 2, "mappings": [], "thresholds": { "mode": "absolute", @@ -834,6 +1009,10 @@ data: { "color": "green", "value": null + }, + { + "color": "red", + "value": 80 } ] }, @@ -842,69 +1021,151 @@ data: "overrides": [] }, "gridPos": { - "h": 4, - "w": 5, + "h": 8, + "w": 24, "x": 0, - "y": 8 + "y": 22 }, - "id": 67, - "links": [], + "id": 80, "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true }, - "textMode": "auto" + "tooltip": { + "mode": "single", + "sort": "none" + } }, - "pluginVersion": "9.3.8", + "pluginVersion": "10.4.1", "targets": [ { "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "type": "cloudwatch", + "uid": "PD8A2C6F0E4302668" }, - "editorMode": "code", - "expr": "0.995", + "dimensions": { + "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" + }, + "expression": "", "hide": false, - "legendFormat": "target", - "range": true, - "refId": "A" + "id": "", + "label": "", + "logGroups": [], + "matchExact": true, + "metricEditorMode": 0, + "metricName": "HTTPCode_Target_5XX_Count", + "metricQueryType": 0, + "namespace": "AWS/ApplicationELB", + "period": "", + "queryMode": "Metrics", + "refId": "A", + "region": "default", + "sql": { + "from": { + "property": { + "name": "AWS/ApplicationELB", + "type": "string" + }, + "type": "property" + }, + "select": { + "name": "SUM", + "parameters": [ + { + "name": "HTTPCode_Target_5XX_Count", + "type": "functionParameter" + } + ], + "type": "function" + }, + "where": { + "expressions": [ + { + "operator": { + "name": "=", + "value": "app/quayio-production-alb01/dd2a8a128b2029c6" + }, + "property": { + "name": "LoadBalancer", + "type": "string" + }, + "type": "operator" + } + ], + "type": "and" + } + }, + "sqlExpression": "SELECT SUM(HTTPCode_Target_5XX_Count) FROM \"AWS/ApplicationELB\" WHERE LoadBalancer = 'app/quayio-production-alb01/dd2a8a128b2029c6'", + "statistic": "Sum" }, { "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" }, - "editorMode": "code", - "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_tagname\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_digest\",status!~\"5[0-9][0-9]\"}[$rate]))\n)\n/ \n(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_tagname\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_digest\"}[$rate]))\n)", - "hide": false, - "legendFormat": "upload manifest", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "dimensions": { + "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" }, - "editorMode": "code", - "expr": "( \n (\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_tagname\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_digest\",status!~\"5[0-9][0-9]\"}[$rate]))\n )\n / \n (\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_tagname\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_digest\"}[$rate]))\n )\n) - 0.995", + "expression": "", "hide": false, - "legendFormat": "error budget", - "range": true, - "refId": "C" + "id": "", + "label": "", + "logGroups": [], + "matchExact": true, + "metricEditorMode": 0, + "metricName": "RequestCount", + "metricQueryType": 0, + "namespace": "AWS/ApplicationELB", + "period": "", + "queryMode": "Metrics", + "refId": "B", + "region": "default", + "sql": { + "select": { + "name": "AVG", + "type": "function" + } + }, + "statistic": "Sum" } ], - "title": "upload manifest success rate (v2 Registry API)", - "transformations": [], - "type": "stat" + "title": "ALB 5xx Errors", + "transformations": [ + { + "id": "calculateField", + "options": { + "alias": "Target 5XX response rate", + "binary": { + "left": "HTTPCode_Target_5XX_Count", + "operator": "/", + "right": "RequestCount" + }, + "mode": "binary", + "reduce": { + "include": [], + "reducer": "sum" + }, + "replaceFields": true + } + } + ], + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 30 + }, + "id": 53, + "panels": [], + "title": "v1 Quay API", + "type": "row" }, { "datasource": { @@ -914,46 +1175,110 @@ data: "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisGridShow": true, + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 3, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } }, - "decimals": 2, "mappings": [], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null + }, + { + "color": "red", + "value": 80 } ] }, "unit": "percentunit" }, - "overrides": [] + "overrides": [ + { + "__systemRef": "hideSeriesFrom", + "matcher": { + "id": "byNames", + "options": { + "mode": "exclude", + "names": [ + "GET api.repository" + ], + "prefix": "All except:", + "readOnly": true + } + }, + "properties": [ + { + "id": "custom.hideFrom", + "value": { + "legend": false, + "tooltip": false, + "viz": true + } + } + ] + } + ] }, "gridPos": { - "h": 4, - "w": 5, - "x": 5, - "y": 8 + "h": 10, + "w": 24, + "x": 0, + "y": 31 }, - "id": 47, - "links": [], + "id": 43, "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { + "legend": { "calcs": [ - "lastNotNull" + "mean", + "min", + "max", + "last" ], - "fields": "", - "values": false + "displayMode": "table", + "placement": "bottom", + "showLegend": true }, - "textMode": "auto" + "tooltip": { + "mode": "single", + "sort": "none" + } }, - "pluginVersion": "9.3.8", + "pluginVersion": "9.0.3", "targets": [ { "datasource": { @@ -961,9 +1286,8 @@ data: "uid": "${datasource}" }, "editorMode": "code", - "expr": "0.999\n", - "hide": false, - "legendFormat": "target", + "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.user\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.user\",method=\"GET\"}[$rate]))", + "legendFormat": "GET api.user", "range": true, "refId": "A" }, @@ -973,9 +1297,9 @@ data: "uid": "${datasource}" }, "editorMode": "code", - "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_tagname\", status!~\"5[0-9][0-9]\"}[5m]))\n +\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_digest\", status!~\"5[0-9][0-9]\"}[5m]))\n)\n/\n(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_digest\"}[5m]))\n +\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_tagname\"}[5m]))\n)\n", + "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repository\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repository\",method=\"GET\"}[$rate]))", "hide": false, - "legendFormat": "GET manifest", + "legendFormat": "GET api.repository", "range": true, "refId": "B" }, @@ -985,28 +1309,46 @@ data: "uid": "${datasource}" }, "editorMode": "code", - "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_tagname\", status!~\"5[0-9][0-9]\"}[5m]))\n +\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_digest\", status!~\"5[0-9][0-9]\"}[5m]))\n)\n/\n(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_digest\"}[5m]))\n +\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_tagname\"}[5m]))\n) - 0.999\n", + "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.listrepositorytags\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.listrepositorytags\",method=\"GET\"}[$rate]))", "hide": false, - "legendFormat": "error budget", + "legendFormat": "GET api.listrepositorytags", "range": true, "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repositorymanifestsecurity\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repositorymanifestsecurity\",method=\"GET\"}[$rate]))", + "hide": false, + "interval": "", + "legendFormat": "GET api.repositorymanifestsecurity", + "range": true, + "refId": "D" } ], - "title": "GET manifest success rate (v2 Registry API)", - "transformations": [], - "type": "stat" + "title": "API v1 Availability", + "type": "timeseries" }, { "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" }, "fieldConfig": { "defaults": { "color": { - "mode": "continuous-RdYlGr" + "mode": "thresholds" + }, + "custom": { + "align": "center", + "cellOptions": { + "type": "auto" + }, + "inspect": false }, - "decimals": 2, "mappings": [], "thresholds": { "mode": "absolute", @@ -1017,229 +1359,142 @@ data: } ] }, - "unit": "percentunit" + "unit": "short" }, "overrides": [] }, "gridPos": { - "h": 4, - "w": 5, - "x": 10, - "y": 8 + "h": 6, + "w": 24, + "x": 0, + "y": 41 }, - "id": 64, - "links": [], + "id": 55, "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], + "cellHeight": "sm", + "footer": { + "countRows": false, "fields": "", - "values": false + "reducer": [ + "sum" + ], + "show": false }, - "textMode": "auto" + "showHeader": true }, - "pluginVersion": "9.3.8", + "pluginVersion": "10.4.1", "targets": [ { "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" }, - "editorMode": "code", - "expr": "0.999\n", - "hide": false, - "legendFormat": "target", - "range": true, - "refId": "A" + "dimensions": { + "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" + }, + "expression": "", + "id": "", + "label": "HTTP 2XX", + "matchExact": true, + "metricEditorMode": 0, + "metricName": "HTTPCode_Target_2XX_Count", + "metricQueryType": 0, + "namespace": "AWS/ApplicationELB", + "period": "", + "queryMode": "Metrics", + "refId": "A", + "region": "default", + "sqlExpression": "", + "statistic": "Sum" }, { "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" }, - "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.generate_registry_jwt\", method=\"GET\", status!~\"5[0-9][0-9]\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.generate_registry_jwt\", method=\"GET\"}[$rate]))", + "dimensions": { + "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" + }, + "expression": "", "hide": false, - "legendFormat": "GET auth", - "range": true, - "refId": "B" + "id": "", + "label": "HTTP 3XX", + "matchExact": true, + "metricEditorMode": 0, + "metricName": "HTTPCode_Target_3XX_Count", + "metricQueryType": 0, + "namespace": "AWS/ApplicationELB", + "period": "", + "queryMode": "Metrics", + "refId": "B", + "region": "default", + "sqlExpression": "", + "statistic": "Sum" }, { "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "( \n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.generate_registry_jwt\", method=\"GET\", status!~\"5[0-9][0-9]\"}[$rate]))\n /\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.generate_registry_jwt\", method=\"GET\"}[$rate]))\n) - 0.999", - "hide": false, - "legendFormat": "error budget", - "range": true, - "refId": "C" - } - ], - "title": "GET auth success rate (v2 Registry API)", - "transformations": [], - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" }, - "unit": "percentunit" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 5, - "x": 0, - "y": 12 - }, - "id": 69, - "options": { - "colorMode": "value", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.3.8", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "dimensions": { + "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" }, - "editorMode": "code", - "expr": "0.995", + "expression": "", "hide": false, - "legendFormat": "target", - "range": true, - "refId": "B" + "id": "", + "label": "HTTP 4XX", + "matchExact": true, + "metricEditorMode": 0, + "metricName": "HTTPCode_Target_4XX_Count", + "metricQueryType": 0, + "namespace": "AWS/ApplicationELB", + "period": "", + "queryMode": "Metrics", + "refId": "C", + "region": "default", + "sqlExpression": "", + "statistic": "Sum" }, { "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "type": "cloudwatch", + "uid": "${cloudwatch_datasource}" }, - "editorMode": "code", - "expr": "sum(increase(quay_build_jobs_total{success=\"true\"}[$rate]))\n/\nsum(increase(quay_build_jobs_total[$rate])) > 0", - "legendFormat": "success %", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "dimensions": { + "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" }, - "editorMode": "code", - "expr": "0.005 - (\n (sum(increase(quay_build_jobs_total[$rate])) - sum(increase(quay_build_jobs_total{success=\"true\"}[$rate])))\n /\n sum(increase(quay_build_jobs_total[$rate]))\n) != 0", + "expression": "", "hide": false, - "legendFormat": "error budget", - "range": true, - "refId": "C" + "id": "", + "label": "HTTP 5XX", + "matchExact": true, + "metricEditorMode": 0, + "metricName": "HTTPCode_Target_5XX_Count", + "metricQueryType": 0, + "namespace": "AWS/ApplicationELB", + "period": "", + "queryMode": "Metrics", + "refId": "D", + "region": "default", + "sqlExpression": "", + "statistic": "Sum" } ], - "title": "Build Success", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 5, - "x": 5, - "y": 12 - }, - "id": 42, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.3.8", - "targets": [ + "title": "HTTP response codes", + "transformations": [ { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(increase(quay_build_queue_duration_seconds_sum[$rate]))\n/\nsum(increase(quay_build_queue_duration_seconds_count[$rate])) > 0", - "range": true, - "refId": "A" + "id": "reduce", + "options": { + "reducers": [ + "max", + "min", + "mean", + "sum" + ] + } } ], - "title": "Average Time in Build Queue", - "type": "stat" + "type": "table" }, { "collapsed": false, @@ -1247,17 +1502,17 @@ data: "h": 1, "w": 24, "x": 0, - "y": 16 + "y": 47 }, - "id": 49, + "id": 60, "panels": [], - "title": "Push/Pull", + "title": "v2 Registry API", "type": "row" }, { "datasource": { "type": "prometheus", - "uid": "${catchpoint_datasource}" + "uid": "${datasource}" }, "fieldConfig": { "defaults": { @@ -1265,26 +1520,28 @@ data: "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", - "axisLabel": "success rate", + "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 4, + "fillOpacity": 7, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, - "showPoints": "never", + "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", @@ -1294,7 +1551,6 @@ data: "mode": "off" } }, - "links": [], "mappings": [], "thresholds": { "mode": "absolute", @@ -1305,7 +1561,7 @@ data: }, { "color": "red", - "value": 95 + "value": 80 } ] }, @@ -1315,12 +1571,11 @@ data: }, "gridPos": { "h": 9, - "w": 12, + "w": 9, "x": 0, - "y": 17 + "y": 48 }, - "id": 79, - "links": [], + "id": 58, "options": { "legend": { "calcs": [], @@ -1329,107 +1584,107 @@ data: "showLegend": true }, "tooltip": { - "mode": "multi", + "mode": "single", "sort": "none" } }, - "pluginVersion": "9.0.3", "targets": [ { "datasource": { "type": "prometheus", - "uid": "${catchpoint_datasource}" + "uid": "${datasource}" }, "editorMode": "code", - "expr": "1 - (\n sum(increase(catchpoint_check_failures_total{probe=\"quayio-push-pull-monitor-v2-na\"}[$rate]))\n /\n sum(increase(catchpoint_checks_total{probe=\"quayio-push-pull-monitor-v2-na\"}[$rate]))\n)\n", - "legendFormat": "North America", + "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_tagname\", status!~\"5[0-9][0-9]\", method=\"GET\"}[5m]))\n +\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_digest\", status!~\"5[0-9][0-9]\", method=\"GET\"}[5m]))\n)\n/\n(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_digest\", method=\"GET\"}[5m]))\n +\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_tagname\", method=\"GET\"}[5m]))\n)", + "legendFormat": "GET manifest success rate", "range": true, "refId": "A" }, { "datasource": { "type": "prometheus", - "uid": "${catchpoint_datasource}" + "uid": "${datasource}" }, "editorMode": "code", - "expr": "1 - (\n sum(increase(catchpoint_check_failures_total{probe=\"quayio-push-pull-monitor-v2-sa\"}[$rate]))\n /\n sum(increase(catchpoint_checks_total{probe=\"quayio-push-pull-monitor-v2-sa\"}[$rate]))\n)", + "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.generate_registry_jwt\", method=\"GET\", status!~\"5[0-9][0-9]\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.generate_registry_jwt\", method=\"GET\"}[$rate]))", "hide": false, - "legendFormat": "South America", + "legendFormat": "auth success rate", "range": true, "refId": "B" }, { "datasource": { "type": "prometheus", - "uid": "${catchpoint_datasource}" + "uid": "${datasource}" }, "editorMode": "code", - "expr": "1 - (\n sum(increase(catchpoint_check_failures_total{probe=\"quayio-push-pull-monitor-v2-af\"}[$rate]))\n / \n sum(increase(catchpoint_checks_total{probe=\"quayio-push-pull-monitor-v2-af\"}[$rate]))\n)", + "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.download_blob\", status!~\"5[0-9][0-9]\", method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.download_blob\", method=\"GET\"}[$rate]))", "hide": false, - "legendFormat": "Africa", + "legendFormat": "GET blob success rate", "range": true, "refId": "C" }, { "datasource": { "type": "prometheus", - "uid": "${catchpoint_datasource}" + "uid": "${datasource}" }, "editorMode": "code", - "expr": "1 - (\n sum(increase(catchpoint_check_failures_total{probe=\"quayio-push-pull-monitor-v2-as\"}[$rate]))\n / \n sum(increase(catchpoint_checks_total{probe=\"quayio-push-pull-monitor-v2-as\"}[$rate]))\n)", + "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.start_blob_upload\", method=\"POST\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.monolithic_upload_or_last_chunk\", method=\"PUT\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.upload_chunk\", method=\"PATCH\", status!~\"5[0-9][0-9]\"}[$rate]))\n)\n/\n(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.start_blob_upload\", method=\"POST\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.monolithic_upload_or_last_chunk\", method=\"PUT\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.upload_chunk\", method=\"PATCH\"}[$rate]))\n)", "hide": false, - "legendFormat": "Asia", + "legendFormat": "upload blob success rate", "range": true, "refId": "D" }, { "datasource": { "type": "prometheus", - "uid": "${catchpoint_datasource}" + "uid": "${datasource}" }, "editorMode": "code", - "expr": "1 - (\n sum(increase(catchpoint_check_failures_total{probe=\"quayio-push-pull-monitor-v2-oc\"}[$rate]))\n / \n sum(increase(catchpoint_checks_total{probe=\"quayio-push-pull-monitor-v2-oc\"}[$rate]))\n)", + "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_tagname\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_digest\",status!~\"5[0-9][0-9]\"}[$rate]))\n)\n/ \n(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_tagname\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_digest\"}[$rate]))\n)\n", "hide": false, - "legendFormat": "Oceania", + "legendFormat": "upload manifest success rate", "range": true, "refId": "E" } ], - "title": "Push-Pull Monitor by Region", + "title": "v2 registry api", "type": "timeseries" }, { "datasource": { "type": "prometheus", - "uid": "${catchpoint_datasource}" + "uid": "${datasource}" }, - "description": "", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", - "fillOpacity": 10, + "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, - "showPoints": "never", + "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", @@ -1439,8 +1694,9 @@ data: "mode": "off" } }, - "links": [], + "decimals": 0, "mappings": [], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ @@ -1460,12 +1716,12 @@ data: }, "gridPos": { "h": 9, - "w": 6, - "x": 12, - "y": 17 + "w": 15, + "x": 9, + "y": 48 }, - "id": 30, - "links": [], + "id": 77, + "maxDataPoints": 100, "options": { "legend": { "calcs": [], @@ -1474,145 +1730,66 @@ data: "showLegend": true }, "tooltip": { - "mode": "multi", + "mode": "single", "sort": "none" } }, - "pluginVersion": "9.0.3", + "pluginVersion": "10.4.1", "targets": [ { "datasource": { "type": "prometheus", - "uid": "${catchpoint_datasource}" + "uid": "${datasource}" }, "editorMode": "code", - "expr": "increase(catchpoint_check_failures_total{probe=\"quayio-push-monitor-v2\"}[$rate])", - "legendFormat": "budget burn rate", + "expr": "sum(rate(aggregation:quay_request_duration_seconds_count:rate1m:sum{route =~ \"v2.*\", status =~ \"2[0-9][0-9]\"}[$__range]))", + "format": "time_series", + "hide": false, + "legendFormat": "2XX", "range": true, "refId": "A" }, { "datasource": { "type": "prometheus", - "uid": "${catchpoint_datasource}" + "uid": "${datasource}" }, "editorMode": "code", - "expr": "(100 - 99.5) * increase(catchpoint_checks_total{probe=\"quayio-push-monitor-v2\"}[$rate])", + "expr": "sum(rate(aggregation:quay_request_duration_seconds_count:rate1m:sum{route =~ \"v2.*\", status =~ \"3[0-9][0-9]\"}[$__range]))", + "format": "time_series", "hide": false, - "legendFormat": "max budget", + "legendFormat": "3XX", "range": true, - "refId": "B" - } - ], - "title": "Push Error Budget Burn Rate (WIP)", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${catchpoint_datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 5, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "never", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "links": [], - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 6, - "x": 18, - "y": 17 - }, - "id": 31, - "links": [], - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true + "refId": "D" }, - "tooltip": { - "mode": "multi", - "sort": "none" - } - }, - "pluginVersion": "9.0.3", - "targets": [ { "datasource": { "type": "prometheus", - "uid": "${catchpoint_datasource}" + "uid": "${datasource}" }, "editorMode": "code", - "expr": "sum(increase(catchpoint_check_failures_total{probe=\"quayio-pull-monitor-v2\"}[$rate]))", - "legendFormat": "budget burn rate", + "expr": "sum(rate(aggregation:quay_request_duration_seconds_count:rate1m:sum{route =~ \"v2.*\", status =~ \"4[0-9][0-9]\"}[$__range]))", + "format": "time_series", + "hide": false, + "legendFormat": "4XX", "range": true, - "refId": "A" + "refId": "B" }, { "datasource": { "type": "prometheus", - "uid": "${catchpoint_datasource}" + "uid": "${datasource}" }, "editorMode": "code", - "expr": "(100 - 99.9) * sum(increase(catchpoint_checks_total{probe=\"quayio-pull-monitor-v2\"}[$rate]))", + "expr": "sum(rate(aggregation:quay_request_duration_seconds_count:rate1m:sum{route =~ \"v2.*\", status =~ \"5[0-9][0-9]\"}[$__range]))", + "format": "time_series", "hide": false, - "legendFormat": "max budget", + "legendFormat": "5XX", "range": true, - "refId": "B" + "refId": "C" } ], - "title": "Pull Error Budget Burn Rate (WIP)", + "title": "v2 response codes", "type": "timeseries" }, { @@ -1621,11 +1798,11 @@ data: "h": 1, "w": 24, "x": 0, - "y": 26 + "y": 57 }, - "id": 53, + "id": 51, "panels": [], - "title": "v1 Quay API", + "title": "Builds", "type": "row" }, { @@ -1636,41 +1813,9 @@ data: "fieldConfig": { "defaults": { "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisGridShow": true, - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 3, - "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" - } + "mode": "thresholds" }, "mappings": [], - "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ @@ -1684,61 +1829,34 @@ data: } ] }, - "unit": "percentunit" + "unit": "s" }, - "overrides": [ - { - "__systemRef": "hideSeriesFrom", - "matcher": { - "id": "byNames", - "options": { - "mode": "exclude", - "names": [ - "GET api.repository" - ], - "prefix": "All except:", - "readOnly": true - } - }, - "properties": [ - { - "id": "custom.hideFrom", - "value": { - "legend": false, - "tooltip": false, - "viz": true - } - } - ] - } - ] + "overrides": [] }, "gridPos": { - "h": 10, - "w": 24, + "h": 8, + "w": 5, "x": 0, - "y": 27 + "y": 58 }, - "id": 43, - "links": [], + "id": 40, "options": { - "legend": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { "calcs": [ - "mean", - "min", - "max", - "last" + "mean" ], - "displayMode": "table", - "placement": "bottom", - "showLegend": true + "fields": "", + "values": false }, - "tooltip": { - "mode": "single", - "sort": "none" - } + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "pluginVersion": "9.0.3", + "pluginVersion": "10.4.1", "targets": [ { "datasource": { @@ -1746,63 +1864,35 @@ data: "uid": "${datasource}" }, "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.user\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.user\",method=\"GET\"}[$rate]))", - "legendFormat": "GET api.user", + "expr": "(\n sum(\n increase(quay_build_queue_duration_seconds_sum[$rate])\n )\n /\n sum(\n increase(quay_build_queue_duration_seconds_count[$rate])\n ) > 0\n) + (\n sum(\n increase(quay_build_duration_seconds_sum[$rate])\n )\n /\n sum(\n increase(quay_build_duration_seconds_count[$rate])\n ) > 0\n)", "range": true, "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repository\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repository\",method=\"GET\"}[$rate]))", - "hide": false, - "legendFormat": "GET api.repository", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.listrepositorytags\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.listrepositorytags\",method=\"GET\"}[$rate]))", - "hide": false, - "legendFormat": "GET api.listrepositorytags", - "range": true, - "refId": "C" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repositorymanifestsecurity\",status!~\"5[0-9][0-9]\",method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"api.repositorymanifestsecurity\",method=\"GET\"}[$rate]))", - "hide": false, - "interval": "", - "legendFormat": "GET api.repositorymanifestsecurity", - "range": true, - "refId": "D" } ], - "title": "API v1 Availability", - "transformations": [], - "type": "timeseries" + "title": "Total Build Time", + "type": "stat" }, { "datasource": { - "type": "cloudwatch", - "uid": "${cloudwatch_datasource}" + "type": "prometheus", + "uid": "${datasource}" }, + "description": "Distribution of time spent in the build queue over specified `rate`", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, + "custom": { + "fillOpacity": 80, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineWidth": 1 + }, "mappings": [], "thresholds": { "mode": "absolute", @@ -1816,1029 +1906,363 @@ data: "value": 80 } ] - }, - "unit": "short" + } }, "overrides": [] }, "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 37 + "h": 8, + "w": 7, + "x": 5, + "y": 58 }, - "id": 54, - "links": [], + "id": 56, "options": { - "displayMode": "gradient", - "minVizHeight": 10, - "minVizWidth": 0, - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "showUnfilled": true - }, - "pluginVersion": "9.3.8", - "targets": [ - { - "datasource": { - "type": "cloudwatch", - "uid": "${cloudwatch_datasource}" - }, - "dimensions": { - "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" - }, - "expression": "", - "id": "", - "label": "HTTP 2XX", - "matchExact": true, - "metricEditorMode": 0, - "metricName": "HTTPCode_Target_2XX_Count", - "metricQueryType": 0, - "namespace": "AWS/ApplicationELB", - "period": "", - "queryMode": "Metrics", - "refId": "A", - "region": "default", - "sqlExpression": "", - "statistic": "Sum" - }, - { - "datasource": { - "type": "cloudwatch", - "uid": "${cloudwatch_datasource}" - }, - "dimensions": { - "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" - }, - "expression": "", - "hide": false, - "id": "", - "label": "HTTP 3XX", - "matchExact": true, - "metricEditorMode": 0, - "metricName": "HTTPCode_Target_3XX_Count", - "metricQueryType": 0, - "namespace": "AWS/ApplicationELB", - "period": "", - "queryMode": "Metrics", - "refId": "B", - "region": "default", - "sqlExpression": "", - "statistic": "Sum" - }, - { - "datasource": { - "type": "cloudwatch", - "uid": "${cloudwatch_datasource}" - }, - "dimensions": { - "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" - }, - "expression": "", - "hide": false, - "id": "", - "label": "HTTP 4XX", - "matchExact": true, - "metricEditorMode": 0, - "metricName": "HTTPCode_Target_4XX_Count", - "metricQueryType": 0, - "namespace": "AWS/ApplicationELB", - "period": "", - "queryMode": "Metrics", - "refId": "C", - "region": "default", - "sqlExpression": "", - "statistic": "Sum" - }, - { - "datasource": { - "type": "cloudwatch", - "uid": "${cloudwatch_datasource}" - }, - "dimensions": { - "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" - }, - "expression": "", - "hide": false, - "id": "", - "label": "HTTP 5XX", - "matchExact": true, - "metricEditorMode": 0, - "metricName": "HTTPCode_Target_5XX_Count", - "metricQueryType": 0, - "namespace": "AWS/ApplicationELB", - "period": "", - "queryMode": "Metrics", - "refId": "D", - "region": "default", - "sqlExpression": "", - "statistic": "Sum" + "bucketOffset": 0, + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true } - ], - "title": "HTTP response codes", - "transformations": [], - "type": "bargauge" - }, - { - "datasource": { - "type": "cloudwatch", - "uid": "${cloudwatch_datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "align": "center", - "displayMode": "auto", - "inspect": false - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "short" - }, - "overrides": [] - }, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 37 - }, - "id": 55, - "links": [], - "options": { - "footer": { - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, - "showHeader": true }, "pluginVersion": "9.3.8", "targets": [ { "datasource": { - "type": "cloudwatch", - "uid": "${cloudwatch_datasource}" - }, - "dimensions": { - "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" - }, - "expression": "", - "id": "", - "label": "HTTP 2XX", - "matchExact": true, - "metricEditorMode": 0, - "metricName": "HTTPCode_Target_2XX_Count", - "metricQueryType": 0, - "namespace": "AWS/ApplicationELB", - "period": "", - "queryMode": "Metrics", - "refId": "A", - "region": "default", - "sqlExpression": "", - "statistic": "Sum" - }, - { - "datasource": { - "type": "cloudwatch", - "uid": "${cloudwatch_datasource}" - }, - "dimensions": { - "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" - }, - "expression": "", - "hide": false, - "id": "", - "label": "HTTP 3XX", - "matchExact": true, - "metricEditorMode": 0, - "metricName": "HTTPCode_Target_3XX_Count", - "metricQueryType": 0, - "namespace": "AWS/ApplicationELB", - "period": "", - "queryMode": "Metrics", - "refId": "B", - "region": "default", - "sqlExpression": "", - "statistic": "Sum" - }, - { - "datasource": { - "type": "cloudwatch", - "uid": "${cloudwatch_datasource}" - }, - "dimensions": { - "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" - }, - "expression": "", - "hide": false, - "id": "", - "label": "HTTP 4XX", - "matchExact": true, - "metricEditorMode": 0, - "metricName": "HTTPCode_Target_4XX_Count", - "metricQueryType": 0, - "namespace": "AWS/ApplicationELB", - "period": "", - "queryMode": "Metrics", - "refId": "C", - "region": "default", - "sqlExpression": "", - "statistic": "Sum" - }, - { - "datasource": { - "type": "cloudwatch", - "uid": "${cloudwatch_datasource}" - }, - "dimensions": { - "LoadBalancer": "app/quayio-production-alb01/dd2a8a128b2029c6" + "type": "prometheus", + "uid": "${datasource}" }, - "expression": "", - "hide": false, - "id": "", - "label": "HTTP 5XX", - "matchExact": true, - "metricEditorMode": 0, - "metricName": "HTTPCode_Target_5XX_Count", - "metricQueryType": 0, - "namespace": "AWS/ApplicationELB", - "period": "", - "queryMode": "Metrics", - "refId": "D", - "region": "default", - "sqlExpression": "", - "statistic": "Sum" - } - ], - "title": "HTTP response codes", - "transformations": [ - { - "id": "reduce", - "options": { - "reducers": [ - "max", - "min", - "mean", - "sum" - ] - } + "editorMode": "code", + "exemplar": true, + "expr": "sum(rate(quay_build_queue_duration_seconds_sum[$rate])) / sum(rate(quay_build_queue_duration_seconds_count[$rate]))", + "format": "time_series", + "instant": false, + "interval": "", + "legendFormat": "__auto", + "range": true, + "refId": "A" } ], - "type": "table" + "title": "Time in Build Queue Distribution", + "type": "histogram" }, { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 43 + "cards": {}, + "color": { + "cardColor": "#b4ff00", + "colorScale": "sqrt", + "colorScheme": "interpolateGreens", + "exponent": 0.5, + "mode": "spectrum" + }, + "dataFormat": "tsbuckets", + "datasource": { + "type": "prometheus", + "uid": "${datasource}" }, - "id": 60, - "panels": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 7, - "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 - } - ] - }, - "unit": "percentunit" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 9, - "x": 0, - "y": 44 - }, - "id": 58, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_tagname\", status!~\"5[0-9][0-9]\", method=\"GET\"}[5m]))\n +\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_digest\", status!~\"5[0-9][0-9]\", method=\"GET\"}[5m]))\n)\n/\n(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_digest\", method=\"GET\"}[5m]))\n +\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.fetch_manifest_by_tagname\", method=\"GET\"}[5m]))\n)", - "legendFormat": "GET manifest success rate", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.generate_registry_jwt\", method=\"GET\", status!~\"5[0-9][0-9]\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.generate_registry_jwt\", method=\"GET\"}[$rate]))", - "hide": false, - "legendFormat": "auth success rate", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.download_blob\", status!~\"5[0-9][0-9]\", method=\"GET\"}[$rate]))\n/\nsum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.download_blob\", method=\"GET\"}[$rate]))", - "hide": false, - "legendFormat": "GET blob success rate", - "range": true, - "refId": "C" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.start_blob_upload\", method=\"POST\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.monolithic_upload_or_last_chunk\", method=\"PUT\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.upload_chunk\", method=\"PATCH\", status!~\"5[0-9][0-9]\"}[$rate]))\n)\n/\n(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.start_blob_upload\", method=\"POST\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.monolithic_upload_or_last_chunk\", method=\"PUT\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.upload_chunk\", method=\"PATCH\"}[$rate]))\n)", - "hide": false, - "legendFormat": "upload blob success rate", - "range": true, - "refId": "D" + "description": "Heatmap of time spent in queue for build jobs", + "fieldConfig": { + "defaults": { + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_tagname\", status!~\"5[0-9][0-9]\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_digest\",status!~\"5[0-9][0-9]\"}[$rate]))\n)\n/ \n(\n sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_tagname\"}[$rate]))\n + sum(increase(aggregation:quay_request_duration_seconds_count:rate1m:sum{route=\"v2.write_manifest_by_digest\"}[$rate]))\n)\n", - "hide": false, - "legendFormat": "upload manifest success rate", - "range": true, - "refId": "E" + "scaleDistribution": { + "type": "linear" } - ], - "title": "v2 registry api", - "type": "timeseries" + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 58 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 62, + "legend": { + "show": true + }, + "options": { + "calculate": false, + "calculation": {}, + "cellGap": 2, + "cellValues": {}, + "color": { + "exponent": 0.5, + "fill": "#b4ff00", + "mode": "scheme", + "reverse": false, + "scale": "exponential", + "scheme": "Greens", + "steps": 128 + }, + "exemplars": { + "color": "rgba(255,0,255,0.7)" + }, + "filterValues": { + "le": 1e-9 }, + "legend": { + "show": true + }, + "rowsFrame": { + "layout": "auto" + }, + "showValue": "never", + "tooltip": { + "mode": "single", + "showColorScale": false, + "yHistogram": false + }, + "yAxis": { + "axisPlacement": "left", + "reverse": false, + "unit": "s" + } + }, + "pluginVersion": "10.4.1", + "reverseYBuckets": false, + "targets": [ { "datasource": { "type": "prometheus", "uid": "${datasource}" }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "decimals": 0, - "mappings": [], - "noValue": "0", - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "none" - }, - "overrides": [] - }, - "gridPos": { - "h": 9, - "w": 6, - "x": 9, - "y": 44 - }, - "id": 77, - "maxDataPoints": 100, - "options": { - "displayMode": "gradient", - "minVizHeight": 10, - "minVizWidth": 0, - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showUnfilled": true - }, - "pluginVersion": "9.3.8", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(aggregation:quay_request_duration_seconds_count:rate1m:sum{route =~ \"v2.*\", status =~ \"2[0-9][0-9]\"}[$rate]))", - "format": "time_series", - "hide": false, - "legendFormat": "2XX", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(aggregation:quay_request_duration_seconds_count:rate1m:sum{route =~ \"v2.*\", status =~ \"3[0-9][0-9]\"}[$rate]))", - "format": "time_series", - "hide": false, - "legendFormat": "3XX", - "range": true, - "refId": "D" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(aggregation:quay_request_duration_seconds_count:rate1m:sum{route =~ \"v2.*\", status =~ \"4[0-9][0-9]\"}[$rate]))", - "format": "time_series", - "hide": false, - "legendFormat": "4XX", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "sum(rate(aggregation:quay_request_duration_seconds_count:rate1m:sum{route =~ \"v2.*\", status =~ \"5[0-9][0-9]\"}[$rate]))", - "format": "time_series", - "hide": false, - "legendFormat": "5XX", - "range": true, - "refId": "C" - } - ], - "title": "v2 response codes", - "type": "bargauge" + "editorMode": "code", + "exemplar": false, + "expr": "sum(increase(quay_build_queue_duration_seconds_bucket{schedule_success=\"True\"}[$rate])) by (le)", + "format": "heatmap", + "hide": false, + "instant": false, + "interval": "", + "legendFormat": "{{le}}", + "range": true, + "refId": "A" } ], - "title": "v2 Registry API", - "type": "row" + "title": "Build Queue Duration", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "yAxis": { + "format": "s", + "logBase": 1, + "show": true + }, + "yBucketBound": "auto" }, { - "collapsed": true, + "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, - "y": 44 + "y": 66 }, - "id": 51, - "panels": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 5, - "x": 0, - "y": 54 - }, - "id": 40, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "mean" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "pluginVersion": "9.3.8", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "expr": "(\n sum(\n increase(quay_build_queue_duration_seconds_sum[$rate])\n )\n /\n sum(\n increase(quay_build_queue_duration_seconds_count[$rate])\n ) > 0\n) + (\n sum(\n increase(quay_build_duration_seconds_sum[$rate])\n )\n /\n sum(\n increase(quay_build_duration_seconds_count[$rate])\n ) > 0\n)", - "range": true, - "refId": "A" - } - ], - "title": "Total Build Time", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" + "id": 71, + "panels": [], + "title": "Clair", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" }, - "description": "Distribution of time spent in the build queue over specified `rate`", - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "custom": { - "fillOpacity": 80, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "lineWidth": 1 + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] + { + "color": "red", + "value": 80 } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 7, - "x": 5, - "y": 54 - }, - "id": 56, - "options": { - "bucketOffset": 0, - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - } + ] }, - "pluginVersion": "9.3.8", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": true, - "expr": "sum(rate(quay_build_queue_duration_seconds_sum[$rate])) / sum(rate(quay_build_queue_duration_seconds_count[$rate]))", - "format": "time_series", - "instant": false, - "interval": "", - "legendFormat": "__auto", - "range": true, - "refId": "A" - } + "unit": "s" + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 6, + "x": 0, + "y": 67 + }, + "id": 75, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" ], - "title": "Time in Build Queue Distribution", - "type": "histogram" + "fields": "", + "values": false }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "10.4.1", + "targets": [ { - "cards": {}, - "color": { - "cardColor": "#b4ff00", - "colorScale": "sqrt", - "colorScheme": "interpolateGreens", - "exponent": 0.5, - "mode": "spectrum" - }, - "dataFormat": "tsbuckets", "datasource": { "type": "prometheus", "uid": "${datasource}" }, - "description": "Heatmap of time spent in queue for build jobs", - "fieldConfig": { - "defaults": { - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "scaleDistribution": { - "type": "linear" - } - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 54 - }, - "heatmap": {}, - "hideZeroBuckets": true, - "highlightCards": true, - "id": 62, - "legend": { - "show": true - }, - "options": { - "calculate": false, - "calculation": {}, - "cellGap": 2, - "cellValues": {}, - "color": { - "exponent": 0.5, - "fill": "#b4ff00", - "mode": "scheme", - "reverse": false, - "scale": "exponential", - "scheme": "Greens", - "steps": 128 - }, - "exemplars": { - "color": "rgba(255,0,255,0.7)" - }, - "filterValues": { - "le": 1e-9 - }, - "legend": { - "show": true - }, - "rowsFrame": { - "layout": "auto" - }, - "showValue": "never", - "tooltip": { - "show": true, - "yHistogram": false - }, - "yAxis": { - "axisPlacement": "left", - "reverse": false, - "unit": "s" - } - }, - "pluginVersion": "9.3.8", - "reverseYBuckets": false, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": false, - "expr": "sum(increase(quay_build_queue_duration_seconds_bucket{schedule_success=\"True\"}[$rate])) by (le)", - "format": "heatmap", - "hide": false, - "instant": false, - "interval": "", - "legendFormat": "{{le}}", - "range": true, - "refId": "A" - } - ], - "title": "Build Queue Duration", - "tooltip": { - "show": true, - "showHistogram": false - }, - "type": "heatmap", - "xAxis": { - "show": true - }, - "yAxis": { - "format": "s", - "logBase": 1, - "show": true - }, - "yBucketBound": "auto" + "expr": "sum(increase(quay_secscan_result_duration_seconds_sum[$rate]))\n/\nsum(increase(quay_secscan_result_duration_seconds_count[$rate]))", + "refId": "A" } ], - "title": "Builds", - "type": "row" + "title": "Average Time For Scan Results", + "type": "stat" }, { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 45 + "cards": {}, + "color": { + "cardColor": "#b4ff00", + "colorScale": "linear", + "colorScheme": "interpolateGreens", + "exponent": 0.5, + "mode": "spectrum" + }, + "dataFormat": "tsbuckets", + "datasource": { + "type": "prometheus", + "uid": "${datasource}" }, - "id": 71, - "panels": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - }, - "unit": "s" - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 0, - "y": 63 - }, - "id": 75, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false + "description": "duration of time between pushing an image to quay and receiving scan results", + "fieldConfig": { + "defaults": { + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false }, - "textMode": "auto" - }, - "pluginVersion": "9.3.8", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum(increase(quay_secscan_result_duration_seconds_sum[$rate]))\n/\nsum(increase(quay_secscan_result_duration_seconds_count[$rate]))", - "refId": "A" + "scaleDistribution": { + "type": "linear" } - ], - "title": "Average Time For Scan Results", - "type": "stat" + } + }, + "overrides": [] + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 6, + "y": 67 + }, + "heatmap": {}, + "hideZeroBuckets": true, + "highlightCards": true, + "id": 73, + "legend": { + "show": true + }, + "maxDataPoints": 100, + "options": { + "calculate": false, + "calculation": {}, + "cellGap": 2, + "cellValues": {}, + "color": { + "exponent": 0.5, + "fill": "#b4ff00", + "mode": "scheme", + "reverse": false, + "scale": "exponential", + "scheme": "Greens", + "steps": 128 + }, + "exemplars": { + "color": "rgba(255,0,255,0.7)" + }, + "filterValues": { + "le": 1e-9 + }, + "legend": { + "show": true + }, + "rowsFrame": { + "layout": "auto" }, + "showValue": "never", + "tooltip": { + "mode": "single", + "showColorScale": false, + "yHistogram": false + }, + "yAxis": { + "axisPlacement": "left", + "reverse": false, + "unit": "s" + } + }, + "pluginVersion": "10.4.1", + "reverseYBuckets": false, + "targets": [ { - "cards": {}, - "color": { - "cardColor": "#b4ff00", - "colorScale": "linear", - "colorScheme": "interpolateGreens", - "exponent": 0.5, - "mode": "spectrum" - }, - "dataFormat": "tsbuckets", "datasource": { "type": "prometheus", "uid": "${datasource}" }, - "description": "duration of time between pushing an image to quay and receiving scan results", - "fieldConfig": { - "defaults": { - "custom": { - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "scaleDistribution": { - "type": "linear" - } - } - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 6, - "y": 63 - }, - "heatmap": {}, - "hideZeroBuckets": true, - "highlightCards": true, - "id": 73, - "legend": { - "show": true - }, - "maxDataPoints": 100, - "options": { - "calculate": false, - "calculation": {}, - "cellGap": 2, - "cellValues": {}, - "color": { - "exponent": 0.5, - "fill": "#b4ff00", - "mode": "scheme", - "reverse": false, - "scale": "exponential", - "scheme": "Greens", - "steps": 128 - }, - "exemplars": { - "color": "rgba(255,0,255,0.7)" - }, - "filterValues": { - "le": 1e-9 - }, - "legend": { - "show": true - }, - "rowsFrame": { - "layout": "auto" - }, - "showValue": "never", - "tooltip": { - "show": true, - "yHistogram": false - }, - "yAxis": { - "axisPlacement": "left", - "reverse": false, - "unit": "s" - } - }, - "pluginVersion": "9.3.8", - "reverseYBuckets": false, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "editorMode": "code", - "exemplar": true, - "expr": "sum(increase(quay_secscan_result_duration_seconds_bucket[$rate])) by (le)", - "format": "heatmap", - "hide": false, - "instant": false, - "interval": "1", - "legendFormat": "{{le}}", - "range": true, - "refId": "A" - } - ], - "title": "Scan Result Latency", - "tooltip": { - "show": true, - "showHistogram": false - }, - "type": "heatmap", - "xAxis": { - "show": true - }, - "yAxis": { - "format": "s", - "logBase": 1, - "show": true - }, - "yBucketBound": "auto" + "editorMode": "code", + "exemplar": true, + "expr": "sum(increase(quay_secscan_result_duration_seconds_bucket[$rate])) by (le)", + "format": "heatmap", + "hide": false, + "instant": false, + "interval": "1", + "legendFormat": "{{le}}", + "range": true, + "refId": "A" } ], - "title": "Clair", - "type": "row" + "title": "Scan Result Latency", + "tooltip": { + "show": true, + "showHistogram": false + }, + "type": "heatmap", + "xAxis": { + "show": true + }, + "yAxis": { + "format": "s", + "logBase": 1, + "show": true + }, + "yBucketBound": "auto" } ], - "refresh": false, - "schemaVersion": 37, - "style": "dark", + "refresh": "", + "schemaVersion": 39, "tags": [], "templating": { "list": [ @@ -2846,7 +2270,7 @@ data: "current": { "selected": false, "text": "quayp05ue1-prometheus", - "value": "quayp05ue1-prometheus" + "value": "P85A349E17159E2A2" }, "hide": 0, "includeAll": false, @@ -2866,8 +2290,8 @@ data: "auto_min": "10s", "current": { "selected": false, - "text": "5m", - "value": "5m" + "text": "7d", + "value": "7d" }, "hide": 0, "name": "rate", @@ -2878,7 +2302,7 @@ data: "value": "1m" }, { - "selected": true, + "selected": false, "text": "5m", "value": "5m" }, @@ -2913,7 +2337,7 @@ data: "value": "1d" }, { - "selected": false, + "selected": true, "text": "7d", "value": "7d" }, @@ -2938,7 +2362,7 @@ data: "current": { "selected": false, "text": "appsrep11ue1-prometheus", - "value": "appsrep11ue1-prometheus" + "value": "P677746A44F299DAF" }, "hide": 0, "includeAll": false, @@ -2956,7 +2380,7 @@ data: "current": { "selected": false, "text": "AWS quayio-prod", - "value": "AWS quayio-prod" + "value": "PD8A2C6F0E4302668" }, "hide": 0, "includeAll": false, @@ -3004,7 +2428,7 @@ data: "timezone": "", "title": "Quay SLO", "uid": "quay-slo", - "version": 1, + "version": 2, "weekStart": "" } kind: ConfigMap