Add API Performances panels to Prometheus dashboard
Change-Id: I83be5278bcfec6a0e32a01a54be4c300cb6fb86f
diff --git a/nova/files/grafana_dashboards/nova_prometheus.json b/nova/files/grafana_dashboards/nova_prometheus.json
index be48d9d..f42395b 100644
--- a/nova/files/grafana_dashboards/nova_prometheus.json
+++ b/nova/files/grafana_dashboards/nova_prometheus.json
@@ -1,5 +1,8 @@
{% raw %}
{
+ "annotations": {
+ "list": []
+ },
"description": "Monitors Nova cluster using Prometheus. Shows overall cluster processes and usage.",
"editable": true,
"gnetId": 315,
@@ -59,7 +62,7 @@
"to": "null"
}
],
- "span": 3,
+ "span": 2,
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
@@ -74,7 +77,7 @@
"intervalFactor": 2,
"legendFormat": "{{ service }}",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "1,0",
@@ -147,7 +150,7 @@
"to": "null"
}
],
- "span": 3,
+ "span": 2,
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
@@ -162,7 +165,7 @@
"intervalFactor": 2,
"legendFormat": "per sec",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -177,27 +180,6 @@
}
],
"valueName": "current"
- }
- ],
- "repeat": null,
- "repeatIteration": null,
- "repeatRowId": null,
- "showTitle": true,
- "title": "Service Status",
- "titleSize": "h6"
- },
- {
- "collapse": false,
- "height": "100px",
- "panels": [
- {
- "content": "<br />\n<h3 align=\"center\"> Up </h3>",
- "id": 3,
- "links": [],
- "mode": "html",
- "span": 1,
- "title": "",
- "type": "text"
},
{
"cacheTimeout": null,
@@ -211,7 +193,94 @@
"datasource": "prometheus",
"format": "none",
"gauge": {
- "maxValue": 100,
+ "maxValue": 1,
+ "minValue": 0,
+ "show": false,
+ "thresholdLabels": false,
+ "thresholdMarkers": true
+ },
+ "id": 3,
+ "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"
+ }
+ ],
+ "span": 2,
+ "sparkline": {
+ "fillColor": "rgba(31, 118, 189, 0.18)",
+ "full": false,
+ "lineColor": "rgb(31, 120, 193)",
+ "show": true
+ },
+ "tableColumn": "",
+ "targets": [
+ {
+ "expr": "min(haproxy_active_servers{proxy=~\"nova.api\", sv=\"BACKEND\"})",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{ service }}",
+ "refId": "A",
+ "step": 60
+ }
+ ],
+ "thresholds": "1,0",
+ "title": "Nova API backends",
+ "type": "singlestat",
+ "valueFontSize": "80%",
+ "valueMaps": [
+ {
+ "op": "=",
+ "text": "N/A",
+ "value": "null"
+ },
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DOWN",
+ "value": "0"
+ }
+ ],
+ "valueName": "current"
+ },
+ {
+ "cacheTimeout": null,
+ "colorBackground": false,
+ "colorValue": false,
+ "colors": [
+ "rgba(245, 54, 54, 0.9)",
+ "rgba(237, 129, 40, 0.89)",
+ "rgba(50, 172, 45, 0.97)"
+ ],
+ "datasource": "prometheus",
+ "format": "none",
+ "gauge": {
+ "maxValue": 1,
"minValue": 0,
"show": false,
"thresholdLabels": false,
@@ -245,7 +314,7 @@
"to": "null"
}
],
- "span": 3,
+ "span": 2,
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
@@ -255,16 +324,16 @@
"tableColumn": "",
"targets": [
{
- "expr": "min(haproxy_active_servers{proxy=~\"nova.api\", sv=\"BACKEND\"})",
+ "expr": "min(haproxy_active_servers{proxy=~\"nova.metadata.api\", sv=\"BACKEND\"})",
"format": "time_series",
"intervalFactor": 2,
- "legendFormat": "",
+ "legendFormat": "{{ service }}",
"refId": "A",
- "step": 20
+ "step": 60
}
],
- "thresholds": "",
- "title": "OpenStack",
+ "thresholds": "1,0",
+ "title": "Nova Metadata API backends",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
@@ -272,6 +341,16 @@
"op": "=",
"text": "N/A",
"value": "null"
+ },
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DOWN",
+ "value": "0"
}
],
"valueName": "current"
@@ -288,7 +367,7 @@
"datasource": "prometheus",
"format": "none",
"gauge": {
- "maxValue": 100,
+ "maxValue": 1,
"minValue": 0,
"show": false,
"thresholdLabels": false,
@@ -322,84 +401,7 @@
"to": "null"
}
],
- "span": 3,
- "sparkline": {
- "fillColor": "rgba(31, 118, 189, 0.18)",
- "full": false,
- "lineColor": "rgb(31, 120, 193)",
- "show": true
- },
- "tableColumn": "",
- "targets": [
- {
- "expr": "min(haproxy_active_servers{proxy=~\"nova.metadata.api\", sv=\"BACKEND\"})",
- "format": "time_series",
- "intervalFactor": 2,
- "legendFormat": "",
- "refId": "A",
- "step": 20
- }
- ],
- "thresholds": "",
- "title": "Metadata",
- "type": "singlestat",
- "valueFontSize": "80%",
- "valueMaps": [
- {
- "op": "=",
- "text": "N/A",
- "value": "null"
- }
- ],
- "valueName": "current"
- },
- {
- "cacheTimeout": null,
- "colorBackground": false,
- "colorValue": false,
- "colors": [
- "rgba(245, 54, 54, 0.9)",
- "rgba(237, 129, 40, 0.89)",
- "rgba(50, 172, 45, 0.97)"
- ],
- "datasource": "prometheus",
- "format": "none",
- "gauge": {
- "maxValue": 100,
- "minValue": 0,
- "show": false,
- "thresholdLabels": false,
- "thresholdMarkers": true
- },
- "id": 6,
- "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"
- }
- ],
- "span": 3,
+ "span": 2,
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
@@ -412,13 +414,13 @@
"expr": "min(haproxy_active_servers{proxy=~\"nova.novnc\", sv=\"BACKEND\"})",
"format": "time_series",
"intervalFactor": 2,
- "legendFormat": "",
+ "legendFormat": "{{ service }}",
"refId": "A",
- "step": 20
+ "step": 60
}
],
- "thresholds": "",
- "title": "NoVNC proxy",
+ "thresholds": "1,0",
+ "title": "Nova NoVNC API backends",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
@@ -426,25 +428,190 @@
"op": "=",
"text": "N/A",
"value": "null"
+ },
+ {
+ "op": "=",
+ "text": "OK",
+ "value": "1"
+ },
+ {
+ "op": "=",
+ "text": "DOWN",
+ "value": "0"
}
],
"valueName": "current"
- },
- {
- "content": "",
- "id": 7,
- "links": [],
- "mode": "markdown",
- "span": 2,
- "title": "",
- "type": "text"
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": true,
- "title": "Nova APIs",
+ "title": "Service Status",
+ "titleSize": "h6"
+ },
+ {
+ "collapse": false,
+ "height": "250",
+ "panels": [
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "prometheus",
+ "fill": 1,
+ "id": 6,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "sum(openstack_nova_http_response_times_rate{host=~\"^$host$\"}) by (http_status)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{ http_status }}",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Throughput",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "ops",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ },
+ {
+ "aliasColors": {},
+ "bars": false,
+ "dashLength": 10,
+ "dashes": false,
+ "datasource": "prometheus",
+ "fill": 1,
+ "id": 7,
+ "legend": {
+ "avg": false,
+ "current": false,
+ "max": false,
+ "min": false,
+ "show": true,
+ "total": false,
+ "values": false
+ },
+ "lines": true,
+ "linewidth": 1,
+ "links": [],
+ "nullPointMode": "null",
+ "percentage": false,
+ "pointradius": 5,
+ "points": false,
+ "renderer": "flot",
+ "seriesOverrides": [],
+ "spaceLength": 10,
+ "span": 6,
+ "stack": false,
+ "steppedLine": false,
+ "targets": [
+ {
+ "expr": "max(openstack_nova_http_response_times_upper_90{host=~\"^$host$\"}) by (http_method)",
+ "format": "time_series",
+ "intervalFactor": 2,
+ "legendFormat": "{{ http_method }}",
+ "refId": "A",
+ "step": 10
+ }
+ ],
+ "thresholds": [],
+ "timeFrom": null,
+ "timeShift": null,
+ "title": "Latency",
+ "tooltip": {
+ "shared": true,
+ "sort": 0,
+ "value_type": "individual"
+ },
+ "type": "graph",
+ "xaxis": {
+ "buckets": null,
+ "mode": "time",
+ "name": null,
+ "show": true,
+ "values": []
+ },
+ "yaxes": [
+ {
+ "format": "s",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": "0",
+ "show": true
+ },
+ {
+ "format": "short",
+ "label": null,
+ "logBase": 1,
+ "max": null,
+ "min": null,
+ "show": true
+ }
+ ]
+ }
+ ],
+ "repeat": null,
+ "repeatIteration": null,
+ "repeatRowId": null,
+ "showTitle": true,
+ "title": "API Performances",
"titleSize": "h6"
},
{
@@ -523,7 +690,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -599,7 +766,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -675,7 +842,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -729,7 +896,7 @@
"intervalFactor": 2,
"legendFormat": "{{ state }}",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -840,7 +1007,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -916,7 +1083,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -992,7 +1159,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -1046,7 +1213,7 @@
"intervalFactor": 2,
"legendFormat": "{{ state }}",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -1157,7 +1324,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -1233,7 +1400,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -1309,7 +1476,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -1363,7 +1530,7 @@
"intervalFactor": 2,
"legendFormat": "{{ state }}",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -1474,7 +1641,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -1550,7 +1717,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -1626,7 +1793,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -1680,7 +1847,7 @@
"intervalFactor": 2,
"legendFormat": "{{ state }}",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -1791,7 +1958,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -1867,7 +2034,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -1943,7 +2110,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -1997,7 +2164,7 @@
"intervalFactor": 2,
"legendFormat": "{{ state }}",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -2110,7 +2277,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -2164,7 +2331,7 @@
"intervalFactor": 2,
"legendFormat": "active",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -2265,7 +2432,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -2319,7 +2486,7 @@
"intervalFactor": 2,
"legendFormat": "error",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -2470,7 +2637,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -2548,7 +2715,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -2626,7 +2793,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -2704,7 +2871,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -2782,7 +2949,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -2860,7 +3027,7 @@
"intervalFactor": 2,
"legendFormat": "",
"refId": "A",
- "step": 20
+ "step": 60
}
],
"thresholds": "",
@@ -2926,7 +3093,7 @@
"intervalFactor": 2,
"legendFormat": "{{ aggregate }}",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -3003,7 +3170,7 @@
"intervalFactor": 2,
"legendFormat": "{{ aggregate }}",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -3080,7 +3247,7 @@
"intervalFactor": 2,
"legendFormat": "{{ aggregate }}",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -3157,7 +3324,7 @@
"intervalFactor": 2,
"legendFormat": "{{ aggregate }}",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -3234,7 +3401,7 @@
"intervalFactor": 2,
"legendFormat": "{{ aggregate }}",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -3311,7 +3478,7 @@
"intervalFactor": 2,
"legendFormat": "{{ aggregate }}",
"refId": "A",
- "step": 2
+ "step": 4
}
],
"thresholds": [],
@@ -3366,7 +3533,29 @@
"nova"
],
"templating": {
- "list": []
+ "list": [
+ {
+ "allValue": null,
+ "current": {},
+ "datasource": "prometheus",
+ "hide": 0,
+ "includeAll": true,
+ "label": null,
+ "multi": true,
+ "name": "host",
+ "options": [],
+ "query": "label_values(openstack_nova_http_response_times_count,host)",
+ "refresh": 1,
+ "refresh_on_load": true,
+ "regex": "",
+ "sort": 1,
+ "tagValuesQuery": "",
+ "tags": [],
+ "tagsQuery": "",
+ "type": "query",
+ "useTags": false
+ }
+ ]
},
"time": {
"from": "now-1h",
@@ -3399,6 +3588,6 @@
},
"timezone": "browser",
"title": "Nova",
- "version": 1
+ "version": 2
}
{% endraw %}