Convert overview dashboard to grafonnet
In addition this updates Grafonnet to include bar gauges.
Change-Id: I538bd965d52f841b24c9607fc97d5ac748b9d68b
diff --git a/dashboards/gerrit-overview.json b/dashboards/gerrit-overview.json
deleted file mode 100644
index c4784fc..0000000
--- a/dashboards/gerrit-overview.json
+++ /dev/null
@@ -1,1310 +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": [
- {
- "columns": [],
- "datasource": "${DS_PROMETHEUS}",
- "fontSize": "100%",
- "gridPos": {
- "h": 4,
- "w": 24,
- "x": 0,
- "y": 0
- },
- "id": 48,
- "pageSize": null,
- "showHeader": true,
- "sort": {
- "col": 1,
- "desc": true
- },
- "styles": [
- {
- "$$hashKey": "object:289",
- "alias": "Time",
- "align": "auto",
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "pattern": "Time",
- "type": "hidden"
- },
- {
- "$$hashKey": "object:557",
- "alias": "Gerrit version",
- "align": "auto",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "version",
- "thresholds": [],
- "type": "string",
- "unit": "short"
- },
- {
- "$$hashKey": "object:955",
- "alias": "Java version",
- "align": "auto",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "javaversion",
- "thresholds": [],
- "type": "string",
- "unit": "short"
- },
- {
- "$$hashKey": "object:976",
- "alias": "Gerrit revision",
- "align": "auto",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "link": true,
- "linkTargetBlank": true,
- "linkUrl": "https://gerrit.googlesource.com/gerrit/+/${__cell:raw}",
- "mappingType": 1,
- "pattern": "revision",
- "thresholds": [],
- "type": "string",
- "unit": "short"
- },
- {
- "$$hashKey": "object:1249",
- "alias": "",
- "align": "auto",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "mappingType": 1,
- "pattern": "Value",
- "thresholds": [],
- "type": "hidden",
- "unit": "short"
- },
- {
- "$$hashKey": "object:1278",
- "alias": "Gerrit instance",
- "align": "auto",
- "colorMode": null,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "dateFormat": "YYYY-MM-DD HH:mm:ss",
- "decimals": 2,
- "link": true,
- "linkTargetBlank": true,
- "linkTooltip": "Link to the gerrit instance",
- "linkUrl": "https://${__cell:raw}",
- "mappingType": 1,
- "pattern": "instance",
- "thresholds": [],
- "type": "string",
- "unit": "short"
- }
- ],
- "targets": [
- {
- "expr": "max(gerrit_build_info{instance=\"$instance\",replica=\"$replica\"}) by (instance, version, revision, javaversion)",
- "format": "table",
- "instant": true,
- "interval": "",
- "legendFormat": "",
- "refId": "B"
- }
- ],
- "timeFrom": null,
- "timeShift": null,
- "title": "Gerrit Version",
- "transform": "table",
- "type": "table"
- },
- {
- "collapsed": false,
- "datasource": "${DS_PROMETHEUS}",
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 4
- },
- "id": 46,
- "panels": [],
- "title": "",
- "type": "row"
- },
- {
- "cacheTimeout": null,
- "datasource": "${DS_PROMETHEUS}",
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 5
- },
- "id": 19,
- "links": [],
- "options": {
- "fieldOptions": {
- "calcs": [
- "last"
- ],
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "id": 0,
- "op": "=",
- "text": "N/A",
- "type": 1,
- "value": "null"
- }
- ],
- "max": 100,
- "min": 0,
- "nullValueMode": "connected",
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "#299c46",
- "value": null
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 60
- },
- {
- "color": "#d44a3a",
- "value": 90
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": [],
- "values": false
- },
- "orientation": "horizontal",
- "showThresholdLabels": false,
- "showThresholdMarkers": true
- },
- "pluginVersion": "6.7.1",
- "targets": [
- {
- "expr": "(rate(proc_cpu_usage{instance=\"$instance\",replica=\"$replica\"}[5m])/proc_cpu_num_cores{instance=\"$instance\",replica=\"$replica\"})*100",
- "refId": "A"
- }
- ],
- "timeFrom": null,
- "timeShift": null,
- "title": "CPU Usage",
- "type": "gauge"
- },
- {
- "cacheTimeout": null,
- "datasource": "${DS_PROMETHEUS}",
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 5
- },
- "id": 20,
- "links": [],
- "options": {
- "fieldOptions": {
- "calcs": [
- "last"
- ],
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "id": 0,
- "op": "=",
- "text": "N/A",
- "type": 1,
- "value": "null"
- }
- ],
- "max": 100,
- "min": 0,
- "nullValueMode": "connected",
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "#299c46",
- "value": null
- },
- {
- "color": "rgba(237, 129, 40, 0.89)",
- "value": 60
- },
- {
- "color": "#d44a3a",
- "value": 90
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": [],
- "values": false
- },
- "orientation": "horizontal",
- "showThresholdLabels": false,
- "showThresholdMarkers": true
- },
- "pluginVersion": "6.7.1",
- "targets": [
- {
- "expr": "(proc_jvm_memory_heap_used{instance=\"$instance\",replica=\"$replica\"}/proc_jvm_memory_heap_committed{instance=\"$instance\",replica=\"$replica\"})*100",
- "refId": "A"
- }
- ],
- "timeFrom": null,
- "timeShift": null,
- "title": "Heap Memory Usage",
- "type": "gauge"
- },
- {
- "cacheTimeout": null,
- "datasource": "${DS_PROMETHEUS}",
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 16,
- "y": 5
- },
- "id": 40,
- "links": [],
- "options": {
- "displayMode": "basic",
- "fieldOptions": {
- "calcs": [
- "lastNotNull"
- ],
- "defaults": {
- "mappings": [],
- "min": 0,
- "nullValueMode": "connected",
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- }
- ]
- },
- "unit": "none"
- },
- "overrides": [],
- "values": false
- },
- "orientation": "vertical",
- "showUnfilled": true
- },
- "pluginVersion": "6.7.1",
- "targets": [
- {
- "expr": "proc_jvm_thread_num_daemon_live{instance=\"$instance\",replica=\"$replica\"}",
- "legendFormat": "current live threads (daemon)",
- "refId": "A"
- },
- {
- "expr": "proc_jvm_thread_num_live{instance=\"$instance\",replica=\"$replica\"}",
- "legendFormat": "current live threads",
- "refId": "B"
- },
- {
- "expr": "proc_jvm_thread_num_peak_live{instance=\"$instance\",replica=\"$replica\"}",
- "legendFormat": "peak of live threads",
- "refId": "C"
- }
- ],
- "timeFrom": null,
- "timeShift": null,
- "title": "Live Threads",
- "type": "bargauge"
- },
- {
- "cacheTimeout": null,
- "datasource": "${DS_PROMETHEUS}",
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 0,
- "y": 11
- },
- "id": 11,
- "links": [],
- "options": {
- "fieldOptions": {
- "calcs": [
- "last"
- ],
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [],
- "max": 50,
- "min": 0,
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "red",
- "value": 30
- }
- ]
- },
- "unit": "ms"
- },
- "overrides": [],
- "values": false
- },
- "orientation": "auto",
- "showThresholdLabels": false,
- "showThresholdMarkers": true
- },
- "pluginVersion": "6.7.1",
- "targets": [
- {
- "expr": "http_server_rest_api_server_latency_total{quantile=\"0.99\", instance=\"$instance\",replica=\"$replica\"}",
- "intervalFactor": 4,
- "legendFormat": "quantile {{quantile}}",
- "refId": "A"
- }
- ],
- "timeFrom": null,
- "timeShift": null,
- "title": "REST API latency (0.99 quantile)",
- "type": "gauge"
- },
- {
- "cacheTimeout": null,
- "datasource": "${DS_PROMETHEUS}",
- "description": "Excludes 404 and 401, since these error codes are caused by client behaviour and are overrepresented in the data.",
- "gridPos": {
- "h": 6,
- "w": 8,
- "x": 8,
- "y": 11
- },
- "id": 13,
- "links": [],
- "options": {
- "fieldOptions": {
- "calcs": [
- "mean"
- ],
- "defaults": {
- "color": {
- "mode": "thresholds"
- },
- "mappings": [
- {
- "id": 0,
- "op": "=",
- "text": "N/A",
- "type": 1,
- "value": "null"
- }
- ],
- "max": 100,
- "min": 0,
- "nullValueMode": "connected",
- "thresholds": {
- "mode": "absolute",
- "steps": [
- {
- "color": "green",
- "value": null
- },
- {
- "color": "#EAB839",
- "value": 5
- },
- {
- "color": "red",
- "value": 10
- }
- ]
- },
- "unit": "percent"
- },
- "overrides": [],
- "values": false
- },
- "orientation": "horizontal",
- "showThresholdLabels": false,
- "showThresholdMarkers": true
- },
- "pluginVersion": "6.7.1",
- "targets": [
- {
- "expr": "(increase(http_server_error_count_total_total{instance=\"$instance\",replica=\"$replica\"}[5m]) - increase(http_server_error_count_404_total{instance=\"$instance\",replica=\"$replica\"}[5m]) - increase(http_server_error_count_401_total{instance=\"$instance\",replica=\"$replica\"}[5m])) / (increase(http_server_success_count_total_total{instance=\"$instance\",replica=\"$replica\"}[5m]) + increase(http_server_error_count_total_total{instance=\"$instance\",replica=\"$replica\"}[5m]) - increase(http_server_error_count_404_total{instance=\"$instance\",replica=\"$replica\"}[5m]) - increase(http_server_error_count_401_total{instance=\"$instance\",replica=\"$replica\"}[5m]))*100",
- "refId": "A"
- }
- ],
- "timeFrom": null,
- "timeShift": null,
- "title": "HTTP Request Error Rate (last 5 min)",
- "type": "gauge"
- },
- {
- "datasource": "${DS_PROMETHEUS}",
- "gridPos": {
- "h": 1,
- "w": 24,
- "x": 0,
- "y": 17
- },
- "id": 44,
- "title": "",
- "type": "row"
- },
- {
- "aliasColors": {},
- "bars": false,
- "cacheTimeout": null,
- "dashLength": 10,
- "dashes": false,
- "datasource": "${DS_PROMETHEUS}",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 9,
- "w": 18,
- "x": 0,
- "y": 18
- },
- "hiddenSeries": false,
- "id": 39,
- "legend": {
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "show": false,
- "total": false,
- "values": false
- },
- "lines": true,
- "linewidth": 1,
- "links": [],
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": true,
- "targets": [
- {
- "expr": "up{instance=\"$instance\",replica=\"$replica\"}",
- "format": "time_series",
- "legendFormat": "{{instance}}",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Gerrit Availability",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "decimals": 0,
- "format": "short",
- "label": "",
- "logBase": 1,
- "max": "1",
- "min": "0",
- "show": true
- },
- {
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "cacheTimeout": null,
- "colorBackground": true,
- "colorValue": false,
- "colors": [
- "#d44a3a",
- "rgba(237, 129, 40, 0.89)",
- "#299c46"
- ],
- "datasource": "${DS_PROMETHEUS}",
- "decimals": 2,
- "format": "percent",
- "gauge": {
- "maxValue": 100,
- "minValue": 0,
- "show": false,
- "thresholdLabels": false,
- "thresholdMarkers": true
- },
- "gridPos": {
- "h": 9,
- "w": 6,
- "x": 18,
- "y": 18
- },
- "id": 42,
- "interval": null,
- "links": [],
- "mappingType": 1,
- "mappingTypes": [
- {
- "name": "value to text",
- "value": 1
- },
- {
- "name": "range to text",
- "value": 2
- }
- ],
- "maxDataPoints": 100,
- "nullPointMode": "connected",
- "nullText": null,
- "postfix": "",
- "postfixFontSize": "50%",
- "prefix": "",
- "prefixFontSize": "50%",
- "rangeMaps": [
- {
- "from": "null",
- "text": "N/A",
- "to": "null"
- }
- ],
- "sparkline": {
- "fillColor": "rgba(31, 118, 189, 0.18)",
- "full": false,
- "lineColor": "rgb(31, 120, 193)",
- "show": false,
- "ymax": null,
- "ymin": null
- },
- "tableColumn": "",
- "targets": [
- {
- "expr": "avg_over_time(up{instance=\"$instance\",replica=\"$replica\"}[1d])*100",
- "format": "time_series",
- "legendFormat": "{{instance}}",
- "refId": "A"
- }
- ],
- "thresholds": "98, 99",
- "timeFrom": null,
- "timeShift": null,
- "title": "Gerrit availability [last 24h]",
- "type": "singlestat",
- "valueFontSize": "150%",
- "valueMaps": [
- {
- "op": "=",
- "text": "N/A",
- "value": "null"
- }
- ],
- "valueName": "current"
- },
- {
- "aliasColors": {},
- "bars": true,
- "dashLength": 10,
- "dashes": false,
- "datasource": "${DS_PROMETHEUS}",
- "description": "This excludes response code 404, since it is caused by an issue with the Gerrit Trigger plugin.",
- "fill": 1,
- "fillGradient": 0,
- "gridPos": {
- "h": 10,
- "w": 24,
- "x": 0,
- "y": 27
- },
- "hiddenSeries": false,
- "id": 2,
- "interval": "1m",
- "legend": {
- "alignAsTable": true,
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "rightSide": true,
- "show": true,
- "total": false,
- "values": false
- },
- "lines": false,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [
- {
- "alias": "200",
- "color": "#37872D"
- },
- {
- "alias": "201",
- "color": "#56A64B"
- },
- {
- "alias": "204",
- "color": "#73BF69"
- },
- {
- "alias": "301",
- "color": "rgb(110, 210, 110)"
- },
- {
- "alias": "304",
- "color": "rgb(150, 225, 150)"
- },
- {
- "alias": "400",
- "color": "#FA6400"
- },
- {
- "alias": "401",
- "color": "#FF780A",
- "hiddenSeries": true
- },
- {
- "alias": "403",
- "color": "#FF9830"
- },
- {
- "alias": "404",
- "color": "#FFB357",
- "hiddenSeries": true
- },
- {
- "alias": "409",
- "color": "#FFCB7D"
- },
- {
- "alias": "412",
- "color": "#E0B400"
- },
- {
- "alias": "422",
- "color": "#F2CC0C"
- },
- {
- "alias": "500",
- "color": "#C4162A"
- },
- {
- "alias": "501",
- "color": "#E02F44"
- },
- {
- "alias": "503",
- "color": "#F2495C"
- }
- ],
- "spaceLength": 10,
- "stack": true,
- "steppedLine": false,
- "targets": [
- {
- "expr": "(increase(http_server_success_count_200_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "200",
- "refId": "A"
- },
- {
- "expr": "(increase(http_server_success_count_201_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "201",
- "refId": "C"
- },
- {
- "expr": "(increase(http_server_success_count_204_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "204",
- "refId": "D"
- },
- {
- "expr": "(increase(http_server_success_count_301_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "301",
- "refId": "E"
- },
- {
- "expr": "(increase(http_server_success_count_304_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "304",
- "refId": "F"
- },
- {
- "expr": "(increase(http_server_error_count_400_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "400",
- "refId": "B"
- },
- {
- "expr": "(increase(http_server_error_count_401_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "401",
- "refId": "G"
- },
- {
- "expr": "(increase(http_server_error_count_403_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "403",
- "refId": "H"
- },
- {
- "expr": "(increase(http_server_error_count_404_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "instant": false,
- "intervalFactor": 1,
- "legendFormat": "404",
- "refId": "I"
- },
- {
- "expr": "(increase(http_server_error_count_405_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "405",
- "refId": "J"
- },
- {
- "expr": "(increase(http_server_error_count_409_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "409",
- "refId": "K"
- },
- {
- "expr": "(increase(http_server_error_count_412_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "412",
- "refId": "L"
- },
- {
- "expr": "(increase(http_server_error_count_422_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "422",
- "refId": "M"
- },
- {
- "expr": "(increase(http_server_error_count_500_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "500",
- "refId": "N"
- },
- {
- "expr": "(increase(http_server_error_count_501_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "501",
- "refId": "O"
- },
- {
- "expr": "(increase(http_server_error_count_503_total{instance=\"$instance\",replica=\"$replica\"}[5m]))/5",
- "intervalFactor": 1,
- "legendFormat": "503",
- "refId": "P"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "HTTP response status",
- "tooltip": {
- "shared": true,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "time",
- "name": null,
- "show": true,
- "values": []
- },
- "yaxes": [
- {
- "format": "short",
- "label": "Count",
- "logBase": 1,
- "max": null,
- "min": "0",
- "show": true
- },
- {
- "decimals": null,
- "format": "short",
- "label": null,
- "logBase": 1,
- "max": null,
- "min": null,
- "show": true
- }
- ],
- "yaxis": {
- "align": false,
- "alignLevel": null
- }
- },
- {
- "aliasColors": {},
- "bars": true,
- "dashLength": 10,
- "dashes": false,
- "datasource": "${DS_PROMETHEUS}",
- "fill": 0,
- "fillGradient": 0,
- "gridPos": {
- "h": 9,
- "w": 12,
- "x": 0,
- "y": 37
- },
- "hiddenSeries": false,
- "id": 9,
- "legend": {
- "alignAsTable": true,
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "rightSide": true,
- "show": false,
- "total": false,
- "values": false
- },
- "lines": false,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pluginVersion": "6.5.2",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "increase(events_assignee_changed_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "assignee changed",
- "refId": "A"
- },
- {
- "expr": "increase(events_change_abandoned_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "change abandoned",
- "refId": "B"
- },
- {
- "expr": "increase(events_change_merged_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "change merged",
- "refId": "C"
- },
- {
- "expr": "increase(events_comment_added_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "comment added",
- "refId": "D"
- },
- {
- "expr": "increase(events_patchset_created_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "patchset created",
- "refId": "E"
- },
- {
- "expr": "increase(events_ref_replicated_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "ref replicated",
- "refId": "F"
- },
- {
- "expr": "increase(events_ref_updated_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "ref updated",
- "refId": "G"
- },
- {
- "expr": "increase(events_reviewer_added_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "reviewer added",
- "refId": "H"
- },
- {
- "expr": "increase(events_reviewer_deleted_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "reviewer deleted",
- "refId": "I"
- },
- {
- "expr": "increase(events_topic_changed_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "topic changed",
- "refId": "J"
- },
- {
- "expr": "increase(events_vote_deleted_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "vote deleted",
- "refId": "K"
- },
- {
- "expr": "increase(events_wip_state_changed_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 1,
- "legendFormat": "wip state changed",
- "refId": "L"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Gerrit Events (last 5 min)",
- "tooltip": {
- "shared": false,
- "sort": 2,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "series",
- "name": null,
- "show": true,
- "values": [
- "current"
- ]
- },
- "yaxes": [
- {
- "format": "short",
- "label": "Count [5 min]",
- "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": true,
- "dashLength": 10,
- "dashes": false,
- "datasource": "${DS_PROMETHEUS}",
- "fill": 0,
- "fillGradient": 0,
- "gridPos": {
- "h": 9,
- "w": 12,
- "x": 12,
- "y": 37
- },
- "hiddenSeries": false,
- "id": 41,
- "legend": {
- "alignAsTable": true,
- "avg": false,
- "current": false,
- "max": false,
- "min": false,
- "rightSide": true,
- "show": false,
- "total": false,
- "values": false
- },
- "lines": false,
- "linewidth": 1,
- "nullPointMode": "null",
- "options": {
- "dataLinks": []
- },
- "percentage": false,
- "pluginVersion": "6.5.2",
- "pointradius": 2,
- "points": false,
- "renderer": "flot",
- "seriesOverrides": [],
- "spaceLength": 10,
- "stack": false,
- "steppedLine": false,
- "targets": [
- {
- "expr": "increase(git_upload_pack_request_count_FETCH_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 4,
- "legendFormat": "Fetch",
- "refId": "B"
- },
- {
- "expr": "increase(git_upload_pack_request_count_CLONE_total{instance=\"$instance\",replica=\"$replica\"}[5m])",
- "intervalFactor": 4,
- "legendFormat": "Clone",
- "refId": "A"
- }
- ],
- "thresholds": [],
- "timeFrom": null,
- "timeRegions": [],
- "timeShift": null,
- "title": "Git Fetch/Clone upload-pack requests (last 5 min)",
- "tooltip": {
- "shared": false,
- "sort": 0,
- "value_type": "individual"
- },
- "type": "graph",
- "xaxis": {
- "buckets": null,
- "mode": "series",
- "name": null,
- "show": true,
- "values": [
- "current"
- ]
- },
- "yaxes": [
- {
- "format": "short",
- "label": "Count [5 min]",
- "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
- }
- }
- ],
- "refresh": "1m",
- "schemaVersion": 22,
- "style": "dark",
- "tags": [],
- "templating": {
- "list": [
- {
- "allValue": null,
- "current": {
- "tags": [],
- "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-24h",
- "to": "now"
- },
- "timepicker": {
- "refresh_intervals": [
- "5s",
- "10s",
- "30s",
- "1m",
- "5m",
- "15m",
- "30m",
- "1h",
- "2h",
- "1d"
- ]
- },
- "timezone": "",
- "title": "Gerrit Overview",
- "uid": "uXZMn9PWz",
- "version": 15
-}
diff --git a/dashboards/gerrit/overview/gerrit-overview.jsonnet b/dashboards/gerrit/overview/gerrit-overview.jsonnet
new file mode 100644
index 0000000..ba44202
--- /dev/null
+++ b/dashboards/gerrit/overview/gerrit-overview.jsonnet
@@ -0,0 +1,115 @@
+local grafana = import '../../../vendor/grafonnet/grafana.libsonnet';
+local dashboard = grafana.dashboard;
+local template = grafana.template;
+local row = grafana.row;
+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 availability_panel = import './panels/availability.libsonnet';
+local availability_time_panel = import './panels/availability-time.libsonnet';
+local cpu_usage_panel = import './panels/cpu-usage.libsonnet';
+local events_panel = import './panels/events.libsonnet';
+local git_panel = import './panels/git-fetch-clone.libsonnet';
+local heap_usage_panel = import './panels/heap-usage.libsonnet';
+local http_responses_panel = import './panels/http-responses.libsonnet';
+local request_errors_panel = import './panels/request-errors.libsonnet';
+local rest_latency_panel = import './panels/rest-latency.libsonnet';
+local threads_panel = import './panels/threads.libsonnet';
+local version_table_panel = import './panels/version-table.libsonnet';
+
+dashboard.new(
+ 'Gerrit - Overview',
+ 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(
+ version_table_panel,
+ gridPos={
+ w: 24,
+ h: 3,
+ x: 0,
+ y: 0,
+ },
+)
+.addPanel(
+ cpu_usage_panel,
+ gridPos=gridPos.new(1,0,3,height=6),
+)
+.addPanel(
+ heap_usage_panel,
+ gridPos=gridPos.new(1,1,3,height=6),
+)
+.addPanel(
+ threads_panel,
+ gridPos=gridPos.new(1,2,3,height=6),
+)
+.addPanel(
+ rest_latency_panel,
+ gridPos=gridPos.new(2,0,3,height=6),
+)
+.addPanel(
+ request_errors_panel,
+ gridPos=gridPos.new(2,1,3,height=6),
+)
+.addPanel(
+ row.new(title=''),
+ gridPos={
+ w: 24,
+ h: 1,
+ x: 0,
+ y: 15,
+ },
+)
+.addPanel(
+ availability_time_panel,
+ gridPos={
+ w: 18,
+ h: 11,
+ x: 0,
+ y: 15,
+ },
+)
+.addPanel(
+ availability_panel,
+ gridPos={
+ w: 6,
+ h: 11,
+ x: 18,
+ y: 15,
+ },
+)
+.addPanel(
+ events_panel,
+ gridPos={
+ w: 18,
+ h: 11,
+ x: 0,
+ y: 30,
+ },
+)
+.addPanel(
+ git_panel,
+ gridPos={
+ w: 6,
+ h: 11,
+ x: 18,
+ y: 30,
+ },
+)
+.addPanel(
+ http_responses_panel,
+ gridPos=gridPos.new(4,0,1, height=22),
+)
++ if std.extVar('publish') then publishVariables else {}
diff --git a/dashboards/gerrit/overview/panels/availability-time.libsonnet b/dashboards/gerrit/overview/panels/availability-time.libsonnet
new file mode 100644
index 0000000..fb1389e
--- /dev/null
+++ b/dashboards/gerrit/overview/panels/availability-time.libsonnet
@@ -0,0 +1,19 @@
+local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet';
+local prometheus = grafana.prometheus;
+
+local lineGraph = import '../../../globals/line-graph.libsonnet';
+local yAxis = import '../../../globals/yaxis.libsonnet';
+
+lineGraph.new(
+ title='Gerrit Availability',
+ yAxis1=yAxis.new(label='Count'),
+ legend=false,
+ min=0,
+ max=1,
+)
+.addTarget(
+ prometheus.target(
+ 'up{instance="$instance",replica="$replica"}',
+ legendFormat='{{instance}}',
+ )
+)
diff --git a/dashboards/gerrit/overview/panels/availability.libsonnet b/dashboards/gerrit/overview/panels/availability.libsonnet
new file mode 100644
index 0000000..58c16a2
--- /dev/null
+++ b/dashboards/gerrit/overview/panels/availability.libsonnet
@@ -0,0 +1,24 @@
+local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet';
+local prometheus = grafana.prometheus;
+local stat = grafana.singlestat;
+
+stat.new(
+ title='Gerrit Availability [last 24h]',
+ datasource='Prometheus',
+ colorBackground=true,
+ colors=[
+ "red",
+ "orange",
+ "darkgreen",
+ ],
+ format='percent',
+ thresholds='98, 99',
+ valueFontSize='150%',
+ valueName='current',
+)
+.addTarget(
+ prometheus.target(
+ 'avg_over_time(up{instance="$instance",replica="$replica"}[1d])*100',
+ legendFormat='{{instance}}',
+ )
+)
diff --git a/dashboards/gerrit/overview/panels/cpu-usage.libsonnet b/dashboards/gerrit/overview/panels/cpu-usage.libsonnet
new file mode 100644
index 0000000..5d2efa9
--- /dev/null
+++ b/dashboards/gerrit/overview/panels/cpu-usage.libsonnet
@@ -0,0 +1,30 @@
+local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet';
+local prometheus = grafana.prometheus;
+local gauge = grafana.gaugePanel;
+
+gauge.new(
+ title='CPU Usage',
+ datasource='Prometheus',
+)
+.addTarget(
+ target=prometheus.target(
+ '(rate(proc_cpu_usage{instance="$instance",replica="$replica"}[2m])/proc_cpu_num_cores{instance="$instance",replica="$replica"})*100',
+ legendFormat=' ',
+ intervalFactor=1,
+ instant=true,
+ ),
+)
+.addThresholds([
+ {
+ color: 'green',
+ value: null
+ },
+ {
+ color: 'orange',
+ value: 60
+ },
+ {
+ color: 'red',
+ value: 90
+ }
+])
diff --git a/dashboards/gerrit/overview/panels/events.libsonnet b/dashboards/gerrit/overview/panels/events.libsonnet
new file mode 100644
index 0000000..0c6982c
--- /dev/null
+++ b/dashboards/gerrit/overview/panels/events.libsonnet
@@ -0,0 +1,37 @@
+local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet';
+local prometheus = grafana.prometheus;
+
+local barGraph = import '../../../globals/bar-graph.libsonnet';
+local yAxis = import '../../../globals/yaxis.libsonnet';
+
+local events = [
+ 'assignee_changed',
+ 'change_abandoned',
+ 'change_merged',
+ 'comment_added',
+ 'patchset_created',
+ 'change_abandoned',
+ 'ref_replicated',
+ 'ref_updated',
+ 'reviewer_added',
+ 'reviewer_deleted',
+ 'topic_changed',
+ 'vote_deleted',
+ 'wip_state_changed',
+];
+
+barGraph.new(
+ title='Gerrit Events (last 5 min)',
+ yAxis1=yAxis.new(label='Count [5 min]'),
+ x_axis_mode='series',
+ x_axis_values='current',
+ legend=false,
+)
+.addTargets([
+ prometheus.target(
+ std.format('increase(events_%s_total{instance="$instance",replica="$replica"}[5m])', event),
+ legendFormat=std.strReplace(event, '_', ' '),
+ intervalFactor=1,
+ instant=true,
+ ) for event in events
+])
diff --git a/dashboards/gerrit/overview/panels/git-fetch-clone.libsonnet b/dashboards/gerrit/overview/panels/git-fetch-clone.libsonnet
new file mode 100644
index 0000000..26cf592
--- /dev/null
+++ b/dashboards/gerrit/overview/panels/git-fetch-clone.libsonnet
@@ -0,0 +1,26 @@
+local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet';
+local prometheus = grafana.prometheus;
+
+local barGraph = import '../../../globals/bar-graph.libsonnet';
+local yAxis = import '../../../globals/yaxis.libsonnet';
+
+local actions = [
+ 'FETCH',
+ 'CLONE'
+];
+
+barGraph.new(
+ title='Git Fetch/Clone upload-pack requests (last 5 min)',
+ yAxis1=yAxis.new(label='Count [5 min]'),
+ x_axis_mode='series',
+ x_axis_values='current',
+ legend=false,
+)
+.addTargets([
+ prometheus.target(
+ std.format('increase(git_upload_pack_request_count_%s_total{instance="$instance",replica="$replica"}[5m])', action),
+ legendFormat=action,
+ intervalFactor=1,
+ instant=true,
+ ) for action in actions
+])
diff --git a/dashboards/gerrit/overview/panels/heap-usage.libsonnet b/dashboards/gerrit/overview/panels/heap-usage.libsonnet
new file mode 100644
index 0000000..1ec6a64
--- /dev/null
+++ b/dashboards/gerrit/overview/panels/heap-usage.libsonnet
@@ -0,0 +1,30 @@
+local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet';
+local prometheus = grafana.prometheus;
+local gauge = grafana.gaugePanel;
+
+gauge.new(
+ title='Heap Memory Usage',
+ datasource='Prometheus',
+)
+.addTarget(
+ target=prometheus.target(
+ '(proc_jvm_memory_heap_used{instance="$instance",replica="$replica"}/proc_jvm_memory_heap_committed{instance="$instance",replica="$replica"})*100',
+ legendFormat=' ',
+ intervalFactor=1,
+ instant=true,
+ ),
+)
+.addThresholds([
+ {
+ color: 'green',
+ value: null
+ },
+ {
+ color: 'orange',
+ value: 60
+ },
+ {
+ color: 'red',
+ value: 90
+ }
+])
diff --git a/dashboards/gerrit/overview/panels/http-responses.libsonnet b/dashboards/gerrit/overview/panels/http-responses.libsonnet
new file mode 100644
index 0000000..cd3486f
--- /dev/null
+++ b/dashboards/gerrit/overview/panels/http-responses.libsonnet
@@ -0,0 +1,92 @@
+local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet';
+local prometheus = grafana.prometheus;
+
+local barGraph = import '../../../globals/bar-graph.libsonnet';
+local yAxis = import '../../../globals/yaxis.libsonnet';
+
+local responses = {
+ success: [200, 201, 204, 301, 304],
+ err: [400, 401, 403, 404, 405, 409, 412, 422, 500, 501, 503],
+};
+
+barGraph.new(
+ title='HTTP response status',
+ yAxis1=yAxis.new(label='Count'),
+ stack=true,
+)
+.addTargets([
+ prometheus.target(
+ std.format('(increase(http_server_success_count_%d_total{instance="$instance",replica="$replica"}[2m]))/2', response),
+ legendFormat=std.format('%d', response),
+ intervalFactor=1,
+ ) for response in responses.success
+])
+.addTargets([
+ prometheus.target(
+ std.format('(increase(http_server_error_count_%d_total{instance="$instance",replica="$replica"}[2m]))/2', response),
+ legendFormat=std.format('%d', response),
+ intervalFactor=1,
+ ) for response in responses.err
+])
+.addSeriesOverride({
+ alias: '200',
+ color: '#37872D'
+})
+.addSeriesOverride({
+ alias: '201',
+ color: '#56A64B'
+})
+.addSeriesOverride({
+ alias: '204',
+ color: '#73BF69'
+})
+.addSeriesOverride({
+ alias: '301',
+ color: 'rgb(110, 210, 110)'
+})
+.addSeriesOverride({
+ alias: '304',
+ color: 'rgb(150, 225, 150)'
+})
+.addSeriesOverride({
+ alias: '400',
+ color: '#FA6400'
+})
+.addSeriesOverride({
+ alias: '401',
+ color: '#FF780A',
+ hiddenSeries: true
+})
+.addSeriesOverride({
+ alias: '403',
+ color: '#FF9830'
+})
+.addSeriesOverride({
+ alias: '404',
+ color: '#FFB357',
+ hiddenSeries: true
+})
+.addSeriesOverride({
+ alias: '409',
+ color: '#FFCB7D'
+})
+.addSeriesOverride({
+ alias: '412',
+ color: '#E0B400'
+})
+.addSeriesOverride({
+ alias: '422',
+ color: '#F2CC0C'
+})
+.addSeriesOverride({
+ alias: '500',
+ color: '#C4162A'
+})
+.addSeriesOverride({
+ alias: '501',
+ color: '#E02F44'
+})
+.addSeriesOverride({
+ alias: '503',
+ color: '#F2495C'
+})
diff --git a/dashboards/gerrit/overview/panels/request-errors.libsonnet b/dashboards/gerrit/overview/panels/request-errors.libsonnet
new file mode 100644
index 0000000..dfef6e3
--- /dev/null
+++ b/dashboards/gerrit/overview/panels/request-errors.libsonnet
@@ -0,0 +1,33 @@
+local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet';
+local prometheus = grafana.prometheus;
+local gauge = grafana.gaugePanel;
+
+gauge.new(
+ title='HTTP Request Error Rate (last 5 min)',
+ datasource='Prometheus',
+ description='Excludes 404 and 401, since these error codes are caused by client behaviour and are overrepresented in the data.',
+ min=0,
+ max=100,
+)
+.addTarget(
+ target=prometheus.target(
+ '(increase(http_server_error_count_total_total{instance="$instance",replica="$replica"}[5m]) - increase(http_server_error_count_404_total{instance=\"$instance\",replica=\"$replica\"}[5m]) - increase(http_server_error_count_401_total{instance=\"$instance\",replica=\"$replica\"}[5m])) / (increase(http_server_success_count_total_total{instance=\"$instance\",replica=\"$replica\"}[5m]) + increase(http_server_error_count_total_total{instance=\"$instance\",replica=\"$replica\"}[5m]) - increase(http_server_error_count_404_total{instance=\"$instance\",replica=\"$replica\"}[5m]) - increase(http_server_error_count_401_total{instance="$instance",replica="$replica"}[5m]))*100',
+ legendFormat=' ',
+ intervalFactor=1,
+ instant=true,
+ ),
+)
+.addThresholds([
+ {
+ color: 'green',
+ value: null
+ },
+ {
+ color: 'orange',
+ value: 5
+ },
+ {
+ color: 'red',
+ value: 10
+ }
+])
diff --git a/dashboards/gerrit/overview/panels/rest-latency.libsonnet b/dashboards/gerrit/overview/panels/rest-latency.libsonnet
new file mode 100644
index 0000000..c10caf2
--- /dev/null
+++ b/dashboards/gerrit/overview/panels/rest-latency.libsonnet
@@ -0,0 +1,29 @@
+local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet';
+local prometheus = grafana.prometheus;
+local gauge = grafana.gaugePanel;
+
+gauge.new(
+ title='REST API latency (0.99 quantile)',
+ datasource='Prometheus',
+ unit='ms',
+ min=0,
+ max=50,
+)
+.addTarget(
+ target=prometheus.target(
+ 'http_server_rest_api_server_latency_total{quantile="0.99", instance="$instance",replica="$replica"}',
+ legendFormat=' ',
+ intervalFactor=1,
+ instant=true,
+ ),
+)
+.addThresholds([
+ {
+ color: 'green',
+ value: null
+ },
+ {
+ color: 'red',
+ value: 30
+ }
+])
diff --git a/dashboards/gerrit/overview/panels/threads.libsonnet b/dashboards/gerrit/overview/panels/threads.libsonnet
new file mode 100644
index 0000000..b8671c3
--- /dev/null
+++ b/dashboards/gerrit/overview/panels/threads.libsonnet
@@ -0,0 +1,36 @@
+local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet';
+local prometheus = grafana.prometheus;
+local gauge = grafana.barGaugePanel;
+
+gauge.new(
+ title='Live Threads',
+ datasource='Prometheus',
+ thresholds=[{
+ color: 'green',
+ value: null,
+ }],
+)
+.addTarget(
+ target=prometheus.target(
+ 'proc_jvm_thread_num_daemon_live{instance="$instance",replica="$replica"}',
+ legendFormat='current (daemon)',
+ intervalFactor=1,
+ instant=true,
+ ),
+)
+.addTarget(
+ target=prometheus.target(
+ 'proc_jvm_thread_num_live{instance="$instance",replica="$replica"}',
+ legendFormat='current (total)',
+ intervalFactor=1,
+ instant=true,
+ ),
+)
+.addTarget(
+ target=prometheus.target(
+ 'proc_jvm_thread_num_peak_live{instance="$instance",replica="$replica"}',
+ legendFormat='peak',
+ intervalFactor=1,
+ instant=true,
+ ),
+)
diff --git a/dashboards/gerrit/overview/panels/version-table.libsonnet b/dashboards/gerrit/overview/panels/version-table.libsonnet
new file mode 100644
index 0000000..4980980
--- /dev/null
+++ b/dashboards/gerrit/overview/panels/version-table.libsonnet
@@ -0,0 +1,59 @@
+local grafana = import '../../../../vendor/grafonnet/grafana.libsonnet';
+local prometheus = grafana.prometheus;
+local table = grafana.tablePanel;
+
+table.new(
+ title='Gerrit Version',
+ datasource='Prometheus',
+ transform='table',
+ transparent=false,
+)
+.addTarget(
+ prometheus.target(
+ 'max(gerrit_build_info{instance="$instance",replica="$replica"}) by (instance, version, revision, javaversion)',
+ instant=true,
+ format='table',
+ )
+)
+.addColumn(
+ field='instance',
+ style={
+ alias: 'Gerrit instance',
+ pattern: 'instance',
+ type: 'string',
+ link: true,
+ linkTargetBlank: true,
+ linkUrl: 'https://${__cell:raw}',
+ linkTooltip: 'Link to the Gerrit instance',
+ },
+)
+.addColumn(
+ field='version',
+ style={
+ alias: 'Gerrit version',
+ pattern: 'version',
+ type: 'string',
+ },
+)
+.addColumn(
+ field='revision',
+ style={
+ alias: 'Gerrit revision',
+ pattern: 'revision',
+ type: 'string',
+ link: true,
+ linkTargetBlank: true,
+ linkUrl: 'https://gerrit.googlesource.com/gerrit/+/${__cell:raw}',
+ linkTooltip: 'Browse Gerrit repository at revision',
+ },
+)
+.addColumn(
+ field='javaversion',
+ style={
+ alias: 'Java version',
+ pattern: 'javaversion',
+ type: 'string',
+ },
+)
+.hideColumn('Time')
+.hideColumn('Value')
diff --git a/dashboards/globals/bar-graph.libsonnet b/dashboards/globals/bar-graph.libsonnet
index 4cd7b65..d02143f 100644
--- a/dashboards/globals/bar-graph.libsonnet
+++ b/dashboards/globals/bar-graph.libsonnet
@@ -9,6 +9,9 @@
title,
yAxis1,
yAxis2=yAxis.new(),
+ x_axis_mode='time',
+ x_axis_values='total',
+ legend=true,
min=null,
max=null,
stack=false,
@@ -20,11 +23,14 @@
labelY2=yAxis2.label,
formatY2=yAxis2.format,
logBase2Y=yAxis2.logBase,
+ x_axis_mode=x_axis_mode,
+ x_axis_values=x_axis_values,
min=min,
max=max,
stack=stack,
datasource=defaults.datasource,
fill=1,
+ legend_show=legend,
legend_alignAsTable=true,
legend_avg=true,
legend_current=true,
diff --git a/dashboards/globals/grid_pos.libsonnet b/dashboards/globals/grid_pos.libsonnet
index dcc0cd0..d374cc8 100644
--- a/dashboards/globals/grid_pos.libsonnet
+++ b/dashboards/globals/grid_pos.libsonnet
@@ -8,12 +8,13 @@
row,
column,
total_columns=2,
+ height=DEFAULT_HEIGHT
):: {
local width = TOTAL_WIDTH / total_columns,
x: column * width,
- y: row * DEFAULT_HEIGHT,
+ y: row * height,
w: width,
- h: DEFAULT_HEIGHT,
+ h: height,
},
}
diff --git a/dashboards/globals/line-graph.libsonnet b/dashboards/globals/line-graph.libsonnet
index eb531f3..295152f 100644
--- a/dashboards/globals/line-graph.libsonnet
+++ b/dashboards/globals/line-graph.libsonnet
@@ -9,6 +9,7 @@
title,
yAxis1,
yAxis2=yAxis.new(),
+ legend=true,
min=null,
max=null,
stack=false,
@@ -26,6 +27,7 @@
stack=stack,
datasource=defaults.datasource,
fill=fill,
+ legend_show=legend,
legend_alignAsTable=true,
legend_avg=true,
legend_current=true,
diff --git a/jsonnetfile.lock.json b/jsonnetfile.lock.json
index b754ac2..0012766 100644
--- a/jsonnetfile.lock.json
+++ b/jsonnetfile.lock.json
@@ -8,8 +8,8 @@
"subdir": "grafonnet"
}
},
- "version": "3336c69715f8f7a4d637582504c9fabd9d9ca081",
- "sum": "w6zS28Rjs9EzRN/WoLLIdi028BvumxDTyLefYVoql2k="
+ "version": "cc1626a1b4dee45c99b78ddd9714dfd5f5d7816e",
+ "sum": "nkgrtMYPCq/YB4r3mKyToepaLhicwWnxDdGIodPpzz0="
}
],
"legacyImports": false