From 72391ac5e57de5a0bf19f942bb75e170c4cc38f2 Mon Sep 17 00:00:00 2001 From: Thomas Draebing Date: Wed, 9 Sep 2020 16:03:58 +0200 Subject: [PATCH] Convert queues dashboard to grafonnet Change-Id: Ia3307a923b99ecacaaa8c803aa2af0c9bf4eabcb --- dashboards/gerrit-queues.json | 1162 ----------------- .../gerrit/queues/gerrit-queues.jsonnet | 70 + .../gerrit/queues/panels/http_queue.libsonnet | 23 + .../queues/panels/http_threads.libsonnet | 65 + .../queues/panels/index_queue.libsonnet | 36 + .../queues/panels/index_threads.libsonnet | 64 + .../gerrit/queues/panels/misc_queue.libsonnet | 49 + .../queues/panels/misc_threads.libsonnet | 91 ++ .../panels/rest-api-request-rate.libsonnet | 16 + .../gerrit/queues/panels/ssh_queue.libsonnet | 36 + .../queues/panels/ssh_threads.libsonnet | 64 + dashboards/globals/defaults.libsonnet | 4 - dashboards/globals/grid_pos.libsonnet | 14 +- 13 files changed, 524 insertions(+), 1170 deletions(-) delete mode 100644 dashboards/gerrit-queues.json create mode 100644 dashboards/gerrit/queues/gerrit-queues.jsonnet create mode 100644 dashboards/gerrit/queues/panels/http_queue.libsonnet create mode 100644 dashboards/gerrit/queues/panels/http_threads.libsonnet create mode 100644 dashboards/gerrit/queues/panels/index_queue.libsonnet create mode 100644 dashboards/gerrit/queues/panels/index_threads.libsonnet create mode 100644 dashboards/gerrit/queues/panels/misc_queue.libsonnet create mode 100644 dashboards/gerrit/queues/panels/misc_threads.libsonnet create mode 100644 dashboards/gerrit/queues/panels/rest-api-request-rate.libsonnet create mode 100644 dashboards/gerrit/queues/panels/ssh_queue.libsonnet create mode 100644 dashboards/gerrit/queues/panels/ssh_threads.libsonnet diff --git a/dashboards/gerrit-queues.json b/dashboards/gerrit-queues.json deleted file mode 100644 index d067e6a..0000000 --- a/dashboards/gerrit-queues.json +++ /dev/null @@ -1,1162 +0,0 @@ -{ - "__inputs": [ - { - "name": "DS_PROMETHEUS", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "7.1.5" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "description": "", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 7, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": false, - "hideZero": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": 150, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "batch threads", - "color": "#FFB357" - }, - { - "alias": "batch pool size", - "color": "#FA6400", - "fill": 0 - }, - { - "alias": "interactive threads", - "color": "#C0D8FF" - }, - { - "alias": "interactive pool size", - "color": "#1F60C4", - "fill": 0 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "queue_ssh_batch_worker_active_threads{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "batch threads", - "refId": "C" - }, - { - "expr": "queue_ssh_batch_worker_pool_size{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "batch pool size", - "refId": "D" - }, - { - "expr": "queue_ssh_interactive_worker_active_threads{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "interactive threads", - "refId": "A" - }, - { - "expr": "queue_ssh_interactive_worker_pool_size{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "interactive pool size", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "SSH threads", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "Threads", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "description": "", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 7, - "x": 7, - "y": 0 - }, - "hiddenSeries": false, - "id": 20, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": 150, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "active threads", - "color": "#FFB357" - }, - { - "alias": "reserved threads", - "color": "#56A64B", - "fill": 0 - }, - { - "alias": "pool size", - "color": "#1F60C4", - "fill": 0 - }, - { - "alias": "max pool size", - "color": "#FA6400", - "fill": 0 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "http_server_jetty_threadpool_active_threads{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "active threads", - "refId": "A" - }, - { - "expr": "http_server_jetty_threadpool_reserved_threads{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "reserved threads", - "refId": "C" - }, - { - "expr": "http_server_jetty_threadpool_max_pool_size{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "max pool size", - "refId": "B" - }, - { - "expr": "http_server_jetty_threadpool_pool_size{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "pool size", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "HTTP threads", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "threads", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "description": "", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 7, - "x": 14, - "y": 0 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": 150, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "batch threads", - "color": "#FFB357" - }, - { - "alias": "batch pool size", - "color": "#FA6400", - "fill": 0 - }, - { - "alias": "interactive threads", - "color": "#C0D8FF" - }, - { - "alias": "interactive pool size", - "color": "#1F60C4", - "fill": 0 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "queue_index_batch_active_threads{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "batch threads", - "refId": "A" - }, - { - "expr": "queue_index_batch_pool_size{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "batch pool size", - "refId": "B" - }, - { - "expr": "queue_index_interactive_active_threads{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "interactive threads", - "refId": "C" - }, - { - "expr": "queue_index_interactive_pool_size{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "interactive pool size", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "INDEX threads", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "Threads", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "description": "", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 7, - "x": 0, - "y": 8 - }, - "hiddenSeries": false, - "id": 17, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": 150, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "batch", - "color": "#FFB357" - }, - { - "alias": "interactive", - "color": "#C0D8FF" - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "queue_ssh_batch_worker_scheduled_tasks{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "batch", - "refId": "C" - }, - { - "expr": "queue_ssh_interactive_worker_scheduled_tasks{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "interactive", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "SSH queue", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "Tasks", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 7, - "x": 7, - "y": 8 - }, - "hiddenSeries": false, - "id": 22, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": 150, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "http", - "color": "#FFB357" - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "http_server_jetty_threadpool_queue_size{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "http", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "HTTP queue", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "Tasks", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "description": "", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 7, - "x": 14, - "y": 8 - }, - "hiddenSeries": false, - "id": 18, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": 150, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "batch", - "color": "#FFB357" - }, - { - "alias": "interactive", - "color": "#C0D8FF" - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "queue_index_batch_scheduled_tasks{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "batch", - "refId": "C" - }, - { - "expr": "queue_index_interactive_scheduled_tasks{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "interactive", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "INDEX queued", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "Tasks", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 10, - "x": 0, - "y": 16 - }, - "hiddenSeries": false, - "id": 10, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 150, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "stream", - "color": "#C0D8FF" - }, - { - "alias": "stream pool", - "color": "#1F60C4", - "fill": 0 - }, - { - "alias": "email", - "color": "#96D98D" - }, - { - "alias": "email pool", - "color": "#37872D", - "fill": 0 - }, - { - "alias": "receive-commit", - "color": "#FFA6B0" - }, - { - "alias": "receive-commit pool", - "color": "#C4162A", - "fill": 0 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "queue_ssh_stream_worker_active_threads{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "stream", - "refId": "A" - }, - { - "expr": "queue_ssh_stream_worker_pool_size{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "stream pool", - "refId": "B" - }, - { - "expr": "queue_send_email_active_threads{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "email", - "refId": "C" - }, - { - "expr": "queue_send_email_pool_size{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "email pool", - "refId": "D" - }, - { - "expr": "queue_receive_commits_active_threads{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "receive-commit", - "refId": "E" - }, - { - "expr": "queue_receive_commits_pool_size{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "receive-commit pool", - "refId": "F" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "misc. threads", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "Threads", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "description": "", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 11, - "x": 10, - "y": 16 - }, - "hiddenSeries": false, - "id": 16, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 150, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(http_server_rest_api_count_total_total{instance=\"$instance\",replica=\"$replica\"}[5m])", - "legendFormat": "REST API request rate", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "REST API request rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "reqps", - "label": "Requests/Second", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "description": "", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 10, - "x": 0, - "y": 24 - }, - "hiddenSeries": false, - "id": 14, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 150, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "stream", - "color": "#8AB8FF" - }, - { - "alias": "email", - "color": "#96D98D" - }, - { - "alias": "receive-commit", - "color": "#FF7383" - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "queue_ssh_stream_worker_scheduled_tasks{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "stream", - "refId": "E" - }, - { - "expr": "queue_send_email_scheduled_tasks{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "email", - "refId": "C" - }, - { - "expr": "queue_receive_commits_scheduled_tasks{instance=\"$instance\",replica=\"$replica\"}", - "legendFormat": "receive-commit", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "misc. queues", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "Tasks", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "1m", - "schemaVersion": 21, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "${DS_PROMETHEUS}", - "definition": "label_values(git_upload_pack_phase_writing_total, instance)", - "hide": 0, - "includeAll": false, - "label": "Gerrit Instance", - "multi": false, - "name": "instance", - "options": [], - "query": "label_values(git_upload_pack_phase_writing_total, instance)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "${DS_PROMETHEUS}", - "definition": "label_values(git_upload_pack_phase_writing_total{instance=\"$instance\"}, replica)", - "hide": 0, - "includeAll": false, - "label": "Replica", - "multi": false, - "name": "replica", - "options": [], - "query": "label_values(git_upload_pack_phase_writing_total{instance=\"$instance\"}, replica)", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-6h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Queues", - "uid": "Zh_ncGsWk", - "version": 5 -} diff --git a/dashboards/gerrit/queues/gerrit-queues.jsonnet b/dashboards/gerrit/queues/gerrit-queues.jsonnet new file mode 100644 index 0000000..c89a891 --- /dev/null +++ b/dashboards/gerrit/queues/gerrit-queues.jsonnet @@ -0,0 +1,70 @@ +local grafana = import '../../../vendor/grafonnet/grafana.libsonnet'; +local dashboard = grafana.dashboard; +local template = grafana.template; +local graphPanel = grafana.graphPanel; +local prometheus = grafana.prometheus; + +local defaults = import '../../globals/defaults.libsonnet'; +local gridPos = import '../../globals/grid_pos.libsonnet'; +local publishVariables = import '../../globals/publish.libsonnet'; +local variables = import '../globals/variables.libsonnet'; + +local http_queue_panel = import './panels/http_queue.libsonnet'; +local http_threads_panel = import './panels/http_threads.libsonnet'; +local index_queue_panel = import './panels/index_queue.libsonnet'; +local index_threads_panel = import './panels/index_threads.libsonnet'; +local misc_queue_panel = import './panels/misc_queue.libsonnet'; +local misc_threads_panel = import './panels/misc_threads.libsonnet'; +local rest_api_request_rate_panel = import './panels/rest-api-request-rate.libsonnet'; +local ssh_queue_panel = import './panels/ssh_queue.libsonnet'; +local ssh_threads_panel = import './panels/ssh_threads.libsonnet'; + +dashboard.new( + 'Gerrit - Queues', + tags=['gerrit'], + schemaVersion=defaults.dashboards.schemaVersion, + editable=defaults.dashboards.editable, + time_from=defaults.dashboards.timeFrom, + time_to=defaults.dashboards.timeTo, + refresh=defaults.dashboards.refresh, + graphTooltip='shared_tooltip', +) +.addTemplate(variables.instance) +.addTemplate(variables.replica) +.addPanel( + ssh_threads_panel, + gridPos=gridPos.new(0, 0, 3) +) +.addPanel( + http_threads_panel, + gridPos=gridPos.new(0, 1, 3) +) +.addPanel( + index_threads_panel, + gridPos=gridPos.new(0, 2, 3) +) +.addPanel( + ssh_queue_panel, + gridPos=gridPos.new(1, 0, 3) +) +.addPanel( + http_queue_panel, + gridPos=gridPos.new(1, 1, 3) +) +.addPanel( + index_queue_panel, + gridPos=gridPos.new(1, 2, 3) +) +.addPanel( + misc_threads_panel, + gridPos=gridPos.new(2, 0) +) +.addPanel( + rest_api_request_rate_panel, + gridPos=gridPos.new(2, 1) +) +.addPanel( + misc_queue_panel, + gridPos=gridPos.new(3, 0) +) ++ if std.extVar('publish') then publishVariables else {} diff --git a/dashboards/gerrit/queues/panels/http_queue.libsonnet b/dashboards/gerrit/queues/panels/http_queue.libsonnet new file mode 100644 index 0000000..26ec00d --- /dev/null +++ b/dashboards/gerrit/queues/panels/http_queue.libsonnet @@ -0,0 +1,23 @@ +local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet'; +local prometheus = grafana.prometheus; + +local lineGraph = import '../../../globals/line-graph.libsonnet'; + +local HTTP_TARGET = 'http'; + +lineGraph.new( + title='HTTP queue', + labelY1='Tasks', +) +.addTarget( + prometheus.target( + 'http_server_jetty_threadpool_queue_size{instance="$instance",replica="$replica"}', + legendFormat=HTTP_TARGET, + ) +) +.addSeriesOverride( + { + alias: HTTP_TARGET, + color: '#FFB357', + } +) diff --git a/dashboards/gerrit/queues/panels/http_threads.libsonnet b/dashboards/gerrit/queues/panels/http_threads.libsonnet new file mode 100644 index 0000000..8698928 --- /dev/null +++ b/dashboards/gerrit/queues/panels/http_threads.libsonnet @@ -0,0 +1,65 @@ +local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet'; +local prometheus = grafana.prometheus; + +local lineGraph = import '../../../globals/line-graph.libsonnet'; + +local ACTIVE_THREADS_TARGET = 'active threads'; +local RESERVED_THREADS_TARGET = 'reserved threads'; +local MAX_POOL_SIZE_TARGET = 'max pool size'; +local POOL_SIZE_TARGET = 'pool size'; + +lineGraph.new( + title='HTTP threads', + labelY1='Threads', +) +.addTarget( + prometheus.target( + 'http_server_jetty_threadpool_active_threads{instance="$instance",replica="$replica"}', + legendFormat=ACTIVE_THREADS_TARGET, + ) +) +.addTarget( + prometheus.target( + 'http_server_jetty_threadpool_reserved_threads{instance="$instance",replica="$replica"}', + legendFormat=RESERVED_THREADS_TARGET, + ) +) +.addTarget( + prometheus.target( + 'http_server_jetty_threadpool_max_pool_size{instance="$instance",replica="$replica"}', + legendFormat=MAX_POOL_SIZE_TARGET, + ) +) +.addTarget( + prometheus.target( + 'http_server_jetty_threadpool_pool_size{instance="$instance",replica="$replica"}', + legendFormat= POOL_SIZE_TARGET, + ) +) +.addSeriesOverride( + { + alias: ACTIVE_THREADS_TARGET, + color: '#FFB357', + } +) +.addSeriesOverride( + { + alias: RESERVED_THREADS_TARGET, + color: '#56A64B', + fill: 0, + } +) +.addSeriesOverride( + { + alias: MAX_POOL_SIZE_TARGET, + color: '#FA6400', + fill: 0, + } +) +.addSeriesOverride( + { + alias: POOL_SIZE_TARGET, + color: '#1F60C4', + fill: 0, + } +) diff --git a/dashboards/gerrit/queues/panels/index_queue.libsonnet b/dashboards/gerrit/queues/panels/index_queue.libsonnet new file mode 100644 index 0000000..a110580 --- /dev/null +++ b/dashboards/gerrit/queues/panels/index_queue.libsonnet @@ -0,0 +1,36 @@ +local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet'; +local prometheus = grafana.prometheus; + +local lineGraph = import '../../../globals/line-graph.libsonnet'; + +local BATCH_TARGET = 'batch'; +local INTERACTIVE_TARGET = 'interactive'; + +lineGraph.new( + title='INDEX queue', + labelY1='Tasks', +) +.addTarget( + prometheus.target( + 'queue_index_batch_scheduled_tasks{instance="$instance",replica="$replica"}', + legendFormat=BATCH_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_index_interactive_scheduled_tasks{instance="$instance",replica="$replica"}', + legendFormat=INTERACTIVE_TARGET, + ) +) +.addSeriesOverride( + { + alias: BATCH_TARGET, + color: '#FFB357', + } +) +.addSeriesOverride( + { + alias: INTERACTIVE_TARGET, + color: '#C0D8FF', + } +) diff --git a/dashboards/gerrit/queues/panels/index_threads.libsonnet b/dashboards/gerrit/queues/panels/index_threads.libsonnet new file mode 100644 index 0000000..89b7faf --- /dev/null +++ b/dashboards/gerrit/queues/panels/index_threads.libsonnet @@ -0,0 +1,64 @@ +local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet'; +local prometheus = grafana.prometheus; + +local lineGraph = import '../../../globals/line-graph.libsonnet'; + +local BATCH_THREADS_TARGET = 'batch threads'; +local BATCH_POOL_SIZE_TARGET = 'batch pool size'; +local INTERACTIVE_THREADS_TARGET = 'interactive threads'; +local INTERACTIVE_POOL_SIZE_TARGET = 'interactive pool size'; + +lineGraph.new( + title='INDEX threads', + labelY1='Threads', +) +.addTarget( + prometheus.target( + 'queue_index_batch_active_threads{instance="$instance",replica="$replica"}', + legendFormat=BATCH_THREADS_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_index_batch_pool_size{instance="$instance",replica="$replica"}', + legendFormat=BATCH_POOL_SIZE_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_index_interactive_active_threads{instance="$instance",replica="$replica"}', + legendFormat=INTERACTIVE_THREADS_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_index_interactive_pool_size{instance="$instance",replica="$replica"}', + legendFormat=INTERACTIVE_POOL_SIZE_TARGET, + ) +) +.addSeriesOverride( + { + alias: BATCH_THREADS_TARGET, + color: '#FFB357', + } +) +.addSeriesOverride( + { + alias: BATCH_POOL_SIZE_TARGET, + color: '#FA6400', + fill: 0, + } +) +.addSeriesOverride( + { + alias: INTERACTIVE_THREADS_TARGET, + color: '#C0D8FF', + } +) +.addSeriesOverride( + { + alias: INTERACTIVE_POOL_SIZE_TARGET, + color: '#1F60C4', + fill: 0, + } +) diff --git a/dashboards/gerrit/queues/panels/misc_queue.libsonnet b/dashboards/gerrit/queues/panels/misc_queue.libsonnet new file mode 100644 index 0000000..a3b389e --- /dev/null +++ b/dashboards/gerrit/queues/panels/misc_queue.libsonnet @@ -0,0 +1,49 @@ +local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet'; +local prometheus = grafana.prometheus; + +local lineGraph = import '../../../globals/line-graph.libsonnet'; + +local STREAM_TARGET = 'stream threads'; +local EMAIL_TARGET = 'email threads'; +local RECEIVE_COMMIT_TARGET = 'receive-commit threads'; + +lineGraph.new( + title='MISC queues', + labelY1='Tasks', +) +.addTarget( + prometheus.target( + 'queue_ssh_stream_worker_scheduled_tasks{instance="$instance",replica="$replica"}', + legendFormat=STREAM_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_send_email_scheduled_tasks{instance="$instance",replica="$replica"}', + legendFormat=EMAIL_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_receive_commits_scheduled_tasks{instance="$instance",replica="$replica"}', + legendFormat=RECEIVE_COMMIT_TARGET, + ) +) +.addSeriesOverride( + { + alias: STREAM_TARGET, + color: '#8AB8FF', + } +) +.addSeriesOverride( + { + alias: EMAIL_TARGET, + color: '#96D98D', + } +) +.addSeriesOverride( + { + alias: RECEIVE_COMMIT_TARGET, + color: '#FF7383', + } +) diff --git a/dashboards/gerrit/queues/panels/misc_threads.libsonnet b/dashboards/gerrit/queues/panels/misc_threads.libsonnet new file mode 100644 index 0000000..a9ff614 --- /dev/null +++ b/dashboards/gerrit/queues/panels/misc_threads.libsonnet @@ -0,0 +1,91 @@ +local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet'; +local prometheus = grafana.prometheus; + +local lineGraph = import '../../../globals/line-graph.libsonnet'; + +local STREAM_TARGET = 'stream threads'; +local STREAM_POOL_SIZE_TARGET = 'stream pool size'; +local EMAIL_TARGET = 'email threads'; +local EMAIL_POOL_SIZE_TARGET = 'email pool size'; +local RECEIVE_COMMIT_TARGET = 'receive-commit threads'; +local RECEIVE_COMMIT_POOL_SIZE_TARGET = 'receive-commit pool size'; + +lineGraph.new( + title='MISC threads', + labelY1='Threads', +) +.addTarget( + prometheus.target( + 'queue_ssh_stream_worker_active_threads{instance="$instance",replica="$replica"}', + legendFormat=STREAM_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_ssh_stream_worker_pool_size{instance="$instance",replica="$replica"}', + legendFormat=STREAM_POOL_SIZE_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_send_email_active_threads{instance="$instance",replica="$replica"}', + legendFormat=EMAIL_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_send_email_pool_size{instance="$instance",replica="$replica"}', + legendFormat=EMAIL_POOL_SIZE_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_receive_commits_active_threads{instance="$instance",replica="$replica"}', + legendFormat=RECEIVE_COMMIT_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_receive_commits_pool_size{instance="$instance",replica="$replica"}', + legendFormat=RECEIVE_COMMIT_POOL_SIZE_TARGET, + ) +) +.addSeriesOverride( + { + alias: STREAM_TARGET, + color: '#C0D8FF', + } +) +.addSeriesOverride( + { + alias: STREAM_POOL_SIZE_TARGET, + color: '#1F60C4', + fill: 0, + } +) +.addSeriesOverride( + { + alias: EMAIL_TARGET, + color: '#96D98D', + } +) +.addSeriesOverride( + { + alias: EMAIL_POOL_SIZE_TARGET, + color: '#37872D', + fill: 0, + } +) +.addSeriesOverride( + { + alias: RECEIVE_COMMIT_TARGET, + color: '#FFA6B0', + } +) +.addSeriesOverride( + { + alias: RECEIVE_COMMIT_POOL_SIZE_TARGET, + color: '#C4162A', + fill: 0, + } +) diff --git a/dashboards/gerrit/queues/panels/rest-api-request-rate.libsonnet b/dashboards/gerrit/queues/panels/rest-api-request-rate.libsonnet new file mode 100644 index 0000000..25a44c9 --- /dev/null +++ b/dashboards/gerrit/queues/panels/rest-api-request-rate.libsonnet @@ -0,0 +1,16 @@ +local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet'; +local prometheus = grafana.prometheus; + +local lineGraph = import '../../../globals/line-graph.libsonnet'; + +lineGraph.new( + title='REST API request rate', + labelY1='Requests/Second', + formatY1='reqps', +) +.addTarget( + prometheus.target( + 'rate(http_server_rest_api_count_total_total{instance="$instance",replica="$replica"}[5m])', + legendFormat='REST API request rate', + ) +) diff --git a/dashboards/gerrit/queues/panels/ssh_queue.libsonnet b/dashboards/gerrit/queues/panels/ssh_queue.libsonnet new file mode 100644 index 0000000..78d7e55 --- /dev/null +++ b/dashboards/gerrit/queues/panels/ssh_queue.libsonnet @@ -0,0 +1,36 @@ +local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet'; +local prometheus = grafana.prometheus; + +local lineGraph = import '../../../globals/line-graph.libsonnet'; + +local BATCH_TARGET = 'batch'; +local INTERACTIVE_TARGET = 'interactive'; + +lineGraph.new( + title='SSH queue', + labelY1='Tasks', +) +.addTarget( + prometheus.target( + 'queue_ssh_batch_worker_scheduled_tasks{instance="$instance",replica="$replica"}', + legendFormat=BATCH_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_ssh_interactive_worker_scheduled_tasks{instance="$instance",replica="$replica"}', + legendFormat=INTERACTIVE_TARGET, + ) +) +.addSeriesOverride( + { + alias: BATCH_TARGET, + color: '#FFB357', + } +) +.addSeriesOverride( + { + alias: INTERACTIVE_TARGET, + color: '#C0D8FF', + } +) diff --git a/dashboards/gerrit/queues/panels/ssh_threads.libsonnet b/dashboards/gerrit/queues/panels/ssh_threads.libsonnet new file mode 100644 index 0000000..e050d74 --- /dev/null +++ b/dashboards/gerrit/queues/panels/ssh_threads.libsonnet @@ -0,0 +1,64 @@ +local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet'; +local prometheus = grafana.prometheus; + +local lineGraph = import '../../../globals/line-graph.libsonnet'; + +local BATCH_THREADS_TARGET = 'batch threads'; +local BATCH_POOL_SIZE_TARGET = 'batch pool size'; +local INTERACTIVE_THREADS_TARGET = 'interactive threads'; +local INTERACTIVE_POOL_SIZE_TARGET = 'interactive pool size'; + +lineGraph.new( + title='SSH threads', + labelY1='Threads', +) +.addTarget( + prometheus.target( + 'queue_ssh_batch_worker_active_threads{instance="$instance",replica="$replica"}', + legendFormat=BATCH_THREADS_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_ssh_batch_worker_pool_size{instance="$instance",replica="$replica"}', + legendFormat=BATCH_POOL_SIZE_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_ssh_interactive_worker_active_threads{instance="$instance",replica="$replica"}', + legendFormat=INTERACTIVE_THREADS_TARGET, + ) +) +.addTarget( + prometheus.target( + 'queue_ssh_interactive_worker_pool_size{instance="$instance",replica="$replica"}', + legendFormat=INTERACTIVE_POOL_SIZE_TARGET, + ) +) +.addSeriesOverride( + { + alias: BATCH_THREADS_TARGET, + color: '#FFB357', + } +) +.addSeriesOverride( + { + alias: BATCH_POOL_SIZE_TARGET, + color: '#FA6400', + fill: 0, + } +) +.addSeriesOverride( + { + alias: INTERACTIVE_THREADS_TARGET, + color: '#C0D8FF', + } +) +.addSeriesOverride( + { + alias: INTERACTIVE_POOL_SIZE_TARGET, + color: '#1F60C4', + fill: 0, + } +) diff --git a/dashboards/globals/defaults.libsonnet b/dashboards/globals/defaults.libsonnet index f49f619..5e4dae4 100644 --- a/dashboards/globals/defaults.libsonnet +++ b/dashboards/globals/defaults.libsonnet @@ -6,9 +6,5 @@ timeTo: 'now', refresh: '1m', }, - panels: { - width: 12, - height: 11, - }, datasource: if std.extVar('publish') then '${DS_PROMETHEUS}' else 'Prometheus', } diff --git a/dashboards/globals/grid_pos.libsonnet b/dashboards/globals/grid_pos.libsonnet index b421c9c..dcc0cd0 100644 --- a/dashboards/globals/grid_pos.libsonnet +++ b/dashboards/globals/grid_pos.libsonnet @@ -1,13 +1,19 @@ local defaults = import './defaults.libsonnet'; +local TOTAL_WIDTH = 24; +local DEFAULT_HEIGHT = 11; + { new( row, column, + total_columns=2, ):: { - x: column * defaults.panels.width, - y: row * defaults.panels.height, - w: defaults.panels.width, - h: defaults.panels.height, + local width = TOTAL_WIDTH / total_columns, + + x: column * width, + y: row * DEFAULT_HEIGHT, + w: width, + h: DEFAULT_HEIGHT, }, }