Transition to GrafYaml for Dashboard Storage

Reasons to move from json, json.j2 to yaml/yaml.j2 + GrafYaml:
* Yaml is less lines
* Yaml allows comments
* Yaml means less curly braces and quotes
* GrafYaml manages panel ids and target refIds
* GrafYaml defaults reduce number of lines stored
* GrafYaml allows more easily cut/paste management of Dashboards

Identified Downsides:
* GrafYaml will be behind the Grafana Dashboard Model (Until code is updated)
* Json will always allow full feature set
* Installing Dashboards now requires GrafYaml

New Dashboards/Features:
* Templated Dashboards (Reduce line count in "static" dashboards)
* Cloud Specific networks - all dashboard
* Three Node Performance Food groups Enhanced
* Networker Node added for Cloud Specific Dashboards and Total Memory

Change-Id: I55ce9f9f6c28497c8b4ed7a19d42657a8eb14170
This commit is contained in:
akrzos 2018-02-07 13:27:45 -05:00
parent 61924a83ea
commit c34543f909
90 changed files with 6456 additions and 40561 deletions

View File

@ -2,21 +2,26 @@
#
# Builds and Uploads Dashboards for Browbeat analysis of System Performance Metrics
#
# Three types of Grafana Dashboards:
# * Static Dashboards (Ex. cloud_system_performance_comparsion.json)
# * Generated General Dashboards (Ex. OpenStack General System Performance)
# * Generated Cloud Specific Dashboards ("Cloud01" CPU Graphs (for a specific cloud))
# Four types of Grafana Dashboards:
# * Static Dashboards (Ex. cloud_system_performance_comparsion.yaml)
# * Templated Dashboards (Ex. Gnocchi Performance Dashboard)
# * Templated General Dashboards (Ex. OpenStack General System Performance)
# * Templated Cloud Specific Dashboards ("Cloud01" CPU Graphs (for a specific cloud))
#
# The Cloud Specific Dashboards are the only ones that require a cloud's inventory be defined.
#
# If you have a cloud inventory defined, you can upload all dashboards via:
# ansible-playbook -i hosts install/grafana-dashboards.yml
# or
# ansible-playbook -i hosts install/grafana-dashboards.yml -e 'upload_cloud_specific=true upload_general=true upload_static=true upload_templated=true'
#
# If you just want to upload Static and Generated General Dashboards:
# Toggle the desired dashboards with the above extra vars ^^
#
# If you just want to upload all dashboards that do not require a cloud inventory:
# ansible-playbook -i hosts install/grafana-dashboards.yml -e 'upload_cloud_specific=false'
#
# If you just want to upload your Cloud Specific Dashboards:
# ansible-playbook -i hosts install/grafana-dashboards.yml -e 'upload_general=false upload_static=false'
# If you just want to upload only your Cloud Specific Dashboards:
# ansible-playbook -i hosts install/grafana-dashboards.yml -e 'upload_general=false upload_static=false upload_templated=false'
#
- hosts: localhost
@ -26,13 +31,14 @@
upload_cloud_specific: true
upload_general: true
upload_static: true
overwrite_existing: true
upload_templated: true
cloud_specific_dashboards:
- cpu
- memory
- disk
- disks_all
- network
- networks_all
- log
general_dashboards:
- template_name: openstack
@ -56,7 +62,7 @@
- template_name: openstack
template_node_type: "*"
process_list_name: OpenStack
# Non-OpenStack specific dashboards that are included:
# # Non-OpenStack specific dashboards that are included:
- template_name: baremetal
process_list_name: Baremetal
- template_name: guest
@ -65,17 +71,19 @@
process_list_name: Graphite
static_dashboards:
- apache_request_latency
- cloud_ceph_monitoring
- cloud_gnocchi_status
- cloud_instance_count
- cloud_keystone_token_count
- cloud_rabbitmq_monitoring
- cloud_system_performance_comparsion
- cloud_total_memory_usage
- openstack_ironic_metrics
templated_dashboards:
- cloud_ceph_monitoring
- cloud_gnocchi_status
- cloud_rabbitmq_monitoring
- gnocchi_performance
- iostat
- three_node_performance_food_groups
- openstack_ironic_metrics
- three_node_performance_food_groups_basic
- three_node_performance_food_groups_enhanced
roles:
- grafana-dashboards
environment: "{{proxy_env}}"

View File

@ -346,6 +346,7 @@ grafana_host:
grafana_port: 3000
grafana_username: admin
grafana_password: admin
grafana_apikey:
# Batch number of hosts per row for all-{cpu, memory, disk, network} openstack dashboards
dashboards_batch: 20
# For use with all-{cpu, memory, disk, network} openstack dashboards, uses the graphite prefix to create dashboards for specific openstack cloud

View File

@ -1,989 +0,0 @@
{
"dashboard": {
"annotations": {
"list": []
},
"editable": true,
"gnetId": null,
"hideControls": false,
"id": null,
"links": [],
"rows": [
{
"collapse": false,
"height": 200,
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"fill": 0,
"id": 1,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"sortDesc": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 1,
"points": true,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "/.*Count.*/",
"lines": true,
"linewidth": 2,
"points": false,
"yaxis": 2
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-patch-max, 0.000001), 'Patch Max Latency')"
},
{
"refId": "B",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-patch-99, 0.000001), 'Patch 99th Latency')"
},
{
"refId": "C",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-patch-avg, 0.000001), 'Patch Avg Latency')"
},
{
"refId": "D",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-patch-min, 0.000001), 'Patch Min Latency')"
},
{
"refId": "E",
"target": "alias(sumSeries(scale($Cloud.$Node.tail-gnocchi-api.counter-patch, 10)), 'Patch Count')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Gnocchi API Patch Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "s",
"label": "Latency",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": "Count",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
},
{
"aliasColors": {},
"bars": false,
"datasource": null,
"fill": 0,
"id": 2,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"sortDesc": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 1,
"points": true,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "/.*Count.*/",
"lines": true,
"linewidth": 2,
"points": false,
"yaxis": 2
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-post-max, 0.000001), 'Post Max Latency')"
},
{
"refId": "B",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-post-99, 0.000001), 'Post 99th Latency')"
},
{
"refId": "C",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-post-avg, 0.000001), 'Post Avg Latency')"
},
{
"refId": "D",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-post-min, 0.000001), 'Post Min Latency')"
},
{
"refId": "E",
"target": "alias(sumSeries(scale($Cloud.$Node.tail-gnocchi-api.counter-post, 10)), 'Post Count')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Gnocchi API Post Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "s",
"label": "Latency",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": "Count",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
},
{
"aliasColors": {},
"bars": false,
"datasource": null,
"fill": 0,
"id": 3,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 1,
"points": true,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "/.*Count.*/",
"lines": true,
"linewidth": 2,
"points": false,
"yaxis": 2
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-get-max, 0.000001), 'Get Max Latency')"
},
{
"refId": "B",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-get-99, 0.000001), 'Get 99th Latency')"
},
{
"refId": "C",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-get-avg, 0.000001), 'Get Avg Latency')"
},
{
"refId": "D",
"target": "alias(scale($Cloud.$Node.tail-gnocchi-api.latency-get-min, 0.000001), 'Get Min Latency')"
},
{
"refId": "E",
"target": "alias(sumSeries(scale($Cloud.$Node.tail-gnocchi-api.counter-get, 10)), 'Get Count')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Gnocchi API Get Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "s",
"label": "Latency",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": "Count",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": true,
"title": "Gnocchi API Latency",
"titleSize": "h6"
},
{
"collapse": false,
"height": 200,
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"fill": 0,
"id": 4,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 1,
"points": true,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "/.*Count.*/",
"lines": true,
"linewidth": 2,
"points": false,
"yaxis": 2
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-get-max, 0.000001), 'Get Max Latency')"
},
{
"refId": "B",
"target": "alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-get-99, 0.000001), 'Get 99th Latency')"
},
{
"refId": "C",
"target": "alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-get-avg, 0.000001), 'Get Avg Latency')"
},
{
"refId": "D",
"target": "alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-get-min, 0.000001), 'Get Min Latency')"
},
{
"refId": "E",
"target": "alias(scale(sumSeries($Cloud.$Node.tail-keystone-admin-api.counter-get), 10), 'Get Count')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Keystone Admin API Get Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "s",
"label": "Latency",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": "Count",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
},
{
"aliasColors": {},
"bars": false,
"datasource": null,
"fill": 0,
"id": 5,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 1,
"points": true,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "/.*Count.*/",
"lines": true,
"linewidth": 2,
"points": false,
"yaxis": 2
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-post-max, 0.000001), 'Post Max Latency')"
},
{
"refId": "B",
"target": "alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-post-99, 0.000001), 'Post 99th Latency')"
},
{
"refId": "C",
"target": "alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-post-avg, 0.000001), 'Post Avg Latency')"
},
{
"refId": "D",
"target": "alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-post-min, 0.000001), 'Post Min Latency')"
},
{
"refId": "E",
"target": "alias(scale(sumSeries($Cloud.$Node.tail-keystone-admin-api.counter-post), 10), 'Post Count')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Keystone Admin API Post Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "s",
"label": "Latency",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": "Count",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
},
{
"aliasColors": {},
"bars": false,
"datasource": null,
"fill": 0,
"id": 6,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 1,
"points": true,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "/.*Count.*/",
"lines": true,
"linewidth": 2,
"points": false,
"yaxis": 2
}
],
"span":12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(scale($Cloud.$Node.tail-keystone-main-api.latency-get-max, 0.000001), 'Get Max Latency')"
},
{
"refId": "B",
"target": "alias(scale($Cloud.$Node.tail-keystone-main-api.latency-get-99, 0.000001), 'Get 99th Latency')"
},
{
"refId": "C",
"target": "alias(scale($Cloud.$Node.tail-keystone-main-api.latency-get-avg, 0.000001), 'Get Avg Latency')"
},
{
"refId": "D",
"target": "alias(scale($Cloud.$Node.tail-keystone-main-api.latency-get-min, 0.000001), 'Get Min Latency')"
},
{
"refId": "E",
"target": "alias(scale(sumSeries($Cloud.$Node.tail-keystone-main-api.counter-get), 10), 'Get Count')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Keystone Main API Get Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "s",
"label": "Latency",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": "Count",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
},
{
"aliasColors": {},
"bars": false,
"datasource": null,
"fill": 0,
"id": 7,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 1,
"points": true,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "/.*Count.*/",
"lines": true,
"linewidth": 2,
"points": false,
"yaxis": 2
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(scale($Cloud.$Node.tail-keystone-main-api.latency-post-max, 0.000001), 'Post Max Latency')"
},
{
"refId": "B",
"target": "alias(scale($Cloud.$Node.tail-keystone-main-api.latency-post-99, 0.000001), 'Post 99th Latency')"
},
{
"refId": "C",
"target": "alias(scale($Cloud.$Node.tail-keystone-main-api.latency-post-avg, 0.000001), 'Post Avg Latency')"
},
{
"refId": "D",
"target": "alias(scale($Cloud.$Node.tail-keystone-main-api.latency-post-min, 0.000001), 'Post Min Latency')"
},
{
"refId": "E",
"target": "alias(scale(sumSeries($Cloud.$Node.tail-keystone-main-api.counter-post), 10), 'Post Count')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Keystone Main API Post Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "s",
"label": "Latency",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": "Count",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": true,
"title": "Keystone API Request Latency",
"titleSize": "h6"
},
{
"collapse": false,
"height": 200,
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"fill": 0,
"id": 8,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 1,
"points": true,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "/.*Count.*/",
"lines": true,
"linewidth": 2,
"points": false,
"yaxis": 2
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(scale($Cloud.$Node.tail-nova-placement-api.latency-put-max, 0.000001), 'Put Max Latency')"
},
{
"refId": "B",
"target": "alias(scale($Cloud.$Node.tail-nova-placement-api.latency-put-99, 0.000001), 'Put 99th Latency')"
},
{
"refId": "C",
"target": "alias(scale($Cloud.$Node.tail-nova-placement-api.latency-put-avg, 0.000001), 'Put Avg Latency')"
},
{
"refId": "D",
"target": "alias(scale($Cloud.$Node.tail-nova-placement-api.latency-put-min, 0.000001), 'Put Min Latency')"
},
{
"refId": "E",
"target": "alias(scale(sumSeries($Cloud.$Node.tail-nova-placement-api.counter-put), 10), 'Put Count')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Nova Placement API Put Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "s",
"label": "Latency",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": "Count",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
},
{
"aliasColors": {},
"bars": false,
"datasource": null,
"fill": 0,
"id": 9,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"sortDesc": true,
"total": false,
"values": true
},
"lines": false,
"linewidth": 1,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 1,
"points": true,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "/.*Count.*/",
"lines": true,
"linewidth": 2,
"points": false,
"yaxis": 2
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(scale($Cloud.$Node.tail-nova-placement-api.latency-get-max, 0.000001), 'Get Max Latency')"
},
{
"refId": "B",
"target": "alias(scale($Cloud.$Node.tail-nova-placement-api.latency-get-99, 0.000001), 'Get 99th Latency')"
},
{
"refId": "C",
"target": "alias(scale($Cloud.$Node.tail-nova-placement-api.latency-get-avg, 0.000001), 'Get Avg Latency')"
},
{
"refId": "D",
"target": "alias(scale($Cloud.$Node.tail-nova-placement-api.latency-get-min, 0.000001), 'Get Min Latency')"
},
{
"refId": "E",
"target": "alias(scale(sumSeries($Cloud.$Node.tail-nova-placement-api.counter-get), 10), 'Get Count')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Nova Placement API Get Latency",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "s",
"label": "Latency",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": "Count",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": true,
"title": "Nova Placement API Request Latency",
"titleSize": "h6"
}
],
"schemaVersion": 14,
"style": "dark",
"tags": [],
"templating": {
"list": [
{
"allFormat": "glob",
"allValue": null,
"current": {
"text": "",
"value": ""
},
"datasource": null,
"hide": 0,
"includeAll": false,
"label": null,
"multi": false,
"multiFormat": "glob",
"name": "Cloud",
"options": [],
"query": "*",
"refresh": 2,
"regex": "/^(?!stats[d]*[_counts]*$).*$/",
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": false
},
{
"allFormat": "glob",
"allValue": null,
"current": {
"tags": [],
"text": "overcloud-controller-0",
"value": "overcloud-controller-0"
},
"datasource": null,
"hide": 0,
"includeAll": false,
"label": null,
"multi": false,
"multiFormat": "glob",
"name": "Node",
"options": [],
"query": "$Cloud.*",
"refresh": 2,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": false
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"now": true,
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "utc",
"title": "Apache Request Latency",
"version": 1
}
}

View File

@ -0,0 +1,331 @@
---
dashboard:
title: Apache Request Latency
templating:
- name: Cloud
query: "*"
refresh: true
type: query
- name: Node
query: "$Cloud.*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
- title: Gnocchi API Latency
height: 200px
showTitle: true
panels:
- title: Gnocchi API Patch Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-patch-max, 0.000001), 'Patch Max Latency')
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-patch-99_00, 0.000001), 'Patch 99th Latency')
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-patch-avg, 0.000001), 'Patch Avg Latency')
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-patch-min, 0.000001), 'Patch Min Latency')
- target: alias(sumSeries(scale($Cloud.$Node.tail-gnocchi-api.counter-patch, 10)), 'Patch Count')
yaxes:
- format: s
label: Latency
- format: short
label: Count
- title: Gnocchi API Post Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-post-max, 0.000001), 'Post Max Latency')
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-post-99_00, 0.000001), 'Post 99th Latency')
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-post-avg, 0.000001), 'Post Avg Latency')
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-post-min, 0.000001), 'Post Min Latency')
- target: alias(sumSeries(scale($Cloud.$Node.tail-gnocchi-api.counter-post, 10)), 'Post Count')
yaxes:
- format: s
label: Latency
- format: short
label: Count
- title: Gnocchi API Get Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-get-max, 0.000001), 'Get Max Latency')
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-get-99_00, 0.000001), 'Get 99th Latency')
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-get-avg, 0.000001), 'Get Avg Latency')
- target: alias(scale($Cloud.$Node.tail-gnocchi-api.latency-get-min, 0.000001), 'Get Min Latency')
- target: alias(sumSeries(scale($Cloud.$Node.tail-gnocchi-api.counter-get, 10)), 'Get Count')
yaxes:
- format: s
label: Latency
- format: short
label: Count
- title: Keystone API Request Latency
height: 200px
showTitle: true
panels:
- title: Keystone Admin API Get Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-get-max, 0.000001), 'Get Max Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-get-99_00, 0.000001), 'Get 99th Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-get-avg, 0.000001), 'Get Avg Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-get-min, 0.000001), 'Get Min Latency')
- target: alias(scale(sumSeries($Cloud.$Node.tail-keystone-admin-api.counter-get), 10), 'Get Count')
yaxes:
- format: s
label: Latency
- format: short
label: Count
- title: Keystone Admin API Post Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-post-max, 0.000001), 'Post Max Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-post-99_00, 0.000001), 'Post 99th Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-post-avg, 0.000001), 'Post Avg Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-admin-api.latency-post-min, 0.000001), 'Post Min Latency')
- target: alias(scale(sumSeries($Cloud.$Node.tail-keystone-admin-api.counter-post), 10), 'Post Count')
yaxes:
- format: s
label: Latency
- format: short
label: Count
- title: Keystone Main API Get Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: alias(scale($Cloud.$Node.tail-keystone-main-api.latency-get-max, 0.000001), 'Get Max Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-main-api.latency-get-99_00, 0.000001), 'Get 99th Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-main-api.latency-get-avg, 0.000001), 'Get Avg Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-main-api.latency-get-min, 0.000001), 'Get Min Latency')
- target: alias(scale(sumSeries($Cloud.$Node.tail-keystone-main-api.counter-get), 10), 'Get Count')
yaxes:
- format: s
label: Latency
- format: short
label: Count
- title: Keystone Main API Post Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: alias(scale($Cloud.$Node.tail-keystone-main-api.latency-post-max, 0.000001), 'Post Max Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-main-api.latency-post-99_00, 0.000001), 'Post 99th Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-main-api.latency-post-avg, 0.000001), 'Post Avg Latency')
- target: alias(scale($Cloud.$Node.tail-keystone-main-api.latency-post-min, 0.000001), 'Post Min Latency')
- target: alias(scale(sumSeries($Cloud.$Node.tail-keystone-main-api.counter-post), 10), 'Post Count')
yaxes:
- format: s
label: Latency
- format: short
label: Count
- title: Nova Placement API Request Latency
height: 200px
showTitle: true
panels:
- title: Nova Placement API Put Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: alias(scale($Cloud.$Node.tail-nova-placement-api.latency-put-max, 0.000001), 'Put Max Latency')
- target: alias(scale($Cloud.$Node.tail-nova-placement-api.latency-put-99_00, 0.000001), 'Put 99th Latency')
- target: alias(scale($Cloud.$Node.tail-nova-placement-api.latency-put-avg, 0.000001), 'Put Avg Latency')
- target: alias(scale($Cloud.$Node.tail-nova-placement-api.latency-put-min, 0.000001), 'Put Min Latency')
- target: alias(scale(sumSeries($Cloud.$Node.tail-nova-placement-api.counter-put), 10), 'Put Count')
yaxes:
- format: s
label: Latency
- format: short
label: Count
- title: Nova Placement API Get Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: alias(scale($Cloud.$Node.tail-nova-placement-api.latency-get-max, 0.000001), 'Get Max Latency')
- target: alias(scale($Cloud.$Node.tail-nova-placement-api.latency-get-99_00, 0.000001), 'Get 99th Latency')
- target: alias(scale($Cloud.$Node.tail-nova-placement-api.latency-get-avg, 0.000001), 'Get Avg Latency')
- target: alias(scale($Cloud.$Node.tail-nova-placement-api.latency-get-min, 0.000001), 'Get Min Latency')
- target: alias(scale(sumSeries($Cloud.$Node.tail-nova-placement-api.counter-get), 10), 'Get Count')
yaxes:
- format: s
label: Latency
- format: short
label: Count

View File

@ -1,186 +0,0 @@
{
"dashboard": {
"annotations": {
"list": []
},
"editable": true,
"gnetId": null,
"hideControls": false,
"id": null,
"links": [],
"rows": [
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 0,
"grid": {
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 1,
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": true,
"targets": [
{
"refId": "A",
"target": "aliasByMetric(aliasSub($Cloud.$Node.gnocchi_status.*, 'gauge-', ''))",
"textEditor": false
}
],
"timeFrom": null,
"timeShift": null,
"title": "$Node Metrics/Measures Backlog",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"show": true
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"showTitle": true,
"title": "Gnocchi Backlog"
}
],
"schemaVersion": 12,
"sharedCrosshair": false,
"style": "dark",
"tags": [],
"templating": {
"list": [
{
"allFormat": "glob",
"current": {
"text": "",
"value": ""
},
"datasource": null,
"hide": 0,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "Cloud",
"options": [],
"query": "*",
"refresh": 2,
"regex": "/^(?!stats[d]*[_counts]*$).*$/",
"type": "query"
},
{
"current": {
"tags": [],
"text": "overcloud-controller-0",
"value": "overcloud-controller-0"
},
"datasource": null,
"hide": 0,
"includeAll": false,
"multi": false,
"name": "Node",
"options": [
{
"selected": true,
"text": "overcloud-controller-0",
"value": "overcloud-controller-0"
},
{
"selected": false,
"text": "undercloud",
"value": "undercloud"
}
],
"query": "$Cloud.*",
"refresh": 2,
"type": "query"
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"now": true,
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "utc",
"title": "Cloud Gnocchi Status",
"version": 2
}
}

View File

@ -1,236 +0,0 @@
{
"dashboard": {
"annotations": {
"list": []
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"hideControls": false,
"id": null,
"links": [],
"rows": [
{
"collapse": false,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 0,
"grid": {},
"id": 1,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(sumSeries(keepLastValue($Cloud.*.processes-qemu-kvm.ps_count.processes, 100)), 'Sum qemu-kvm processes')",
"textEditor": false
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Total Instances Hosted on Computes for $Cloud",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
},
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 0,
"grid": {},
"id": 2,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": true,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "aliasByNode(keepLastValue($Cloud.*.processes-qemu-kvm.ps_count.processes, 100), 1)",
"textEditor": false
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Instances Hosted on Each Compute for $Cloud",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": true,
"title": "Instance Count",
"titleSize": "h6"
}
],
"schemaVersion": 12,
"sharedCrosshair": false,
"style": "dark",
"tags": [],
"templating": {
"list": [
{
"allFormat": "glob",
"current": {
"text": "",
"value": ""
},
"datasource": null,
"hide": 0,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "Cloud",
"options": [],
"query": "*",
"refresh": 2,
"regex": "/^(?!stats[d]*[_counts]*$).*$/",
"type": "query"
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"now": true,
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "utc",
"title": "Cloud Instance Count",
"version": 7
}
}

View File

@ -0,0 +1,55 @@
---
dashboard:
title: Cloud Instance Count
templating:
- name: Cloud
query: "*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
- title: Instance Count
height: 250px
showTitle: true
panels:
- title: Total Instances Hosted on Computes for $Cloud
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias(sumSeries(keepLastValue($Cloud.*.processes-qemu-kvm.ps_count.processes, 100)), 'Sum qemu-kvm processes')
- title: Instances Hosted on Each Compute for $Cloud
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- target: aliasByNode(keepLastValue($Cloud.*.processes-qemu-kvm.ps_count.processes, 100), 1)

View File

@ -1,186 +0,0 @@
{
"dashboard": {
"annotations": {
"list": []
},
"editable": true,
"gnetId": null,
"hideControls": false,
"id": null,
"links": [],
"rows": [
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 0,
"grid": {
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 1,
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias($Cloud.$Node.dbi-keystone.gauge-token, 'Tokens')",
"textEditor": false
}
],
"timeFrom": null,
"timeShift": null,
"title": "$Node Keystone Token Count",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"show": true
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"showTitle": true,
"title": "Token Count"
}
],
"schemaVersion": 12,
"sharedCrosshair": false,
"style": "dark",
"tags": [],
"templating": {
"list": [
{
"allFormat": "glob",
"current": {
"text": "",
"value": ""
},
"datasource": null,
"hide": 0,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "Cloud",
"options": [],
"query": "*",
"refresh": 2,
"regex": "/^(?!stats[d]*[_counts]*$).*$/",
"type": "query"
},
{
"current": {
"tags": [],
"text": "undercloud",
"value": "undercloud"
},
"datasource": null,
"hide": 0,
"includeAll": false,
"multi": false,
"name": "Node",
"options": [
{
"selected": false,
"text": "overcloud-controller-0",
"value": "overcloud-controller-0"
},
{
"selected": true,
"text": "undercloud",
"value": "undercloud"
}
],
"query": "$Cloud.*",
"refresh": 2,
"type": "query"
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"now": true,
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "utc",
"title": "Cloud Keystone Token Count",
"version": 2
}
}

View File

@ -0,0 +1,42 @@
---
dashboard:
title: Cloud Keystone Token Count
templating:
- name: Cloud
query: "*"
refresh: true
type: query
- name: Node
query: "$Cloud.*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
- title: Token Count
height: 250px
showTitle: true
panels:
- title: $Node Keystone Token Count
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
steppedLine: true
targets:
- target: alias($Cloud.$Node.dbi-keystone.gauge-token, 'Tokens')

View File

@ -0,0 +1,730 @@
---
dashboard:
title: Cloud System Performance Comparsion
templating:
- name: Cloud1
query: "*"
refresh: true
type: query
- name: Cloud2
query: "*"
refresh: true
type: query
- name: Node1
query: "$Cloud1.*"
refresh: true
type: query
- name: Node2
query: "$Cloud2.*"
refresh: true
type: query
- name: Node1_Disk
query: "$Cloud1.$Node1.disk-*"
refresh: true
type: query
- name: Node2_Disk
query: "$Cloud2.$Node2.disk-*"
refresh: true
type: query
- name: Node1_Interface
query: "$Cloud1.$Node1.interface-*"
refresh: true
type: query
- name: Node2_Interface
query: "$Cloud2.$Node2.interface-*"
refresh: true
type: query
- name: Node1_Process
query: "$Cloud1.$Node1.processes-*"
refresh: true
type: query
- name: Node2_Process
query: "$Cloud2.$Node2.processes-*"
refresh: true
type: query
# - name: Node1_Timeshift
# current:
# text: "0m"
# options:
# - 0m
# - 1m
# - 10m
# - 30m
# - 1h
# - 2h
# - 3h
# - 4h
# - 6h
# - 12h
# - 1d
# - 2d
# - 3d
# - 4d
# - 5d
# - 6d
# - 7d
# - 14d
# - 30d
# type: custom
# - name: Node2_Timeshift
# current:
# text: "0m"
# options:
# - 0m
# - 1m
# - 10m
# - 30m
# - 1h
# - 2h
# - 3h
# - 4h
# - 6h
# - 12h
# - 1d
# - 2d
# - 3d
# - 4d
# - 5d
# - 6d
# - 7d
# - 14d
# - 30d
# type: custom
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
- title: CPU Comparsion
collapse: true
height: 250px
showTitle: true
panels:
- title: CPU Average
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/Node1/i"
stack: A
- alias: "/Node2/i"
stack: B
targets:
- target: alias(averageSeries($Cloud1.$Node1.cpu-*.cpu-system), 'Node1 - System')
- target: alias(averageSeries($Cloud1.$Node1.cpu-*.cpu-user), 'Node1 - User')
- target: alias(averageSeries($Cloud1.$Node1.cpu-*.cpu-nice), 'Node1 - Nice')
- target: alias(averageSeries($Cloud1.$Node1.cpu-*.cpu-steal), 'Node1 - Steal')
- target: alias(averageSeries($Cloud1.$Node1.cpu-*.cpu-softirq), 'Node1 - SoftIRQ')
- target: alias(averageSeries($Cloud1.$Node1.cpu-*.cpu-interrupt), 'Node1 - Interrupt')
- target: alias(averageSeries($Cloud1.$Node1.cpu-*.cpu-wait), 'Node1 - Wait')
- target: alias(averageSeries($Cloud1.$Node1.cpu-*.cpu-idle), 'Node1 - Idle')
- target: alias(averageSeries($Cloud2.$Node2.cpu-*.cpu-system), 'Node2 - System')
- target: alias(averageSeries($Cloud2.$Node2.cpu-*.cpu-user), 'Node2 - User')
- target: alias(averageSeries($Cloud2.$Node2.cpu-*.cpu-nice), 'Node2 - Nice')
- target: alias(averageSeries($Cloud2.$Node2.cpu-*.cpu-steal), 'Node2 - Steal')
- target: alias(averageSeries($Cloud2.$Node2.cpu-*.cpu-softirq), 'Node2 - SoftIRQ')
- target: alias(averageSeries($Cloud2.$Node2.cpu-*.cpu-interrupt), 'Node2 - Interrupt')
- target: alias(averageSeries($Cloud2.$Node2.cpu-*.cpu-wait), 'Node2 - Wait')
- target: alias(averageSeries($Cloud2.$Node2.cpu-*.cpu-idle), 'Node2 - Idle')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.cpu-*.cpu-system), '$Node1_Timeshift'), 'Node1 - System')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.cpu-*.cpu-user), '$Node1_Timeshift'), 'Node1 - User')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.cpu-*.cpu-nice), '$Node1_Timeshift'), 'Node1 - Nice')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.cpu-*.cpu-steal), '$Node1_Timeshift'), 'Node1 - Steal')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.cpu-*.cpu-softirq), '$Node1_Timeshift'), 'Node1 - SoftIRQ')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.cpu-*.cpu-interrupt), '$Node1_Timeshift'), 'Node1 - Interrupt')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.cpu-*.cpu-wait), '$Node1_Timeshift'), 'Node1 - Wait')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.cpu-*.cpu-idle), '$Node1_Timeshift'), 'Node1 - Idle')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.cpu-*.cpu-system), '$Node2_Timeshift'), 'Node2 - System')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.cpu-*.cpu-user), '$Node2_Timeshift'), 'Node2 - User')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.cpu-*.cpu-nice), '$Node2_Timeshift'), 'Node2 - Nice')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.cpu-*.cpu-steal), '$Node2_Timeshift'), 'Node2 - Steal')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.cpu-*.cpu-softirq), '$Node2_Timeshift'), 'Node2 - SoftIRQ')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.cpu-*.cpu-interrupt), '$Node2_Timeshift'), 'Node2 - Interrupt')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.cpu-*.cpu-wait), '$Node2_Timeshift'), 'Node2 - Wait')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.cpu-*.cpu-idle), '$Node2_Timeshift'), 'Node2 - Idle')
yaxes:
- format: percent
- format: short
- title: CPU Sum
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/Node1/i"
stack: A
- alias: "/Node2/i"
stack: B
targets:
- target: alias(sumSeries($Cloud1.$Node1.cpu-*.cpu-system), 'Node1 - System')
- target: alias(sumSeries($Cloud1.$Node1.cpu-*.cpu-user), 'Node1 - User')
- target: alias(sumSeries($Cloud1.$Node1.cpu-*.cpu-nice), 'Node1 - Nice')
- target: alias(sumSeries($Cloud1.$Node1.cpu-*.cpu-steal), 'Node1 - Steal')
- target: alias(sumSeries($Cloud1.$Node1.cpu-*.cpu-softirq), 'Node1 - SoftIRQ')
- target: alias(sumSeries($Cloud1.$Node1.cpu-*.cpu-interrupt), 'Node1 - Interrupt')
- target: alias(sumSeries($Cloud1.$Node1.cpu-*.cpu-wait), 'Node1 - Wait')
- target: alias(sumSeries($Cloud1.$Node1.cpu-*.cpu-idle), 'Node1 - Idle')
- target: alias(sumSeries($Cloud2.$Node2.cpu-*.cpu-system), 'Node2 - System')
- target: alias(sumSeries($Cloud2.$Node2.cpu-*.cpu-user), 'Node2 - User')
- target: alias(sumSeries($Cloud2.$Node2.cpu-*.cpu-nice), 'Node2 - Nice')
- target: alias(sumSeries($Cloud2.$Node2.cpu-*.cpu-steal), 'Node2 - Steal')
- target: alias(sumSeries($Cloud2.$Node2.cpu-*.cpu-softirq), 'Node2 - SoftIRQ')
- target: alias(sumSeries($Cloud2.$Node2.cpu-*.cpu-interrupt), 'Node2 - Interrupt')
- target: alias(sumSeries($Cloud2.$Node2.cpu-*.cpu-wait), 'Node2 - Wait')
- target: alias(sumSeries($Cloud2.$Node2.cpu-*.cpu-idle), 'Node2 - Idle')
# - target: alias(timeShift(sumSeries($Cloud1.$Node1.cpu-*.cpu-system), '$Node1_Timeshift'), 'Node1 - System')
# - target: alias(timeShift(sumSeries($Cloud1.$Node1.cpu-*.cpu-user), '$Node1_Timeshift'), 'Node1 - User')
# - target: alias(timeShift(sumSeries($Cloud1.$Node1.cpu-*.cpu-nice), '$Node1_Timeshift'), 'Node1 - Nice')
# - target: alias(timeShift(sumSeries($Cloud1.$Node1.cpu-*.cpu-steal), '$Node1_Timeshift'), 'Node1 - Steal')
# - target: alias(timeShift(sumSeries($Cloud1.$Node1.cpu-*.cpu-softirq), '$Node1_Timeshift'), 'Node1 - SoftIRQ')
# - target: alias(timeShift(sumSeries($Cloud1.$Node1.cpu-*.cpu-interrupt), '$Node1_Timeshift'), 'Node1 - Interrupt')
# - target: alias(timeShift(sumSeries($Cloud1.$Node1.cpu-*.cpu-wait), '$Node1_Timeshift'), 'Node1 - Wait')
# - target: alias(timeShift(sumSeries($Cloud1.$Node1.cpu-*.cpu-idle), '$Node1_Timeshift'), 'Node1 - Idle')
# - target: alias(timeShift(sumSeries($Cloud2.$Node2.cpu-*.cpu-system), '$Node2_Timeshift'), 'Node2 - System')
# - target: alias(timeShift(sumSeries($Cloud2.$Node2.cpu-*.cpu-user), '$Node2_Timeshift'), 'Node2 - User')
# - target: alias(timeShift(sumSeries($Cloud2.$Node2.cpu-*.cpu-nice), '$Node2_Timeshift'), 'Node2 - Nice')
# - target: alias(timeShift(sumSeries($Cloud2.$Node2.cpu-*.cpu-steal), '$Node2_Timeshift'), 'Node2 - Steal')
# - target: alias(timeShift(sumSeries($Cloud2.$Node2.cpu-*.cpu-softirq), '$Node2_Timeshift'), 'Node2 - SoftIRQ')
# - target: alias(timeShift(sumSeries($Cloud2.$Node2.cpu-*.cpu-interrupt), '$Node2_Timeshift'), 'Node2 - Interrupt')
# - target: alias(timeShift(sumSeries($Cloud2.$Node2.cpu-*.cpu-wait), '$Node2_Timeshift'), 'Node2 - Wait')
# - target: alias(timeShift(sumSeries($Cloud2.$Node2.cpu-*.cpu-idle), '$Node2_Timeshift'), 'Node2 - Idle')
yaxes:
- format: percent
- format: short
- title: Memory Comparsion
collapse: true
height: 250px
showTitle: true
panels:
- title: Memory in Bytes
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/Node1/i"
stack: A
- alias: "/Node2/i"
stack: B
targets:
- target: alias(averageSeries($Cloud1.$Node1.memory.memory-slab_unrecl), 'Node1 - Slab Unrecl')
- target: alias(averageSeries($Cloud1.$Node1.memory.memory-used), 'Node1 - Used')
- target: alias(averageSeries($Cloud1.$Node1.memory.memory-buffered), 'Node1 - Buffered')
- target: alias(averageSeries($Cloud1.$Node1.memory.memory-slab_recl), 'Node1 - Slab Recl')
- target: alias(averageSeries($Cloud1.$Node1.memory.memory-cached), 'Node1 - Cached')
- target: alias(averageSeries($Cloud1.$Node1.memory.memory-free), 'Node1 - Free')
- target: alias(averageSeries($Cloud2.$Node2.memory.memory-slab_unrecl), 'Node2 - Slab Unrecl')
- target: alias(averageSeries($Cloud2.$Node2.memory.memory-used), 'Node2 - Used')
- target: alias(averageSeries($Cloud2.$Node2.memory.memory-buffered), 'Node2 - Buffered')
- target: alias(averageSeries($Cloud2.$Node2.memory.memory-slab_recl), 'Node2 - Slab Recl')
- target: alias(averageSeries($Cloud2.$Node2.memory.memory-cached), 'Node2 - Cached')
- target: alias(averageSeries($Cloud2.$Node2.memory.memory-free), 'Node2 - Free')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.memory.memory-slab_unrecl), '$Node1_Timeshift'), 'Node1 - Slab Unrecl')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.memory.memory-used), '$Node1_Timeshift'), 'Node1 - Used')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.memory.memory-buffered), '$Node1_Timeshift'), 'Node1 - Buffered')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.memory.memory-slab_recl), '$Node1_Timeshift'), 'Node1 - Slab Recl')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.memory.memory-cached), '$Node1_Timeshift'), 'Node1 - Cached')
# - target: alias(timeShift(averageSeries($Cloud1.$Node1.memory.memory-free), '$Node1_Timeshift'), 'Node1 - Free')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.memory.memory-slab_unrecl), '$Node2_Timeshift'), 'Node2 - Slab Unrecl')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.memory.memory-used), '$Node2_Timeshift'), 'Node2 - Used')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.memory.memory-buffered), '$Node2_Timeshift'), 'Node2 - Buffered')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.memory.memory-slab_recl), '$Node2_Timeshift'), 'Node2 - Slab Recl')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.memory.memory-cached), '$Node2_Timeshift'), 'Node2 - Cached')
# - target: alias(timeShift(averageSeries($Cloud2.$Node2.memory.memory-free), '$Node2_Timeshift'), 'Node2 - Free')
yaxes:
- format: bytes
- format: short
- title: Memory in Percentage
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/Node1/i"
stack: A
- alias: "/Node2/i"
stack: B
targets:
- hide: true
target: $Cloud1.$Node1.memory.memory-slab_unrecl
- hide: true
target: $Cloud1.$Node1.memory.memory-used
- hide: true
target: $Cloud1.$Node1.memory.memory-buffered
- hide: true
target: $Cloud1.$Node1.memory.memory-slab_recl
- hide: true
target: $Cloud1.$Node1.memory.memory-cached
- hide: true
target: $Cloud1.$Node1.memory.memory-free
- hide: true
target: sumSeries($Cloud1.$Node1.memory.*)
# - hide: true
# target: timeShift($Cloud1.$Node1.memory.memory-slab_unrecl, '$Node1_Timeshift')
# - hide: true
# target: timeShift($Cloud1.$Node1.memory.memory-used, '$Node1_Timeshift')
# - hide: true
# target: timeShift($Cloud1.$Node1.memory.memory-buffered, '$Node1_Timeshift')
# - hide: true
# target: timeShift($Cloud1.$Node1.memory.memory-slab_recl, '$Node1_Timeshift')
# - hide: true
# target: timeShift($Cloud1.$Node1.memory.memory-cached, '$Node1_Timeshift')
# - hide: true
# target: timeShift($Cloud1.$Node1.memory.memory-free, '$Node1_Timeshift')
# - hide: true
# target: timeShift(sumSeries($Cloud1.$Node1.memory.*), '$Node1_Timeshift')
- target: 'alias(asPercent(#A, #G), ''Node1 - Slab Unrecl'')'
- target: 'alias(asPercent(#B, #G), ''Node1 - Used'')'
- target: 'alias(asPercent(#C, #G), ''Node1 - Buffered'')'
- target: 'alias(asPercent(#D, #G), ''Node1 - Slab Recl'')'
- target: 'alias(asPercent(#E, #G), ''Node1 - Cached'')'
- target: 'alias(asPercent(#F, #G), ''Node1 - Free'')'
- hide: true
target: $Cloud2.$Node2.memory.memory-slab_unrecl
- hide: true
target: $Cloud2.$Node2.memory.memory-used
- hide: true
target: $Cloud2.$Node2.memory.memory-buffered
- hide: true
target: $Cloud2.$Node2.memory.memory-slab_recl
- hide: true
target: $Cloud2.$Node2.memory.memory-cached
- hide: true
target: $Cloud2.$Node2.memory.memory-free
- hide: true
target: sumSeries($Cloud2.$Node2.memory.*)
# - hide: true
# target: timeShift($Cloud2.$Node2.memory.memory-slab_unrecl, '$Node2_Timeshift')
# - hide: true
# target: timeShift($Cloud2.$Node2.memory.memory-buffered, '$Node2_Timeshift')
# - hide: true
# target: timeShift($Cloud2.$Node2.memory.memory-slab_recl, '$Node2_Timeshift')
# - hide: true
# target: timeShift($Cloud2.$Node2.memory.memory-cached, '$Node2_Timeshift')
# - hide: true
# target: timeShift($Cloud2.$Node2.memory.memory-free, '$Node2_Timeshift')
# - hide: true
# target: timeShift(sumSeries($Cloud2.$Node2.memory.*), '$Node2_Timeshift')
- target: 'alias(asPercent(#N, #T), ''Node2 - Slab Unrecl'')'
- target: 'alias(asPercent(#O, #T), ''Node2 - Used'')'
- target: 'alias(asPercent(#P, #T), ''Node2 - Buffered'')'
- target: 'alias(asPercent(#Q, #T), ''Node2 - Slab Recl'')'
- target: 'alias(asPercent(#R, #T), ''Node2 - Cached'')'
- target: 'alias(asPercent(#S, #T), ''Node2 - Free'')'
yaxes:
- format: percent
- format: short
- title: Disk Comparsion
collapse: true
height: 250px
showTitle: true
panels:
- title: iops
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Node1 - Write
transform: negative-Y
- alias: Node2 - Write
transform: negative-Y
targets:
- target: alias($Cloud1.$Node1.$Node1_Disk.disk_ops.read, 'Node1 - Read')
- target: alias($Cloud1.$Node1.$Node1_Disk.disk_ops.write, 'Node1 - Write')
- target: alias($Cloud2.$Node2.$Node2_Disk.disk_ops.read, 'Node2 - Read')
- target: alias($Cloud2.$Node2.$Node2_Disk.disk_ops.write, 'Node2 - Write')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Disk.disk_ops.read, '$Node1_Timeshift'), 'Node1 - Read')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Disk.disk_ops.write, '$Node1_Timeshift'), 'Node1 - Write')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Disk.disk_ops.read, '$Node2_Timeshift'), 'Node2 - Read')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Disk.disk_ops.write, '$Node2_Timeshift'), 'Node2 - Write')
yaxes:
- format: iops
- format: short
- title: Throughput
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Node1 - Write
transform: negative-Y
- alias: Node2 - Write
transform: negative-Y
targets:
- target: alias($Cloud1.$Node1.$Node1_Disk.disk_octets.read, 'Node1 - Read')
- target: alias($Cloud1.$Node1.$Node1_Disk.disk_octets.write, 'Node1 - Write')
- target: alias($Cloud2.$Node2.$Node2_Disk.disk_octets.read, 'Node2 - Read')
- target: alias($Cloud2.$Node2.$Node2_Disk.disk_octets.write, 'Node2 - Write')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Disk.disk_octets.read, '$Node1_Timeshift'), 'Node1 - Read')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Disk.disk_octets.write, '$Node1_Timeshift'), 'Node1 - Write')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Disk.disk_octets.read, '$Node2_Timeshift'), 'Node2 - Read')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Disk.disk_octets.write, '$Node2_Timeshift'), 'Node2 - Write')
yaxes:
- format: Bps
- format: short
- title: '% Time'
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias(scale($Cloud1.$Node1.$Node1_Disk.disk_io_time.io_time, 0.1), 'Node1 - Time')
- target: alias(scale($Cloud2.$Node2.$Node2_Disk.disk_io_time.io_time, 0.1), 'Node2 - Time')
# - target: alias(timeShift(scale($Cloud1.$Node1.$Node1_Disk.disk_io_time.io_time, 0.1), '$Node1_Timeshift'), 'Node1 - Time')
# - target: alias(timeShift(scale($Cloud2.$Node2.$Node2_Disk.disk_io_time.io_time, 0.1), '$Node2_Timeshift'), 'Node2 - Time')
yaxes:
- format: percent
- format: short
- title: Network Comparsion
collapse: true
height: 250px
showTitle: true
panels:
- title: pps
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Node1 - RX
transform: negative-Y
- alias: Node2 - RX
transform: negative-Y
targets:
- target: alias($Cloud1.$Node1.$Node1_Interface.if_packets.tx, 'Node1 - TX')
- target: alias($Cloud1.$Node1.$Node1_Interface.if_packets.rx, 'Node1 - RX')
- target: alias($Cloud2.$Node2.$Node2_Interface.if_packets.tx, 'Node2 - TX')
- target: alias($Cloud2.$Node2.$Node2_Interface.if_packets.rx, 'Node2 - RX')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Interface.if_packets.tx, '$Node1_Timeshift'), 'Node1 - TX')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Interface.if_packets.rx, '$Node1_Timeshift'), 'Node1 - RX')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Interface.if_packets.tx, '$Node2_Timeshift'), 'Node2 - TX')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Interface.if_packets.rx, '$Node2_Timeshift'), 'Node2 - RX')
yaxes:
- format: pps
- format: short
- title: Throughput
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Node1 - RX
transform: negative-Y
- alias: Node2 - RX
transform: negative-Y
targets:
- target: alias(scale($Cloud1.$Node1.$Node1_Interface.if_octets.tx, 8), 'Node1 - TX')
- target: alias(scale($Cloud1.$Node1.$Node1_Interface.if_octets.rx, 8), 'Node1 - RX')
- target: alias(scale($Cloud2.$Node2.$Node2_Interface.if_octets.tx, 8), 'Node2 - TX')
- target: alias(scale($Cloud2.$Node2.$Node2_Interface.if_octets.rx, 8), 'Node2 - RX')
# - target: alias(timeShift(scale($Cloud1.$Node1.$Node1_Interface.if_octets.tx, 8), '$Node1_Timeshift'), 'Node1 - TX')
# - target: alias(timeShift(scale($Cloud1.$Node1.$Node1_Interface.if_octets.rx, 8), '$Node1_Timeshift'), 'Node1 - RX')
# - target: alias(timeShift(scale($Cloud2.$Node2.$Node2_Interface.if_octets.tx, 8), '$Node2_Timeshift'), 'Node2 - TX')
# - target: alias(timeShift(scale($Cloud2.$Node2.$Node2_Interface.if_octets.rx, 8), '$Node2_Timeshift'), 'Node2 - RX')
yaxes:
- format: bps
- format: short
- title: Node Process Comparsion
collapse: true
height: 250px
showTitle: true
panels:
- title: Processes State
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/Node1/i"
stack: A
- alias: "/Node2/i"
stack: B
targets:
- target: alias($Cloud1.$Node1.processes.ps_state-running, 'Node1 - Running')
- target: alias($Cloud1.$Node1.processes.ps_state-stopped, 'Node1 - Stopped')
- target: alias($Cloud1.$Node1.processes.ps_state-sleeping, 'Node1 - Sleeping')
- target: alias($Cloud1.$Node1.processes.ps_state-blocked, 'Node1 - Blocked')
- target: alias($Cloud1.$Node1.processes.ps_state-paging, 'Node1 - Paging')
- target: alias($Cloud1.$Node1.processes.ps_state-zombies, 'Node1 - Zombies')
- target: alias($Cloud2.$Node2.processes.ps_state-running, 'Node2 - Running')
- target: alias($Cloud2.$Node2.processes.ps_state-stopped, 'Node2 - Stopped')
- target: alias($Cloud2.$Node2.processes.ps_state-sleeping, 'Node2 - Sleeping')
- target: alias($Cloud2.$Node2.processes.ps_state-blocked, 'Node2 - Blocked')
- target: alias($Cloud2.$Node2.processes.ps_state-paging, 'Node2 - Paging')
- target: alias($Cloud2.$Node2.processes.ps_state-zombies, 'Node2 - Zombies')
# - target: alias(timeShift($Cloud1.$Node1.processes.ps_state-running, '$Node1_Timeshift'), 'Node1 - Running')
# - target: alias(timeShift($Cloud1.$Node1.processes.ps_state-stopped, '$Node1_Timeshift'), 'Node1 - Stopped')
# - target: alias(timeShift($Cloud1.$Node1.processes.ps_state-sleeping, '$Node1_Timeshift'), 'Node1 - Sleeping')
# - target: alias(timeShift($Cloud1.$Node1.processes.ps_state-blocked, '$Node1_Timeshift'), 'Node1 - Blocked')
# - target: alias(timeShift($Cloud1.$Node1.processes.ps_state-paging, '$Node1_Timeshift'), 'Node1 - Paging')
# - target: alias(timeShift($Cloud1.$Node1.processes.ps_state-zombies, '$Node1_Timeshift'), 'Node1 - Zombies')
# - target: alias(timeShift($Cloud2.$Node2.processes.ps_state-running, '$Node2_Timeshift'), 'Node2 - Running')
# - target: alias(timeShift($Cloud2.$Node2.processes.ps_state-stopped, '$Node2_Timeshift'), 'Node2 - Stopped')
# - target: alias(timeShift($Cloud2.$Node2.processes.ps_state-sleeping, '$Node2_Timeshift'), 'Node2 - Sleeping')
# - target: alias(timeShift($Cloud2.$Node2.processes.ps_state-blocked, '$Node2_Timeshift'), 'Node2 - Blocked')
# - target: alias(timeShift($Cloud2.$Node2.processes.ps_state-paging, '$Node2_Timeshift'), 'Node2 - Paging')
# - target: alias(timeShift($Cloud2.$Node2.processes.ps_state-zombies, '$Node2_Timeshift'), 'Node2 - Zombies')
- title: Per Process Comparsion
collapse: true
height: 250px
showTitle: true
panels:
- title: Process Counts
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias($Cloud1.$Node1.$Node1_Process.ps_count.processes, 'Node1 - $Node1_Process - Processes')
- target: alias($Cloud1.$Node1.$Node1_Process.ps_count.threads, 'Node1 - $Node1_Process - Threads')
- target: alias($Cloud2.$Node2.$Node2_Process.ps_count.processes, 'Node2 - $Node2_Process - Processes')
- target: alias($Cloud2.$Node2.$Node2_Process.ps_count.threads, 'Node2 - $Node2_Process - Threads')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.ps_count.processes, '$Node1_Timeshift'), 'Node1 - $Node1_Process - Processes')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.ps_count.threads, '$Node1_Timeshift'), 'Node1 - $Node1_Process - Threads')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.ps_count.processes, '$Node2_Timeshift'), 'Node2 - $Node2_Process - Processes')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.ps_count.threads, '$Node2_Timeshift'), 'Node2 - $Node2_Process - Threads')
- title: Process CPU
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias(scale($Cloud1.$Node1.$Node1_Process.ps_cputime.syst, 0.0001), 'Node1 - $Node1_Process - System')
- target: alias(scale($Cloud1.$Node1.$Node1_Process.ps_cputime.user, 0.0001), 'Node1 - $Node1_Process - User')
- target: alias(scale($Cloud2.$Node2.$Node2_Process.ps_cputime.syst, 0.0001), 'Node2 - $Node2_Process - System')
- target: alias(scale($Cloud2.$Node2.$Node2_Process.ps_cputime.user, 0.0001), 'Node2 - $Node2_Process - User')
# - target: alias(timeShift(scale($Cloud1.$Node1.$Node1_Process.ps_cputime.syst, 0.0001), '$Node1_Timeshift'), 'Node1 - $Node1_Process - System')
# - target: alias(timeShift(scale($Cloud1.$Node1.$Node1_Process.ps_cputime.user, 0.0001), '$Node1_Timeshift'), 'Node1 - $Node1_Process - User')
# - target: alias(timeShift(scale($Cloud2.$Node2.$Node2_Process.ps_cputime.syst, 0.0001), '$Node2_Timeshift'), 'Node2 - $Node2_Process - System')
# - target: alias(timeShift(scale($Cloud2.$Node2.$Node2_Process.ps_cputime.user, 0.0001), '$Node2_Timeshift'), 'Node2 - $Node2_Process - User')
yaxes:
- format: percent
- format: short
- title: Process Memory
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias($Cloud1.$Node1.$Node1_Process.ps_rss, 'Node1 - $Node1_Process - RSS')
- target: alias($Cloud1.$Node1.$Node1_Process.ps_vm, 'Node1 - $Node1_Process - Virtual')
- target: alias($Cloud2.$Node2.$Node2_Process.ps_rss, 'Node2 - $Node2_Process - RSS')
- target: alias($Cloud2.$Node2.$Node2_Process.ps_vm, 'Node2 - $Node2_Process - Virtual')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.ps_rss, '$Node1_Timeshift'), 'Node1 - $Node1_Process - RSS')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.ps_vm, '$Node1_Timeshift'), 'Node1 - $Node1_Process - Virtual')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.ps_rss, '$Node2_Timeshift'), 'Node2 - $Node2_Process - RSS')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.ps_vm, '$Node2_Timeshift'), 'Node2 - $Node2_Process - Virtual')
yaxes:
- format: bits
- format: short
- title: Page Faults
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias($Cloud1.$Node1.$Node1_Process.ps_pagefaults.majflt, 'Node1 - $Node1_Process - Majflt')
- target: alias($Cloud1.$Node1.$Node1_Process.ps_pagefaults.minflt, 'Node1 - $Node1_Process - Minflt')
- target: alias($Cloud2.$Node2.$Node2_Process.ps_pagefaults.majflt, 'Node2 - $Node2_Process - Majflt')
- target: alias($Cloud2.$Node2.$Node2_Process.ps_pagefaults.minflt, 'Node2 - $Node2_Process - Minflt')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.ps_pagefaults.majflt, '$Node1_Timeshift'), 'Node1 - $Node1_Process - Majflt')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.ps_pagefaults.minflt, '$Node1_Timeshift'), 'Node1 - $Node1_Process - Minflt')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.ps_pagefaults.majflt, '$Node2_Timeshift'), 'Node2 - $Node2_Process - Majflt')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.ps_pagefaults.minflt, '$Node2_Timeshift'), 'Node2 - $Node2_Process - Minflt')
- title: iops
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias($Cloud1.$Node1.$Node1_Process.io_ops.read, 'Node1 - $Node1_Process - Read')
- target: alias($Cloud1.$Node1.$Node1_Process.io_ops.write, 'Node1 - $Node1_Process - Write')
- target: alias($Cloud2.$Node2.$Node2_Process.io_ops.read, 'Node2 - $Node2_Process - Read')
- target: alias($Cloud2.$Node2.$Node2_Process.io_ops.write, 'Node2 - $Node2_Process - Write')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.io_ops.read, '$Node1_Timeshift'), 'Node1 - $Node1_Process - Read')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.io_ops.write, '$Node1_Timeshift'), 'Node1 - $Node1_Process - Write')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.io_ops.read, '$Node2_Timeshift'), 'Node2 - $Node2_Process - Read')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.io_ops.write, '$Node2_Timeshift'), 'Node2 - $Node2_Process - Write')
yaxes:
- format: iops
- format: short
- title: IO Throughput
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias($Cloud1.$Node1.$Node1_Process.io_octets.rx, 'Node1 - $Node1_Process - Rx')
- target: alias($Cloud1.$Node1.$Node1_Process.io_octets.tx, 'Node1 - $Node1_Process - Tx')
- target: alias($Cloud2.$Node2.$Node2_Process.io_octets.rx, 'Node2 - $Node2_Process - Rx')
- target: alias($Cloud2.$Node2.$Node2_Process.io_octets.tx, 'Node2 - $Node2_Process - Tx')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.io_octets.rx, '$Node1_Timeshift'), 'Node1 - $Node1_Process - Rx')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.io_octets.tx, '$Node1_Timeshift'), 'Node1 - $Node1_Process - Tx')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.io_octets.rx, '$Node2_Timeshift'), 'Node2 - $Node2_Process - Rx')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.io_octets.tx, '$Node2_Timeshift'), 'Node2 - $Node2_Process - Tx')
yaxes:
- format: bytes
- format: short
- title: Disk IO Throughput
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias($Cloud1.$Node1.$Node1_Process.disk_octets.read, 'Node1 - $Node1_Process - Disk Read')
- target: alias($Cloud1.$Node1.$Node1_Process.disk_octets.write, 'Node1 - $Node1_Process - Disk Write')
- target: alias($Cloud2.$Node2.$Node2_Process.disk_octets.read, 'Node2 - $Node2_Process - Disk Read')
- target: alias($Cloud2.$Node2.$Node2_Process.disk_octets.write, 'Node2 - $Node2_Process - Disk Write')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.disk_octets.read, '$Node1_Timeshift'), 'Node1 - $Node1_Process - Disk Read')
# - target: alias(timeShift($Cloud1.$Node1.$Node1_Process.disk_octets.write, '$Node1_Timeshift'), 'Node1 - $Node1_Process - Disk Write')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.disk_octets.read, '$Node2_Timeshift'), 'Node2 - $Node2_Process - Disk Read')
# - target: alias(timeShift($Cloud2.$Node2.$Node2_Process.disk_octets.write, '$Node2_Timeshift'), 'Node2 - $Node2_Process - Disk Write')
yaxes:
- format: bytes
- format: short

View File

@ -1,590 +0,0 @@
{
"dashboard": {
"annotations": {
"list": []
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"hideControls": false,
"id": null,
"links": [],
"refresh": false,
"rows": [
{
"collapse": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {},
"id": 1,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": true,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias($Cloud.undercloud.memory.memory-slab_unrecl, 'Slab Unrecl')"
},
{
"refId": "B",
"target": "alias($Cloud.undercloud.memory.memory-used, 'Used')"
},
{
"refId": "C",
"target": "alias($Cloud.undercloud.memory.memory-buffered, 'Buffered')"
},
{
"refId": "D",
"target": "alias($Cloud.undercloud.memory.memory-slab_recl, 'Slab Recl')"
},
{
"refId": "E",
"target": "alias($Cloud.undercloud.memory.memory-cached, 'Cached')"
},
{
"refId": "F",
"target": "alias($Cloud.undercloud.memory.memory-free, 'Free')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "undercloud Memory Usage",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "bits",
"logBase": 1,
"max": null,
"min": 0,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": true,
"title": "undercloud Memory Usage",
"titleSize": "h6"
},
{
"collapse": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {},
"id": 2,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": true,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-slab_unrecl), 'Slab Unrecl')"
},
{
"refId": "B",
"target": "alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-used), 'Used')"
},
{
"refId": "C",
"target": "alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-buffered), 'Buffered')"
},
{
"refId": "D",
"target": "alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-slab_recl), 'Slab Recl')"
},
{
"refId": "E",
"target": "alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-cached), 'Cached')"
},
{
"refId": "F",
"target": "alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-free), 'Free')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Total Controller Memory Usage",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "bits",
"logBase": 1,
"max": null,
"min": 0,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": true,
"title": "Controller Total Memory Usage",
"titleSize": "h6"
},
{
"collapse": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {},
"id": 3,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": true,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-slab_unrecl), 'Slab Unrecl')"
},
{
"refId": "B",
"target": "alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-used), 'Used')"
},
{
"refId": "C",
"target": "alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-buffered), 'Buffered')"
},
{
"refId": "D",
"target": "alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-slab_recl), 'Slab Recl')"
},
{
"refId": "E",
"target": "alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-cached), 'Cached')"
},
{
"refId": "F",
"target": "alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-free), 'Free')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Total CephStorage Memory Usage",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "bits",
"logBase": 1,
"max": null,
"min": 0,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": true,
"title": "CephStorage Total Memory Usage",
"titleSize": "h6"
},
{
"collapse": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {},
"id": 4,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": true,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-slab_unrecl), 'Slab Unrecl')"
},
{
"refId": "B",
"target": "alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-used), 'Used')"
},
{
"refId": "C",
"target": "alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-buffered), 'Buffered')"
},
{
"refId": "D",
"target": "alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-slab_recl), 'Slab Recl')"
},
{
"refId": "E",
"target": "alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-cached), 'Cached')"
},
{
"refId": "F",
"target": "alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-free), 'Free')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Total ObjectStorage Memory Usage",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "bits",
"logBase": 1,
"max": null,
"min": 0,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": true,
"title": "ObjectStorage Total Memory Usage",
"titleSize": "h6"
},
{
"collapse": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {},
"id": 5,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": true,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(sumSeries($Cloud.overcloud-*compute-*.memory.memory-slab_unrecl), 'Slab Unrecl')"
},
{
"refId": "B",
"target": "alias(sumSeries($Cloud.overcloud-*compute-*.memory.memory-used), 'Used')"
},
{
"refId": "C",
"target": "alias(sumSeries($Cloud.overcloud-*compute-*.memory.memory-buffered), 'Buffered')"
},
{
"refId": "D",
"target": "alias(sumSeries($Cloud.overcloud-*compute-*.memory.memory-slab_recl), 'Slab Recl')"
},
{
"refId": "E",
"target": "alias(sumSeries($Cloud.overcloud-*compute-*.memory.memory-cached), 'Cached')"
},
{
"refId": "F",
"target": "alias(sumSeries($Cloud.overcloud-*compute-*.memory.memory-free), 'Free')"
}
],
"thresholds": [],
"timeFrom": null,
"timeShift": null,
"title": "Total Compute Memory Usage",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "bits",
"logBase": 1,
"max": null,
"min": 0,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"repeat": null,
"repeatIteration": null,
"repeatRowId": null,
"showTitle": true,
"title": "Compute Total Memory Usage",
"titleSize": "h6"
}
],
"schemaVersion": 12,
"sharedCrosshair": false,
"style": "dark",
"tags": [],
"templating": {
"list": [
{
"allFormat": "glob",
"current": {
"text": "",
"value": ""
},
"datasource": null,
"hide": 0,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "Cloud",
"options": [],
"query": "*",
"refresh": 2,
"regex": "/^(?!stats[d]*[_counts]*$).*$/",
"type": "query"
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"now": true,
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "utc",
"title": "Cloud Total Memory Usage",
"version": 7
}
}

View File

@ -0,0 +1,186 @@
---
dashboard:
title: Cloud Total Memory Usage
templating:
- name: Cloud
query: "*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
- title: description row
height: 75px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
- title: Undercloud Memory Usage
collapse: true
height: 250px
showTitle: true
panels:
- title: Undercloud Memory Usage
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
stack: true
targets:
- target: alias($Cloud.undercloud.memory.memory-slab_unrecl, 'Slab Unrecl')
- target: alias($Cloud.undercloud.memory.memory-used, 'Used')
- target: alias($Cloud.undercloud.memory.memory-buffered, 'Buffered')
- target: alias($Cloud.undercloud.memory.memory-slab_recl, 'Slab Recl')
- target: alias($Cloud.undercloud.memory.memory-cached, 'Cached')
- target: alias($Cloud.undercloud.memory.memory-free, 'Free')
yaxes:
- format: bits
- format: short
- title: Controller Total Memory Usage
collapse: true
height: 250px
showTitle: true
panels:
- title: Total Controller Memory Usage
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
stack: true
targets:
- target: alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-slab_unrecl), 'Slab Unrecl')
- target: alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-used), 'Used')
- target: alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-buffered), 'Buffered')
- target: alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-slab_recl), 'Slab Recl')
- target: alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-cached), 'Cached')
- target: alias(sumSeries($Cloud.overcloud-controller-*.memory.memory-free), 'Free')
yaxes:
- format: bits
- format: short
- title: Networker Total Memory Usage
collapse: true
height: 250px
showTitle: true
panels:
- title: Total Networker Memory Usage
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
stack: true
targets:
- target: alias(sumSeries($Cloud.overcloud-networker-*.memory.memory-slab_unrecl), 'Slab Unrecl')
- target: alias(sumSeries($Cloud.overcloud-networker-*.memory.memory-used), 'Used')
- target: alias(sumSeries($Cloud.overcloud-networker-*.memory.memory-buffered), 'Buffered')
- target: alias(sumSeries($Cloud.overcloud-networker-*.memory.memory-slab_recl), 'Slab Recl')
- target: alias(sumSeries($Cloud.overcloud-networker-*.memory.memory-cached), 'Cached')
- target: alias(sumSeries($Cloud.overcloud-networker-*.memory.memory-free), 'Free')
yaxes:
- format: bits
- format: short
- title: CephStorage Total Memory Usage
collapse: true
height: 250px
showTitle: true
panels:
- title: Total CephStorage Memory Usage
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
stack: true
targets:
- target: alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-slab_unrecl), 'Slab Unrecl')
- target: alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-used), 'Used')
- target: alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-buffered), 'Buffered')
- target: alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-slab_recl), 'Slab Recl')
- target: alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-cached), 'Cached')
- target: alias(sumSeries($Cloud.overcloud-cephstorage-*.memory.memory-free), 'Free')
yaxes:
- format: bits
- format: short
- title: ObjectStorage Total Memory Usage
collapse: true
height: 250px
showTitle: true
panels:
- title: Total ObjectStorage Memory Usage
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
stack: true
targets:
- target: alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-slab_unrecl), 'Slab Unrecl')
- target: alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-used), 'Used')
- target: alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-buffered), 'Buffered')
- target: alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-slab_recl), 'Slab Recl')
- target: alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-cached), 'Cached')
- target: alias(sumSeries($Cloud.overcloud-objectstorage-*.memory.memory-free), 'Free')
yaxes:
- format: bits
- format: short
- title: Compute Total Memory Usage
collapse: true
height: 250px
showTitle: true
panels:
- title: Total Compute Memory Usage
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
stack: true
targets:
- target: alias(sumSeries($Cloud.overcloud-compute-*.memory.memory-slab_unrecl), 'Slab Unrecl')
- target: alias(sumSeries($Cloud.overcloud-compute-*.memory.memory-used), 'Used')
- target: alias(sumSeries($Cloud.overcloud-compute-*.memory.memory-buffered), 'Buffered')
- target: alias(sumSeries($Cloud.overcloud-compute-*.memory.memory-slab_recl), 'Slab Recl')
- target: alias(sumSeries($Cloud.overcloud-compute-*.memory.memory-cached), 'Cached')
- target: alias(sumSeries($Cloud.overcloud-compute-*.memory.memory-free), 'Free')
yaxes:
- format: bits
- format: short

File diff suppressed because it is too large Load Diff

View File

@ -1,698 +0,0 @@
{
"dashboard": {
"annotations": {
"list": []
},
"description": "Ironic StatsD data, only populated when StatsD is enabled",
"editable": true,
"gnetId": null,
"hideControls": false,
"id": null,
"links": [],
"refresh": false,
"rows": [
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 1,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 6,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "stats.timers.$Cloud.ironic.conductor.manager.do_sync_power_state.mean_90"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Power State Sync: 90th Percentile Mean",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"show": true
},
"yaxes": [
{
"format": "short",
"label": "Milliseconds",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
},
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 2,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 6,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "stats.timers.$Cloud.ironic.conductor.manager.ConductorManager.change_node_power_state.mean_90"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Change Node Power State: 90th percentile mean",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"show": true
},
"yaxes": [
{
"format": "short",
"label": "Milliseconds",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"title": "Row"
},
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 3,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 6,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "stats.timers.$Cloud.ironic.conductor.manager.ConductorManager.set_boot_device.mean_90"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Set boot device: 90th percentile mean",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"show": true
},
"yaxes": [
{
"format": "short",
"label": "Milliseconds",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
},
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 4,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 6,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "stats.timers.$Cloud.ironic.conductor.manager.ConductorManager.do_node_deploy.mean_90"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Do Node Deployment: 90th percentile mean",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"show": true
},
"yaxes": [
{
"format": "short",
"label": "Milliseconds",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"title": "New row"
},
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 5,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 6,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "stats.timers.$Cloud.ironic.api.controllers.v1.node.NodesController.detail.mean_90"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Get Node Details API response time: 90th percentile mean",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"show": true
},
"yaxes": [
{
"format": "short",
"label": "Milliseconds",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
},
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 6,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 6,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "stats.timers.$Cloud.ironic.api.controllers.v1.node.NodesController.get_all.mean_90"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Get Node List API response time: 90th Percentile mean",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"show": true
},
"yaxes": [
{
"format": "short",
"label": "Milliseconds",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"title": "New row"
},
{
"collapse": false,
"editable": true,
"height": "250px",
"panels": [
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 7,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 6,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "stats.timers.$Cloud.ironic.api.controllers.v1.node.NodeStatesController.power.mean_90"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Node Power State API response time: 90th Percentile Mean",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"show": true
},
"yaxes": [
{
"format": "short",
"label": "Milliseconds",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
},
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
"id": 8,
"isNew": true,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 6,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "stats.timers.$Cloud.ironic.api.controllers.v1.node.NodeStatesController.provision.mean_90"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Ironic Node Provision State API response time: 90th percentile mean",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"show": true
},
"yaxes": [
{
"format": "short",
"label": "Millisecond",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
]
}
],
"title": "New row"
}
],
"schemaVersion": 12,
"sharedCrosshair": false,
"style": "dark",
"tags": [],
"templating": {
"list": [
{
"allFormat": "glob",
"current": {
"text": "",
"value": ""
},
"datasource": null,
"hide": 0,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "Cloud",
"options": [],
"query": "*",
"refresh": 2,
"regex": "/^(?!stats[d]*[_counts]*$).*$/",
"type": "query"
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "browser",
"title": "OpenStack Ironic Metrics",
"version": 2
}
}

View File

@ -0,0 +1,126 @@
---
dashboard:
title: OpenStack Ironic Metrics
templating:
- name: Cloud
query: "*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
- title: Row 1
height: 250px
panels:
- title: "Power State Sync: 90th Percentile Mean"
type: graph
legend:
show: true
nullPointMode: 'connected'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.conductor.manager.do_sync_power_state.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: "Change Node Power State: 90th percentile mean"
type: graph
legend:
show: true
nullPointMode: 'connected'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.conductor.manager.ConductorManager.change_node_power_state.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: Row 2
height: 250px
panels:
- title: "Set boot device: 90th percentile mean"
type: graph
legend:
show: true
nullPointMode: 'connected'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.conductor.manager.ConductorManager.set_boot_device.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: "Do Node Deployment: 90th percentile mean"
type: graph
legend:
show: true
nullPointMode: 'connected'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.conductor.manager.ConductorManager.do_node_deploy.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: Row 3
height: 250px
panels:
- title: "Get Node Details API response time: 90th percentile mean"
type: graph
legend:
show: true
nullPointMode: 'connected'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.api.controllers.v1.node.NodesController.detail.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: "Get Node List API response time: 90th Percentile mean"
type: graph
legend:
show: true
nullPointMode: 'connected'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.api.controllers.v1.node.NodesController.get_all.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: Row 4
height: 250px
panels:
- title: "Node Power State API response time: 90th Percentile Mean"
type: graph
legend:
show: true
nullPointMode: 'connected'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.api.controllers.v1.node.NodeStatesController.power.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: "Ironic Node Provision State API response time: 90th percentile mean"
type: graph
legend:
show: true
nullPointMode: 'connected'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.api.controllers.v1.node.NodeStatesController.provision.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short

View File

@ -1,59 +0,0 @@
#!/usr/bin/env python
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import argparse
import json
# Each Query in a Grafana Panel has a Reference ID, and this helps correct any drift or cut & paste
# errors in the each Query's ID.
refIds = [
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N",
"O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB",
"AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN",
"AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ"
]
def main():
"""Script used to fix panel ids in static dashboards. Typically adding a new panel or row into
a static dashboard will involve re-ordering all subsequent panels. This script automates that.
"""
parser = argparse.ArgumentParser(description="Fix panel ids in grafana json dashboard.")
parser.add_argument('inputfile', help='Input json file')
parser.add_argument('outputfile', help='Output json file')
args = parser.parse_args()
with open(args.inputfile) as data_file:
data = json.load(data_file)
index = 0
for row in data['dashboard']['rows']:
for panel in row['panels']:
index += 1
if index != panel['id']:
print "Found error in panel({}): {}".format(index, panel['title'])
panel['id'] = index
# Check over Query RefIds while after fixing Panel ID
refid_index = 0
for target in panel['targets']:
if target["refId"] != refIds[refid_index]:
print "Panel: {}, Incorrect Target ID: {} Should be: {}".format(
panel['title'], target["refId"], refIds[refid_index])
target['refId'] = refIds[refid_index]
refid_index += 1
with open(args.outputfile, 'w') as outputfile:
json.dump(data, outputfile, sort_keys=True, indent=2, separators=(',', ': '))
if __name__ == "__main__":
main()

View File

@ -9,65 +9,76 @@
when: item == dashboard_cloud_name
with_items: "{{forbidden_cloud_names}}"
# Cloud Specific Dashboards (Generated off Ansible inventory)
- name: Generate Cloud Specific CPU/Memory/Disk/Network/Log Dashboards
vars:
ansible_python_interpreter: "/usr/bin/python"
# Templated Cloud Specific Dashboards
- name: Generate Cloud Specific CPU/Memory/Disk/Network/Log Dashboards from GrafYaml Templates
template:
src: "cloud_specific_{{item}}.json.j2"
dest: "{{role_path}}/files/cloud_specific_{{item}}.json"
src: "cloud_specific_{{item}}.yaml.j2"
dest: "{{role_path}}/files/cloud_specific_{{item}}.yaml"
when: upload_cloud_specific|bool
with_items: "{{cloud_specific_dashboards}}"
- name: Remove Existing Cloud Specific CPU/Memory/Disk/Network/Log Dashboards
command: "curl -X DELETE -H 'Content-Type: application/json' http://{{grafana_username}}:{{grafana_password}}@{{grafana_host}}:{{grafana_port}}/api/dashboards/db/{{dashboard_cloud_name}}-{{item|replace('_', '-')}}"
when: overwrite_existing|bool and upload_cloud_specific|bool
with_items: "{{cloud_specific_dashboards}}"
- name: Upload Cloud Specific CPU/Memory/Disk/Network/Log Dashboards
command: "curl -X POST -H 'Content-Type: application/json' -d @{{role_path}}/files/cloud_specific_{{item}}.json http://{{grafana_username}}:{{grafana_password}}@{{grafana_host}}:{{grafana_port}}/api/dashboards/db"
- name: Upload Cloud Specific CPU/Memory/Disk/Network/Log Dashboards via GrafYaml
shell: |
. {{browbeat_venv}}/bin/activate
grafana-dashboard --grafana-url http://{{grafana_host}}:{{grafana_port}} --grafana-apikey {{grafana_apikey}} update {{role_path}}/files/cloud_specific_{{item}}.yaml
when: upload_cloud_specific|bool
with_items: "{{cloud_specific_dashboards}}"
- name: Remove leftover json file(s) from Cloud Specific CPU/Memory/Disk/Network/Log Dashboards
- name: Remove leftover yaml file(s) from Cloud Specific CPU/Memory/Disk/Network/Log Dashboards
file:
path: "{{role_path}}/files/cloud_specific_{{item}}.json"
path: "{{role_path}}/files/cloud_specific_{{item}}.yaml"
state: absent
when: upload_cloud_specific|bool
with_items: "{{cloud_specific_dashboards}}"
# General Performance Dashboards (Templated from Ansible vars)
- name: Generate General Dashboards
# Templated General Performance Dashboards
- name: Generate General Performance Dashboards
template:
src: "{{role_path}}/templates/{{item.template_name}}_general_system_performance.json.j2"
dest: "{{role_path}}/files/{{item.process_list_name}}_general_system_performance.json"
src: "{{role_path}}/templates/{{item.template_name}}_general_system_performance.yaml.j2"
dest: "{{role_path}}/files/{{item.process_list_name}}_general_system_performance.yaml"
when: upload_general|bool
with_items: "{{general_dashboards}}"
- name: Remove Existing General Dashboards
command: "curl -X DELETE -H 'Content-Type: application/json' http://{{grafana_username}}:{{grafana_password}}@{{grafana_host}}:{{grafana_port}}/api/dashboards/db/{{item.process_list_name|lower}}-general-system-performance"
when: overwrite_existing|bool and upload_general|bool
with_items: "{{general_dashboards}}"
- name: Upload General Dashboards to Grafana
command: "curl -X POST -H 'Content-Type: application/json' -d @{{role_path}}/files/{{item.process_list_name}}_general_system_performance.json http://{{grafana_username}}:{{grafana_password}}@{{grafana_host}}:{{grafana_port}}/api/dashboards/db"
- name: Upload General Performance Dashboards to Grafana
shell: |
. {{browbeat_venv}}/bin/activate
grafana-dashboard --grafana-url http://{{grafana_host}}:{{grafana_port}} --grafana-apikey {{grafana_apikey}} update {{role_path}}/files/{{item.process_list_name}}_general_system_performance.yaml
when: upload_general|bool
with_items: "{{general_dashboards}}"
- name: Remove leftover json file(s) from Generated General Dashboards
- name: Remove leftover yaml file(s) from General Performance Dashboards
file:
path: "{{role_path}}/files/{{item.process_list_name}}_general_system_performance.json"
path: "{{role_path}}/files/{{item.process_list_name}}_general_system_performance.yaml"
state: absent
when: upload_general|bool
with_items: "{{general_dashboards}}"
# Static Dashboards:
- name: Remove Existing Static Dashboard(s)
command: "curl -X DELETE -H 'Content-Type: application/json' http://{{grafana_username}}:{{grafana_password}}@{{grafana_host}}:{{grafana_port}}/api/dashboards/db/{{item|replace('_', '-')}}"
when: overwrite_existing|bool and upload_static|bool
with_items: "{{static_dashboards}}"
- name: Upload Static Dashboards to Grafana
command: "curl -X POST -H 'Content-Type: application/json' -d @{{role_path}}/files/{{item}}.json http://{{grafana_username}}:{{grafana_password}}@{{grafana_host}}:{{grafana_port}}/api/dashboards/db"
- name: Upload Static Dashboards to Grafana via GrafYaml
shell: |
. {{browbeat_venv}}/bin/activate
grafana-dashboard --grafana-url http://{{grafana_host}}:{{grafana_port}} --grafana-apikey {{grafana_apikey}} update {{role_path}}/files/{{item}}.yaml
when: upload_static|bool
with_items: "{{static_dashboards}}"
# Templated Dashboards
- name: Generate Templated Dashboards
template:
src: "{{item}}.yaml.j2"
dest: "{{role_path}}/files/{{item}}.yaml"
when: upload_templated|bool
with_items: "{{templated_dashboards}}"
- name: Upload Generated Templated Dashboards via GrafYaml
shell: |
. {{browbeat_venv}}/bin/activate
grafana-dashboard --grafana-url http://{{grafana_host}}:{{grafana_port}} --grafana-apikey {{grafana_apikey}} update {{role_path}}/files/{{item}}.yaml
when: upload_templated|bool
with_items: "{{templated_dashboards}}"
- name: Remove leftover yaml file(s) from Generated Templated Dashboards
file:
path: "{{role_path}}/files/{{item}}.yaml"
state: absent
when: upload_templated|bool
with_items: "{{templated_dashboards}}"

View File

@ -0,0 +1,67 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: {{item.process_list_name}} General System Performance
templating:
- name: Cloud
query: "*"
refresh: true
type: query
- name: Node
query: $Cloud.*
refresh: true
type: query
- name: Disk
query: $Cloud.$Node.disk-*
refresh: true
type: query
- name: Interface
query: $Cloud.$Node.interface-*
refresh: true
type: query
- name: cpus0
hide: 1
includeAll: true
multi: true
query: $Cloud.$Node.cpu-[0-9]
refresh: true
type: query
- name: cpus00
hide: 1
includeAll: true
multi: true
query: $Cloud.$Node.cpu-[1-9][0-9]
refresh: true
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% include 'partials/cpu_all.yaml' %}
{% include 'partials/cpu_cores.yaml' %}
{% include 'partials/memory.yaml' %}
{% include 'partials/disk.yaml' %}
{% include 'partials/df.yaml' %}
{% include 'partials/network.yaml' %}
{% include 'partials/turbostat.yaml' %}
{% include 'partials/numa.yaml' %}
{% include 'partials/irq.yaml' %}
{% include 'partials/load.yaml' %}
{% include 'partials/processes.yaml' %}
{% set per_process_row_title_prefix = 'Baremetal' %}
{% include 'partials/per_process_rows.yaml.j2' %}
{% include 'partials/tail.yaml' %}

View File

@ -0,0 +1,42 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: Cloud Ceph Monitoring
templating:
- name: Cloud
query: "*"
refresh: true
type: query
- name: Node
query: "$Cloud.*"
refresh: true
type: query
- name: OSD
includeAll: true
multi: true
query: "$Cloud.$Node.collectd-ceph-storage-osd-*"
refresh: true
type: query
- name: Pool
includeAll: true
multi: true
query: "$Cloud.$Node.collectd-ceph-storage-pool-*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% set partial_panel = {
'title': 'Ceph Process Metrics',
'processes': ['ceph-mon', 'ceph-osd',],
}
%}
{% include 'partials/per_process_single_row.yaml.j2' %}
{% set partial_panel = {'node': '$Node'} %}
{% include 'partials/cephstorage_python_plugin_metrics.yaml.j2' %}
{% include 'partials/ceph_mon.yaml' %}

View File

@ -0,0 +1,21 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: Cloud Gnocchi Status
templating:
- name: Cloud
query: "*"
refresh: true
type: query
- name: Node
query: "$Cloud.*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% set partial_panel = {'collapse': 'false'} %}
{% include 'partials/gnocchi_backlog.yaml.j2' %}

View File

@ -0,0 +1,52 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: Cloud Rabbitmq Monitoring
templating:
- name: Cloud
query: "*"
refresh: true
type: query
- name: Node
query: "$Cloud.*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% set partial_panel = {
'title': 'Rabbitmq Process Metrics',
'processes': ['rabbitmq',],
}
%}
{% include 'partials/per_process_single_row.yaml.j2' %}
{% set partial_panel = {'node': '$Node'} %}
{% include 'partials/rabbitmq_metrics.yaml.j2' %}
- title: Rabbitmq Log Messages
collapse: true
height: 200px
showTitle: true
panels:
- title: Tail
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias(scale($Cloud.$Node.tail-rabbitmq.counter-error, 10), 'Error')
- target: alias(scale($Cloud.$Node.tail-rabbitmq.counter-warn, 10), 'Warn')
- target: alias(scale($Cloud.$Node.tail-rabbitmq.counter-info, 10), 'Info')

View File

@ -1,193 +0,0 @@
{% set vars = {'panel_idx': 0, 'initial': 0} %}
{% set dashboard_groups = ['undercloud', 'controller', 'blockstorage', 'objectstorage', 'cephstorage', 'compute'] %}
{
"dashboard": {
"id": null,
"title": "{{dashboard_cloud_name}} - CPU",
"tags": [
"{{dashboard_cloud_name}}"
],
"style": "dark",
"timezone": "utc",
"editable": true,
"hideControls": false,
"sharedCrosshair": false,
"rows": [
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial == 0 %}
{% if vars.update({'initial': (vars.initial + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": 0,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": true,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-system), 'System')"
},
{
"refId": "B",
"target": "alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-user), 'User')"
},
{
"refId": "C",
"target": "alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-nice), 'Nice')"
},
{
"refId": "D",
"target": "alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-steal), 'Steal')"
},
{
"refId": "E",
"target": "alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-softirq), 'SoftIRQ')"
},
{
"refId": "F",
"target": "alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-interrupt), 'Interrupt')"
},
{
"refId": "G",
"target": "alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-wait), 'Wait')"
},
{
"refId": "H",
"target": "alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-idle), 'Idle')"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} CPU Usage",
"tooltip": {
"shared": true,
"value_type": "individual"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"percent",
"short"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} CPU Usage",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) CPU Usage",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% if loop.last %}
}
{% endif %}
{% endfor %}
],
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"templating": {
"list": []
},
"annotations": {
"list": []
},
"schemaVersion": 8,
"version": 0,
"links": [
{
"icon": "external link",
"tags": [
"{{dashboard_cloud_name}}"
],
"type": "dashboards",
"asDropdown": true,
"title": "{{dashboard_cloud_name}} Dashboards"
}
],
"overwrite": true
}
}

View File

@ -0,0 +1,69 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: {{dashboard_cloud_name}} - CPU
links:
- type: dashboards
asDropdown: true
icon: external link
includeVars: true
keepTime: true
tags:
- {{dashboard_cloud_name}}
targetBlank: true
title: "{{dashboard_cloud_name}} Dashboards"
tags:
- {{dashboard_cloud_name}}
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} CPU Usage
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) CPU Usage
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} CPU Usage
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- target: alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-system), 'System')
- target: alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-user), 'User')
- target: alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-nice), 'Nice')
- target: alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-steal), 'Steal')
- target: alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-softirq), 'SoftIRQ')
- target: alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-interrupt), 'Interrupt')
- target: alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-wait), 'Wait')
- target: alias(sumSeries({{dashboard_cloud_name}}.{{host}}.cpu-*.cpu-idle), 'Idle')
yaxes:
- format: percent
- format: short
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}

View File

@ -1,488 +0,0 @@
{% set vars = {'panel_idx': 0, 'initial1': 0, 'initial2': 0, 'initial3': 0} %}
{% set dashboard_groups = ['undercloud', 'controller', 'blockstorage', 'objectstorage', 'cephstorage', 'compute'] %}
{
"dashboard": {
"id": null,
"title": "{{dashboard_cloud_name}} - Disk",
"tags": [
"{{dashboard_cloud_name}}"
],
"style": "dark",
"timezone": "utc",
"editable": true,
"hideControls": false,
"sharedCrosshair": false,
"rows": [
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial1 == 0 %}
{% if vars.update({'initial1': (vars.initial1 + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Weighted Time",
"yaxis": 2
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias(scale({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_io_time.io_time, 0.1), 'Time')"
},
{
"refId": "B",
"target": "alias({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_io_time.weighted_io_time, 'Weighted Time')"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} - ${{group}}_disk IO Time",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"percent",
"ms"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} IO Time",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) IO Time",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% if loop.last %}
},
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial2 == 0 %}
{% if vars.update({'initial2': (vars.initial2 + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Write",
"transform": "negative-Y"
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_ops.read, 'Read')"
},
{
"refId": "B",
"target": "alias({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_ops.write, 'Write')"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} - ${{group}}_disk iops",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"iops",
"short"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} Disk iops",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Disk iops",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% if loop.last %}
},
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial3 == 0 %}
{% if vars.update({'initial3': (vars.initial3 + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Write",
"transform": "negative-Y"
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_octets.read, 'Read')"
},
{
"refId": "B",
"target": "alias({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_octets.write, 'Write')"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} - ${{group}}_disk Throughput",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"Bps",
"short"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} Disk Throughput",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Disk Throughput",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% if loop.last %}
}
{% endif %}
{% endfor %}
],
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"templating": {
"list": [
{
"allFormat": "glob",
"current": {
"text": "disk-vda",
"value": "disk-vda"
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "undercloud_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*undercloud*.disk-*",
"refresh": true,
"type": "query"
},
{
"allFormat": "glob",
"current": {
"text": "disk-sda",
"value": "disk-sda"
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "controller_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*controller*.disk-*",
"refresh": true,
"type": "query"
},
{
"allFormat": "glob",
"current": {
"text": "disk-sda",
"value": "disk-sda"
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "compute_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*compute*.disk-*",
"refresh": true,
"type": "query"
},
{
"allFormat": "glob",
"current": {
"text": "None",
"value": "",
"isNone": true
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "cephstorage_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*cephstorage*.disk-*",
"refresh": true,
"type": "query"
},
{
"allFormat": "glob",
"current": {
"text": "None",
"value": "",
"isNone": true
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "objectstorage_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*objectstorage*.disk-*",
"refresh": true,
"type": "query"
},
{
"allFormat": "glob",
"current": {
"text": "None",
"value": "",
"isNone": true
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "blockstorage_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*blockstorage*.disk-*",
"refresh": true,
"type": "query"
}
]
},
"annotations": {
"list": []
},
"schemaVersion": 8,
"version": 3,
"links": [
{
"icon": "external link",
"tags": [
"{{dashboard_cloud_name}}"
],
"type": "dashboards",
"asDropdown": true,
"title": "{{dashboard_cloud_name}} Dashboards"
}
],
"overwrite": true
}
}

View File

@ -0,0 +1,168 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: {{dashboard_cloud_name}} - Disk
links:
- type: dashboards
asDropdown: true
icon: external link
includeVars: true
keepTime: true
tags:
- {{dashboard_cloud_name}}
targetBlank: true
title: "{{dashboard_cloud_name}} Dashboards"
tags:
- {{dashboard_cloud_name}}
templating:
- name: undercloud_disk
query: "{{dashboard_cloud_name}}.*undercloud*.disk-*"
refresh: true
type: query
- name: controller_disk
query: "{{dashboard_cloud_name}}.*controller*.disk-*"
refresh: true
type: query
- name: compute_disk
query: "{{dashboard_cloud_name}}.*compute*.disk-*"
refresh: true
type: query
- name: cephstorage_disk
query: "{{dashboard_cloud_name}}.*cephstorage*.disk-*"
refresh: true
type: query
- name: objectstorage_disk
query: "{{dashboard_cloud_name}}.*objectstorage*.disk-*"
refresh: true
type: query
- name: blockstorage_disk
query: "{{dashboard_cloud_name}}.*blockstorage*.disk-*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} IO Time
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) IO Time
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} - ${{group}}_disk IO Time
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Weighted Time
yaxis: 2
targets:
- target: alias(scale({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_io_time.io_time, 0.1), 'Time')
- target: alias({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_io_time.weighted_io_time, 'Weighted Time')
yaxes:
- format: percent
- format: ms
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} Disk iops
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Disk iops
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} - ${{group}}_disk iops
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Write
transform: negative-Y
targets:
- target: alias({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_ops.read, 'Read')
- target: alias({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_ops.write, 'Write')
yaxes:
- format: iops
- format: short
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} Disk Throughput
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Disk Throughput
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} - ${{group}}_disk Throughput
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Write
transform: negative-Y
targets:
- target: alias({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_octets.read, 'Read')
- target: alias({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_octets.write, 'Write')
yaxes:
- format: Bps
- format: short
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}

View File

@ -1,482 +0,0 @@
{% set vars = {'panel_idx': 0, 'initial1': 0, 'initial2': 0, 'initial3': 0} %}
{% set dashboard_groups = ['undercloud', 'controller', 'blockstorage', 'objectstorage', 'cephstorage', 'compute'] %}
{
"dashboard": {
"id": null,
"title": "{{dashboard_cloud_name}} - Disks - All",
"tags": [
"{{dashboard_cloud_name}}"
],
"style": "dark",
"timezone": "utc",
"editable": true,
"hideControls": false,
"sharedCrosshair": false,
"rows": [
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial1 == 0 %}
{% if vars.update({'initial1': (vars.initial1 + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 0,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "aliasByNode(aliasSub(scale({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_io_time.io_time, 0.1), 'disk-', ''), 2)"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} - ${{group}}_disk IO Time",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"percent",
"ms"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} IO Time",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) IO Time",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% if loop.last %}
},
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial2 == 0 %}
{% if vars.update({'initial2': (vars.initial2 + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 0,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "/.*write/",
"transform": "negative-Y"
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_ops.read, 'disk-', ''), 2, 4)"
},
{
"refId": "B",
"target": "aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_ops.write, 'disk-', ''), 2, 4)"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} - ${{group}}_disk iops",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"iops",
"short"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} Disk iops",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Disk iops",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% if loop.last %}
},
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial3 == 0 %}
{% if vars.update({'initial3': (vars.initial3 + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 0,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "/.*write/",
"transform": "negative-Y"
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_octets.read, 'disk-', ''), 2, 4)"
},
{
"refId": "B",
"target": "aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_octets.write, 'disk-', ''), 2, 4)"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} - ${{group}}_disk Throughput",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"Bps",
"short"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} Disk Throughput",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Disk Throughput",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% if loop.last %}
}
{% endif %}
{% endfor %}
],
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"templating": {
"list": [
{
"allFormat": "glob",
"current": {
"text": "all",
"value": "all"
},
"datasource": null,
"includeAll": true,
"multi": true,
"multiFormat": "glob",
"name": "undercloud_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*undercloud*.disk-*",
"refresh": true,
"type": "query",
"regex": "/disk-.*$/"
},
{
"allFormat": "glob",
"current": {
"text": "all",
"value": "all"
},
"datasource": null,
"includeAll": true,
"multi": true,
"multiFormat": "glob",
"name": "controller_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*controller*.disk-*",
"refresh": true,
"type": "query",
"regex": "/disk-.*$/"
},
{
"allFormat": "glob",
"current": {
"text": "all",
"value": "all"
},
"datasource": null,
"includeAll": true,
"multi": true,
"multiFormat": "glob",
"name": "compute_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*compute*.disk-*",
"refresh": true,
"type": "query",
"regex": "/disk-.*$/"
},
{
"allFormat": "glob",
"current": {
"text": "all",
"value": "all"
},
"datasource": null,
"includeAll": true,
"multi": true,
"multiFormat": "glob",
"name": "cephstorage_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*cephstorage*.disk-*",
"refresh": true,
"type": "query",
"regex": "/disk-.*$/"
},
{
"allFormat": "glob",
"current": {
"text": "all",
"value": "all"
},
"datasource": null,
"includeAll": true,
"multi": true,
"multiFormat": "glob",
"name": "objectstorage_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*objectstorage*.disk-*",
"refresh": true,
"type": "query",
"regex": "/disk-.*$/"
},
{
"allFormat": "glob",
"current": {
"text": "all",
"value": "all"
},
"datasource": null,
"includeAll": true,
"multi": true,
"multiFormat": "glob",
"name": "blockstorage_disk",
"options": [],
"query": "{{dashboard_cloud_name}}.*blockstorage*.disk-*",
"refresh": true,
"type": "query",
"regex": "/disk-.*$/"
}
]
},
"annotations": {
"list": []
},
"schemaVersion": 8,
"version": 3,
"links": [
{
"icon": "external link",
"tags": [
"{{dashboard_cloud_name}}"
],
"type": "dashboards",
"asDropdown": true,
"title": "{{dashboard_cloud_name}} Dashboards"
}
],
"overwrite": true
}
}

View File

@ -0,0 +1,179 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: {{dashboard_cloud_name}} - Disks - All
links:
- type: dashboards
asDropdown: true
icon: external link
includeVars: true
keepTime: true
tags:
- {{dashboard_cloud_name}}
targetBlank: true
title: "{{dashboard_cloud_name}} Dashboards"
tags:
- {{dashboard_cloud_name}}
templating:
- name: undercloud_disk
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*undercloud*.disk-*"
refresh: true
type: query
- name: controller_disk
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*controller*.disk-*"
refresh: true
type: query
- name: compute_disk
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*compute*.disk-*"
refresh: true
type: query
- name: cephstorage_disk
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*cephstorage*.disk-*"
refresh: true
type: query
- name: objectstorage_disk
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*objectstorage*.disk-*"
refresh: true
type: query
- name: blockstorage_disk
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*blockstorage*.disk-*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} IO Time
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) IO Time
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} - ${{group}}_disk IO Time
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(scale({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_io_time.io_time, 0.1), 'disk-', ''), 2)
yaxes:
- format: percent
- format: short
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} Disk iops
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Disk iops
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} - ${{group}}_disk iops
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: /.*write/
transform: negative-Y
targets:
- target: aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_ops.read, 'disk-', ''), 2, 4)
- target: aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_ops.write, 'disk-', ''), 2, 4)
yaxes:
- format: iops
- format: short
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} Disk Throughput
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Disk Throughput
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} - ${{group}}_disk Throughput
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: /.*write/
transform: negative-Y
targets:
- target: aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_octets.read, 'disk-', ''), 2, 4)
- target: aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_disk.disk_octets.write, 'disk-', ''), 2, 4)
yaxes:
- format: Bps
- format: short
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}

View File

@ -1,355 +0,0 @@
{% set vars = {'panel_idx': 0, 'initial': 0} %}
{% set dashboard_groups = ['undercloud', 'controller', 'blockstorage', 'objectstorage', 'cephstorage', 'compute'] %}
{
"dashboard": {
"id": null,
"title": "{{dashboard_cloud_name}} - Log",
"tags": [
"{{dashboard_cloud_name}}"
],
"style": "dark",
"timezone": "utc",
"editable": true,
"hideControls": false,
"sharedCrosshair": false,
"rows": [
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial == 0 %}
{% if vars.update({'initial': (vars.initial + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": 0,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "aliasByNode(consolidateBy(scale(aliasSub(aliasSub({{dashboard_cloud_name}}.{{host}}.tail-*.counter-*error, 'tail-', ''), 'counter-', ''), 10), 'max'), 2, 3)"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} Tail",
"tooltip": {
"shared": true,
"value_type": "individual"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"short",
"short"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} ERROR Rate in Logs",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) ERROR Rate in Logs",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial == 0 %}
{% if vars.update({'initial': (vars.initial + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": 0,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "aliasByNode(consolidateBy(scale(aliasSub(aliasSub({{dashboard_cloud_name}}.{{host}}.tail-*.counter-*warn, 'tail-', ''), 'counter-', ''), 10), 'max'), 2, 3)"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} Tail",
"tooltip": {
"shared": true,
"value_type": "individual"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"short",
"short"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} WARN Rate in Logs",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) WARN Rate in Logs",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial == 0 %}
{% if vars.update({'initial': (vars.initial + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": 0,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "aliasByNode(consolidateBy(scale(aliasSub(aliasSub({{dashboard_cloud_name}}.{{host}}.tail-*.counter-*info, 'tail-', ''), 'counter-', ''), 10), 'max'), 2, 3)"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} Tail",
"tooltip": {
"shared": true,
"value_type": "individual"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"short",
"short"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} INFO Rate in Logs",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) INFO Rate in Logs",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% if loop.last %}
}
{% endif %}
{% endfor %}
],
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"templating": {
"list": []
},
"annotations": {
"list": []
},
"schemaVersion": 8,
"version": 0,
"links": [
{
"icon": "external link",
"tags": [
"{{dashboard_cloud_name}}"
],
"type": "dashboards",
"asDropdown": true,
"title": "{{dashboard_cloud_name}} Dashboards"
}
],
"overwrite": true
}
}

View File

@ -0,0 +1,61 @@
#jinja2:lstrip_blocks: True
{% set log_types = ['error', 'warn', 'info'] %}
---
dashboard:
title: {{dashboard_cloud_name}} - Log
links:
- type: dashboards
asDropdown: true
icon: external link
includeVars: true
keepTime: true
tags:
- {{dashboard_cloud_name}}
targetBlank: true
title: "{{dashboard_cloud_name}} Dashboards"
tags:
- {{dashboard_cloud_name}}
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
{% for log_type in log_types %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} {{log_type}} Rate in Logs
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) {{log_type}} Rate in Logs
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} Tail
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(consolidateBy(scale(aliasSub(aliasSub({{dashboard_cloud_name}}.{{host}}.tail-*.counter-*{{log_type}}, 'tail-', ''), 'counter-', ''), 10), 'max'), 2, 3)
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}
{% endfor %}

View File

@ -1,185 +0,0 @@
{% set vars = {'panel_idx': 0, 'initial': 0} %}
{% set dashboard_groups = ['undercloud', 'controller', 'blockstorage', 'objectstorage', 'cephstorage', 'compute'] %}
{
"dashboard": {
"id": null,
"title": "{{dashboard_cloud_name}} - Memory",
"tags": [
"{{dashboard_cloud_name}}"
],
"style": "dark",
"timezone": "utc",
"editable": true,
"hideControls": false,
"sharedCrosshair": false,
"rows": [
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial == 0 %}
{% if vars.update({'initial': (vars.initial + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": 0,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": false,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"span": 12,
"stack": true,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias({{dashboard_cloud_name}}.{{host}}.memory.memory-slab_unrecl, 'Slab Unrecl')"
},
{
"refId": "B",
"target": "alias({{dashboard_cloud_name}}.{{host}}.memory.memory-used, 'Used')"
},
{
"refId": "C",
"target": "alias({{dashboard_cloud_name}}.{{host}}.memory.memory-buffered, 'Buffered')"
},
{
"refId": "D",
"target": "alias({{dashboard_cloud_name}}.{{host}}.memory.memory-slab_recl, 'Slab Recl')"
},
{
"refId": "E",
"target": "alias({{dashboard_cloud_name}}.{{host}}.memory.memory-cached, 'Cached')"
},
{
"refId": "F",
"target": "alias({{dashboard_cloud_name}}.{{host}}.memory.memory-free, 'Free')"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} Memory Usage",
"tooltip": {
"shared": true,
"value_type": "individual"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"bits",
"short"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} Memory Usage",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Memory Usage",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% if loop.last %}
}
{% endif %}
{% endfor %}
],
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"templating": {
"list": []
},
"annotations": {
"list": []
},
"schemaVersion": 8,
"version": 0,
"links": [
{
"icon": "external link",
"tags": [
"{{dashboard_cloud_name}}"
],
"type": "dashboards",
"asDropdown": true,
"title": "{{dashboard_cloud_name}} Dashboards"
}
],
"overwrite": true
}
}

View File

@ -0,0 +1,67 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: {{dashboard_cloud_name}} - Memory
links:
- type: dashboards
asDropdown: true
icon: external link
includeVars: true
keepTime: true
tags:
- {{dashboard_cloud_name}}
targetBlank: true
title: "{{dashboard_cloud_name}} Dashboards"
tags:
- {{dashboard_cloud_name}}
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} Memory Usage
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Memory Usage
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} Memory Usage
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- target: alias({{dashboard_cloud_name}}.{{host}}.memory.memory-slab_unrecl, 'Slab Unrecl')
- target: alias({{dashboard_cloud_name}}.{{host}}.memory.memory-used, 'Used')
- target: alias({{dashboard_cloud_name}}.{{host}}.memory.memory-buffered, 'Buffered')
- target: alias({{dashboard_cloud_name}}.{{host}}.memory.memory-slab_recl, 'Slab Recl')
- target: alias({{dashboard_cloud_name}}.{{host}}.memory.memory-cached, 'Cached')
- target: alias({{dashboard_cloud_name}}.{{host}}.memory.memory-free, 'Free')
yaxes:
- format: bits
- format: short
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}

View File

@ -1,380 +0,0 @@
{% set vars = {'panel_idx': 0, 'initial': 0, 'initial2': 0} %}
{% set dashboard_groups = ['undercloud', 'controller', 'blockstorage', 'objectstorage', 'cephstorage', 'compute'] %}
{
"dashboard": {
"id": null,
"title": "{{dashboard_cloud_name}} - Network",
"tags": [
"{{dashboard_cloud_name}}"
],
"style": "dark",
"timezone": "utc",
"editable": true,
"hideControls": false,
"sharedCrosshair": false,
"rows": [
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial == 0 %}
{% if vars.update({'initial': (vars.initial + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "RX",
"transform": "negative-Y"
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_packets.tx, 'TX')"
},
{
"refId": "B",
"target": "alias({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_packets.rx, 'RX')"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} - ${{group}}_interface pps",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"pps",
"short"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} Network pps",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Network pps",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% if loop.last %}
},
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if vars.initial2 == 0 %}
{% if vars.update({'initial2': (vars.initial2 + 1)}) %} {% endif %}
{% else %}
},
{% endif %}
{
"collapse": true,
"editable": true,
"height": "250px",
"panels": [
{% for index, host in batched_hosts %}
{
"aliasColors": {},
"bars": false,
"datasource": null,
"editable": true,
"error": false,
"fill": 1,
"grid": {
"leftLogBase": 1,
"leftMax": null,
"leftMin": null,
"rightLogBase": 1,
"rightMax": null,
"rightMin": null,
"threshold1": null,
"threshold1Color": "rgba(216, 200, 27, 0.27)",
"threshold2": null,
"threshold2Color": "rgba(234, 112, 112, 0.22)"
},
{% if vars.update({'panel_idx': (vars.panel_idx + 1)}) %} {% endif %}
"id": {{vars.panel_idx}},
"isNew": true,
"legend": {
"alignAsTable": true,
"avg": true,
"current": true,
"max": true,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "RX",
"transform": "negative-Y"
}
],
"span": 12,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"target": "alias({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_octets.tx, 'TX')"
},
{
"refId": "B",
"target": "alias({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_octets.rx, 'RX')"
}
],
"timeFrom": null,
"timeShift": null,
"title": "{{host}} - ${{group}}_interface Throughput",
"tooltip": {
"shared": true,
"value_type": "cumulative"
},
"type": "graph",
"x-axis": true,
"y-axis": true,
"y_formats": [
"Bps",
"short"
]
{% if loop.last %}
}
{% else %}
},
{% endif %}
{% endfor %}
],
{% if 'undercloud' in group %}
"title": "{{group}} Network Throughput",
{% else %}
"title": "{{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Network Throughput",
{% endif %}
"showTitle": true
{% endfor %}
{% endif %}
{% if loop.last %}
}
{% endif %}
{% endfor %}
],
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"templating": {
"list": [
{
"allFormat": "glob",
"current": {
"text": "interface-br-ctlplane",
"value": "interface-br-ctlplane"
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "undercloud_interface",
"options": [],
"query": "{{dashboard_cloud_name}}.*undercloud*.interface-*",
"refresh": true,
"type": "query"
},
{
"allFormat": "glob",
"current": {
"text": "interface-br-ex",
"value": "interface-br-ex"
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "controller_interface",
"options": [],
"query": "{{dashboard_cloud_name}}.*controller*.interface-*",
"refresh": true,
"type": "query"
},
{
"allFormat": "glob",
"current": {
"text": "interface-br-ex",
"value": "interface-br-ex"
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "compute_interface",
"options": [],
"query": "{{dashboard_cloud_name}}.*compute*.interface-*",
"refresh": true,
"type": "query"
},
{
"allFormat": "glob",
"current": {
"text": "None",
"value": "",
"isNone": true
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "cephstorage_interface",
"options": [],
"query": "{{dashboard_cloud_name}}.*cephstorage*.interface-*",
"refresh": true,
"type": "query"
},
{
"allFormat": "glob",
"current": {
"text": "None",
"value": "",
"isNone": true
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "objectstorage_interface",
"options": [],
"query": "{{dashboard_cloud_name}}.*objectstorage*.interface-*",
"refresh": true,
"type": "query"
},
{
"allFormat": "glob",
"current": {
"text": "interface-br-ex",
"value": "interface-br-ex"
},
"datasource": null,
"includeAll": false,
"multi": false,
"multiFormat": "glob",
"name": "blockstorage_interface",
"options": [],
"query": "{{dashboard_cloud_name}}.*blockstorage*.interface-*",
"refresh": true,
"type": "query"
}
]
},
"annotations": {
"list": []
},
"schemaVersion": 8,
"version": 5,
"links": [
{
"icon": "external link",
"tags": [
"{{dashboard_cloud_name}}"
],
"type": "dashboards",
"asDropdown": true,
"title": "{{dashboard_cloud_name}} Dashboards"
}
],
"overwrite": true
}
}

View File

@ -0,0 +1,129 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: {{dashboard_cloud_name}} - Network
links:
- type: dashboards
asDropdown: true
icon: external link
includeVars: true
keepTime: true
tags:
- {{dashboard_cloud_name}}
targetBlank: true
title: "{{dashboard_cloud_name}} Dashboards"
tags:
- {{dashboard_cloud_name}}
templating:
- name: undercloud_interface
query: "{{dashboard_cloud_name}}.*undercloud*.interface-*"
refresh: true
type: query
- name: controller_interface
query: "{{dashboard_cloud_name}}.*controller*.interface-*"
refresh: true
type: query
- name: compute_interface
query: "{{dashboard_cloud_name}}.*compute*.interface-*"
refresh: true
type: query
- name: cephstorage_interface
query: "{{dashboard_cloud_name}}.*cephstorage*.interface-*"
refresh: true
type: query
- name: objectstorage_interface
query: "{{dashboard_cloud_name}}.*objectstorage*.interface-*"
refresh: true
type: query
- name: blockstorage_interface
query: "{{dashboard_cloud_name}}.*blockstorage*.interface-*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} Network pps
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Network pps
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} - ${{group}}_interface pps
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: RX
transform: negative-Y
targets:
- target: alias({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_packets.tx, 'TX')
- target: alias({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_packets.rx, 'RX')
yaxes:
- format: pps
- format: short
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} Network Throughput
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Network Throughput
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} - ${{group}}_interface Throughput
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: RX
transform: negative-Y
targets:
- target: alias({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_octets.tx, 'TX')
- target: alias({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_octets.rx, 'RX')
yaxes:
- format: Bps
- format: short
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}

View File

@ -0,0 +1,143 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: {{dashboard_cloud_name}} - Networks - All
links:
- type: dashboards
asDropdown: true
icon: external link
includeVars: true
keepTime: true
tags:
- {{dashboard_cloud_name}}
targetBlank: true
title: "{{dashboard_cloud_name}} Dashboards"
tags:
- {{dashboard_cloud_name}}
templating:
- name: undercloud_interface
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*undercloud*.interface-*"
refresh: true
type: query
- name: controller_interface
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*controller*.interface-*"
refresh: true
type: query
- name: compute_interface
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*compute*.interface-*"
refresh: true
type: query
- name: cephstorage_interface
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*cephstorage*.interface-*"
refresh: true
type: query
- name: objectstorage_interface
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*objectstorage*.interface-*"
refresh: true
type: query
- name: blockstorage_interface
includeAll: true
multi: true
query: "{{dashboard_cloud_name}}.*blockstorage*.interface-*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} Network pps
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Network pps
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} - ${{group}}_interface pps
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: /.*rx/
transform: negative-Y
targets:
- target: aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_packets.tx, 'interface-', ''), 2, 4)
- target: aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_packets.rx, 'interface-', ''), 2, 4)
yaxes:
- format: pps
- format: short
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}
{% for group in dashboard_groups %}
{% if group in groups %}
{% for batched_hosts in groups[group]|hosts_to_dictionary|dictsort|batch(dashboards_batch) %}
{% if 'undercloud' in group %}
- title: {{group}} Network Throughput
{% else %}
- title: {{group}} ({{batched_hosts[0][0]}} - {{batched_hosts[-1][0]}}) Network Throughput
{% endif %}
collapse: true
height: 250px
showTitle: true
panels:
{% for index, host in batched_hosts %}
- title: {{host}} - ${{group}}_interface Throughput
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: /.*rx/
transform: negative-Y
targets:
- target: aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_octets.tx, 'interface-', ''), 2, 4)
- target: aliasByNode(aliasSub({{dashboard_cloud_name}}.{{host}}.${{group}}_interface.if_octets.rx, 'interface-', ''), 2, 4)
yaxes:
- format: Bps
- format: short
{% endfor %}
{% endfor %}
{% endif %}
{% endfor %}

View File

@ -0,0 +1,279 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: Cloud Gnocchi Performance
templating:
- name: Cloud
query: "*"
refresh: true
type: query
- name: OSD
includeAll: true
multi: true
query: "$Cloud.overcloud-controller-0.collectd-ceph-storage-osd-*"
refresh: true
type: query
- name: Pool
includeAll: true
multi: true
query: "$Cloud.overcloud-controller-0.collectd-ceph-storage-pool-*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% include 'gnocchi_performance/backlog.yaml.j2' %}
{% include 'gnocchi_performance/api_latency.yaml.j2' %}
{% set pp_panel = {
'title': 'Gnocchi',
'node': 'overcloud-controller-*',
'processes': [
'gnocchi-metricd-master',
'gnocchi-metricd-scheduler',
'gnocchi-metricd-processing',
'gnocchi-metricd-reporting',
'gnocchi-metricd-janitor',
'gnocchi-statsd',
'gnocchi_wsgi',
],
}
%}
{% include 'gnocchi_performance/per_process_panel.yaml.j2' %}
{% set pp_panel = {
'title': 'Ceilometer (Controllers)',
'node': 'overcloud-controller-*',
'processes': [
'ceilometer-agent-notification',
'ceilometer-collector',
'ceilometer-polling',
'ceilometer_wsgi',
],
}
%}
{% include 'gnocchi_performance/per_process_panel.yaml.j2' %}
{% set pp_panel = {
'title': 'Ceilometer (Computes)',
'node': 'overcloud-compute-*',
'processes': ['ceilometer-polling',],
}
%}
{% include 'gnocchi_performance/per_process_panel.yaml.j2' %}
{% set pp_panel = {
'title': 'Controller',
'node': 'overcloud-controller-*',
'processes': ['httpd', 'mongod', 'mysqld', 'rabbitmq', 'redis-server',],
}
%}
{% include 'gnocchi_performance/per_process_panel.yaml.j2' %}
{% set pp_panel = {
'title': 'CephStorage',
'node': 'overcloud-c[oe][np]*',
'processes': ['ceph-mon', 'ceph-osd',],
}
%}
{% include 'gnocchi_performance/per_process_panel.yaml.j2' %}
{% set pp_panel = {
'title': 'Swift (Controller)',
'node': 'overcloud-controller-*',
'processes': [
'swift-account-auditor',
'swift-account-reaper',
'swift-account-replicator',
'swift-account-server',
'swift-container-auditor',
'swift-container-replicator',
'swift-container-server',
'swift-container-updater',
'swift-object-auditor',
'swift-object-expirer',
'swift-object-replicator',
'swift-object-server',
'swift-object-updater',
'swift-proxy-server',
],
}
%}
{% include 'gnocchi_performance/per_process_panel.yaml.j2' %}
{% set pp_panel = {
'title': 'Swift (ObjectStorage)',
'node': 'overcloud-objectstorage-*',
'processes': [
'swift-account-auditor',
'swift-account-reaper',
'swift-account-replicator',
'swift-account-server',
'swift-container-auditor',
'swift-container-replicator',
'swift-container-server',
'swift-container-updater',
'swift-object-auditor',
'swift-object-expirer',
'swift-object-replicator',
'swift-object-server',
'swift-object-updater',
],
}
%}
{% include 'gnocchi_performance/per_process_panel.yaml.j2' %}
{% set partial_panel = {'node': 'overcloud-controller-*'} %}
{% include 'partials/apache_metrics.yaml.j2' %}
{% set partial_panel = {'node': 'overcloud-controller-0'} %}
{% include 'partials/rabbitmq_metrics.yaml.j2' %}
{% set partial_panel = {'node': 'overcloud-controller-0'} %}
{% include 'partials/cephstorage_python_plugin_metrics.yaml.j2' %}
{% set partial_panel = {'node': 'overcloud-controller-0'} %}
{% include 'partials/swift_stat_metrics.yaml.j2' %}
{% set log_panel = {
'title': 'Gnocchi',
'node': 'overcloud-controller-*',
'tail': ['gnocchi',],
}
%}
{% include 'gnocchi_performance/logs.yaml.j2' %}
{% set log_panel = {
'title': 'Ceilometer (Controller)',
'node': 'overcloud-controller-*',
'tail': ['ceilometer',],
}
%}
{% include 'gnocchi_performance/logs.yaml.j2' %}
{% set log_panel = {
'title': 'Ceilometer (Compute)',
'node': 'overcloud-compute-*',
'tail': ['ceilometer',],
}
%}
{% include 'gnocchi_performance/logs.yaml.j2' %}
- title: Swift (Controller) Logs
collapse: true
height: 250px
showTitle: true
panels:
- title: Swift Error Logs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(consolidateBy(scale(aliasSub(aliasSub(aliasSub($Cloud.overcloud-controller-*.tail-swift.counter-*error, 'overcloud-', ''), 'tail-', ''), 'counter-', ''), 10), 'max'), '-error', ''), 1, 3)
- title: Swift Warn Logs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(consolidateBy(scale(aliasSub(aliasSub(aliasSub($Cloud.overcloud-controller-*.tail-swift.counter-*warn, 'overcloud-', ''), 'tail-', ''), 'counter-', ''), 10), 'max'), '-warn', ''), 1, 3)
- title: Swift Info Logs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(consolidateBy(scale(aliasSub(aliasSub(aliasSub($Cloud.overcloud-controller-*.tail-swift.counter-*info, 'overcloud-', ''), 'tail-', ''), 'counter-', ''), 10), 'max'), '-info', ''), 1, 3)
- title: Swift (ObjectStorage) Logs
collapse: true
height: 250px
showTitle: true
panels:
- title: Swift Error Logs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(consolidateBy(scale(aliasSub(aliasSub(aliasSub($Cloud.overcloud-objectstorage-*.tail-swift.counter-*error, 'overcloud-', ''), 'tail-', ''), 'counter-', ''), 10), 'max'), '-error', ''), 1, 3)
- title: Swift Warn Logs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(consolidateBy(scale(aliasSub(aliasSub(aliasSub($Cloud.overcloud-objectstorage-*.tail-swift.counter-*warn, 'overcloud-', ''), 'tail-', ''), 'counter-', ''), 10), 'max'), '-warn', ''), 1, 3)
- title: Swift Info Logs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(consolidateBy(scale(aliasSub(aliasSub(aliasSub($Cloud.overcloud-objectstorage-*.tail-swift.counter-*info, 'overcloud-', ''), 'tail-', ''), 'counter-', ''), 10), 'max'), '-info', ''), 1, 3)
{% set log_panel = {
'title': 'Controller',
'node': 'overcloud-controller-*',
'tail': ['ceph', 'mysqld', 'rabbitmq',],
}
%}
{% include 'gnocchi_performance/logs.yaml.j2' %}

View File

@ -0,0 +1,104 @@
- title: Gnocchi API Latency
collapse: true
height: 250px
showTitle: true
panels:
- title: Gnocchi API Patch Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-patch-max, 0.000001), 'overcloud-', ''), 'latency-patch-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-patch-99_00, 0.000001), 'overcloud-', ''), 'latency-patch-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-patch-avg, 0.000001), 'overcloud-', ''), 'latency-patch-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-patch-min, 0.000001), 'overcloud-', ''), 'latency-patch-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.counter-patch, 10), 'overcloud-', ''), 'counter-patch', 'Count'), 1, 3)
yaxes:
- format: s
label: Latency
- format: short
label: Count
- title: Gnocchi API Post Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-post-max, 0.000001), 'overcloud-', ''), 'latency-post-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-post-99_00, 0.000001), 'overcloud-', ''), 'latency-post-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-post-avg, 0.000001), 'overcloud-', ''), 'latency-post-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-post-min, 0.000001), 'overcloud-', ''), 'latency-post-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.counter-post, 10), 'overcloud-', ''), 'counter-post', 'Count'), 1, 3)
yaxes:
- format: s
label: Latency
- format: short
label: Count
- title: Gnocchi API Get Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
seriesOverrides:
- alias: "/.*Count.*/"
lines: true
points: false
yaxis: 2
targets:
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-get-max, 0.000001), 'overcloud-', ''), 'latency-get-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-get-99_00, 0.000001), 'overcloud-', ''), 'latency-get-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-get-avg, 0.000001), 'overcloud-', ''), 'latency-get-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.latency-get-min, 0.000001), 'overcloud-', ''), 'latency-get-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub(scale($Cloud.overcloud-controller-*.tail-gnocchi-api.counter-get, 10), 'overcloud-', ''), 'counter-get', 'Count'), 1, 3)
yaxes:
- format: s
label: Latency
- format: short
label: Count

View File

@ -0,0 +1,107 @@
- title: Gnocchi Backlog
height: 250px
showTitle: true
panels:
- title: Measures/Metrics Backlog
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'connected'
span: 6
steppedLine: true
targets:
- target: aliasByNode(aliasSub($Cloud.overcloud-controller-0.gnocchi_status.gauge-*, 'gauge-', ''), 3)
- title: Backlog vs Instance Count
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'connected'
seriesOverrides:
- alias: measures
steppedLine: true
yaxis: 2
- alias: metrics
steppedLine: true
yaxis: 2
span: 6
targets:
- target: aliasByNode(aliasSub($Cloud.overcloud-controller-0.gnocchi_status.gauge-*, 'gauge-', ''), 3)
- target: alias(sumSeries(keepLastValue($Cloud.overcloud-compute-*.processes-qemu-kvm.ps_count.processes, 100)), 'Instance Count')
- title: Backlog vs Metricd CPU Usage
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'connected'
seriesOverrides:
- alias: measures
steppedLine: true
yaxis: 2
- alias: metrics
steppedLine: true
yaxis: 2
span: 6
targets:
- target: aliasByNode(aliasSub($Cloud.overcloud-controller-0.gnocchi_status.gauge-*, 'gauge-', ''), 3)
- target: alias(sumSeries(scale($Cloud.overcloud-controller-0.processes-gnocchi-metricd-processing.ps_cputime.*, 0.0001)), 'Con0 Metricd Processing CPU %')
- target: alias(sumSeries(scale($Cloud.overcloud-controller-1.processes-gnocchi-metricd-processing.ps_cputime.*, 0.0001)), 'Con1 Metricd Processing CPU %')
- target: alias(sumSeries(scale($Cloud.overcloud-controller-2.processes-gnocchi-metricd-processing.ps_cputime.*, 0.0001)), 'Con2 Metricd Processing CPU %')
yaxes:
- format: percent
- format: short
- title: Backlog vs Metricd RSS Memory
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'connected'
seriesOverrides:
- alias: measures
steppedLine: true
yaxis: 2
- alias: metrics
steppedLine: true
yaxis: 2
span: 6
targets:
- target: aliasByNode(aliasSub($Cloud.overcloud-controller-0.gnocchi_status.gauge-*, 'gauge-', ''), 3)
- target: alias(sumSeries($Cloud.overcloud-controller-0.processes-gnocchi-metricd-*.ps_rss), 'Con0 Metricd RSS')
- target: alias(sumSeries($Cloud.overcloud-controller-1.processes-gnocchi-metricd-*.ps_rss), 'Con1 Metricd RSS')
- target: alias(sumSeries($Cloud.overcloud-controller-2.processes-gnocchi-metricd-*.ps_rss), 'Con2 Metricd RSS')
yaxes:
- format: bits
- format: short

View File

@ -0,0 +1,59 @@
- title: {{log_panel.title}} Logs
collapse: true
height: 250px
showTitle: true
panels:
- title: {{log_panel.title}} Error Logs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
{% for tail in log_panel.tail %}
- target: aliasByNode(consolidateBy(scale(aliasSub(aliasSub(aliasSub($Cloud.{{log_panel.node}}.tail-{{tail}}*.counter-*error, 'overcloud-', ''), 'tail-', ''), 'counter-', ''), 10), 'max'), 1, 2)
{% endfor %}
- title: {{log_panel.title}} Warn Logs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
{% for tail in log_panel.tail %}
- target: aliasByNode(consolidateBy(scale(aliasSub(aliasSub(aliasSub($Cloud.{{log_panel.node}}.tail-{{tail}}*.counter-*warn, 'overcloud-', ''), 'tail-', ''), 'counter-', ''), 10), 'max'), 1, 2)
{% endfor %}
- title: {{log_panel.title}} Info Logs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
{% for tail in log_panel.tail %}
- target: aliasByNode(consolidateBy(scale(aliasSub(aliasSub(aliasSub($Cloud.{{log_panel.node}}.tail-{{tail}}*.counter-*info, 'overcloud-', ''), 'tail-', ''), 'counter-', ''), 10), 'max'), 1, 2)
{% endfor %}

View File

@ -0,0 +1,131 @@
- title: {{pp_panel.title}} Process Metrics
collapse: true
height: 250px
showTitle: true
panels:
- title: {{pp_panel.title}} Process Counts (Sum Across Controllers)
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
{% for process in pp_panel.processes %}
- target: alias(sumSeries(keepLastValue($Cloud.{{pp_panel.node}}.processes-{{process}}.ps_count.processes, 100)), '{{process}}')
{% endfor %}
- title: {{pp_panel.title}} Thread Counts (Sum Across Controllers)
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
{% for process in pp_panel.processes %}
- target: alias(sumSeries(keepLastValue($Cloud.{{pp_panel.node}}.processes-{{process}}.ps_count.threads, 100)), '{{process}}')
{% endfor %}
- title: {{pp_panel.title}} System CPU Usage (Sum Across Controllers)
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
{% for process in pp_panel.processes %}
- target: alias(sumSeries(scale($Cloud.{{pp_panel.node}}.processes-{{process}}.ps_cputime.syst, 0.0001)), '{{process}}')
{% endfor %}
yaxes:
- format: percent
- format: short
- title: {{pp_panel.title}} User CPU Usage (Sum Across Controllers)
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
{% for process in pp_panel.processes %}
- target: alias(sumSeries(scale($Cloud.{{pp_panel.node}}.processes-{{process}}.ps_cputime.user, 0.0001)), '{{process}}')
{% endfor %}
yaxes:
- format: percent
- format: short
- title: {{pp_panel.title}} RSS Memory (Sum Across Controllers)
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
{% for process in pp_panel.processes %}
- target: alias(sumSeries($Cloud.{{pp_panel.node}}.processes-{{process}}.ps_rss), '{{process}}')
{% endfor %}
yaxes:
- format: bits
- format: short
- title: {{pp_panel.title}} Virtual Memory (Sum Across Controllers)
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
{% for process in pp_panel.processes %}
- target: alias(sumSeries($Cloud.{{pp_panel.node}}.processes-{{process}}.ps_vm), '{{process}}')
{% endfor %}
yaxes:
- format: bits
- format: short

View File

@ -0,0 +1,69 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: {{item.process_list_name}} General System Performance
templating:
- name: Cloud
query: "*"
refresh: true
type: query
- name: Node
query: $Cloud.*
refresh: true
type: query
- name: Disk
query: $Cloud.$Node.disk-*
refresh: true
type: query
- name: Interface
query: $Cloud.$Node.interface-*
refresh: true
type: query
- name: cpus0
hide: 1
includeAll: true
multi: true
query: $Cloud.$Node.cpu-[0-9]
refresh: true
type: query
- name: cpus00
hide: 1
includeAll: true
multi: true
query: $Cloud.$Node.cpu-[1-9][0-9]
refresh: true
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% include 'partials/cpu_all.yaml' %}
{% include 'partials/cpu_cores.yaml' %}
{% include 'partials/memory.yaml' %}
{% include 'partials/disk.yaml' %}
{% include 'partials/df.yaml' %}
{% include 'partials/network.yaml' %}
{% include 'partials/turbostat.yaml' %}
{% include 'partials/numa.yaml' %}
{% include 'partials/irq.yaml' %}
{% include 'partials/load.yaml' %}
{% include 'partials/processes.yaml' %}
{% set per_process_row_title_prefix = 'Graphite' %}
{% include 'partials/per_process_rows.yaml.j2' %}
{% include 'partials/carbon.yaml' %}
{% include 'partials/tail.yaml' %}

View File

@ -0,0 +1,63 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: {{item.process_list_name}} General System Performance
templating:
- name: Cloud
query: "*"
refresh: true
type: query
- name: Node
query: $Cloud.*
refresh: true
type: query
- name: Disk
query: $Cloud.$Node.disk-*
refresh: true
type: query
- name: Interface
query: $Cloud.$Node.interface-*
refresh: true
type: query
- name: cpus0
hide: 1
includeAll: true
multi: true
query: $Cloud.$Node.cpu-[0-9]
refresh: true
type: query
- name: cpus00
hide: 1
includeAll: true
multi: true
query: $Cloud.$Node.cpu-[1-9][0-9]
refresh: true
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% include 'partials/cpu_all.yaml' %}
{% include 'partials/cpu_cores.yaml' %}
{% include 'partials/memory.yaml' %}
{% include 'partials/disk.yaml' %}
{% include 'partials/df.yaml' %}
{% include 'partials/network.yaml' %}
{% include 'partials/irq.yaml' %}
{% include 'partials/load.yaml' %}
{% include 'partials/processes.yaml' %}
{% set per_process_row_title_prefix = 'Guest' %}
{% include 'partials/per_process_rows.yaml.j2' %}
{% include 'partials/tail.yaml' %}

View File

@ -0,0 +1,31 @@
#jinja2:lstrip_blocks: True
---
dashboard:
title: IOStat
templating:
- name: Cloud
query: "*"
refresh: true
type: query
# - name: NodeType
# options:
# - undercloud
# - controller
# - compute
# - cephstorage
# - objectstorage
# - blockstorage
# - "*"
# type: custom
- name: Node
query: "$Cloud.*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% set partial_panel = {'collapse': 'false'} %}
{% include 'partials/iostat.yaml.j2' %}

View File

@ -0,0 +1,161 @@
#jinja2:lstrip_blocks: True
{% set apache_groups = ['undercloud', 'controller', '*'] %}
{% set cephmon_groups = ['controller', '*'] %}
{% set gnocchi_groups = ['controller', '*'] %}
{% set ironic_groups = ['undercloud'] %}
{% set mariadb_groups = ['undercloud', 'controller', '*'] %}
{% set odl_groups = ['controller', '*'] %}
{% set ovsagent_groups = ['controller', 'compute', '*'] %}
{% set rabbitmq_groups = ['undercloud', 'controller', '*'] %}
{% set swift_stat_groups = ['controller', '*'] %}
---
dashboard:
title: {{item.process_list_name}} General System Performance
links:
- title: Openstack General Dashboards
type: dashboards
asDropdown: true
includeVars: true
keepTime: true
icon: cloud
tags:
- OSP
tags:
- OSP
templating:
- name: Cloud
query: "*"
refresh: true
type: query
# - name: NodeType
# current:
# text: "{{item.template_node_type}}"
# options:
# - undercloud
# - controller
# - networker
# - compute
# - cephstorage
# - objectstorage
# - blockstorage
# - "*"
# type: custom
- name: Node
query: $Cloud.*
# query: $Cloud.*$NodeType*
refresh: true
type: query
- name: Disk
query: $Cloud.$Node.disk-*
refresh: true
type: query
- name: Interface
query: $Cloud.$Node.interface-*
refresh: true
type: query
- name: OSD
includeAll: true
multi: true
query: "$Cloud.$Node.collectd-ceph-storage-osd-*"
refresh: true
type: query
- name: Pool
includeAll: true
multi: true
query: "$Cloud.$Node.collectd-ceph-storage-pool-*"
refresh: true
type: query
- name: cpus0
hide: 1
includeAll: true
multi: true
query: $Cloud.$Node.cpu-[0-9]
refresh: true
type: query
- name: cpus00
hide: 1
includeAll: true
multi: true
query: $Cloud.$Node.cpu-[1-9][0-9]
refresh: true
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% include 'partials/cpu_all.yaml' %}
{% include 'partials/cpu_cores.yaml' %}
{% include 'partials/memory.yaml' %}
{% include 'partials/disk.yaml' %}
{% include 'partials/df.yaml' %}
{% set partial_panel = {'collapse': 'true'} %}
{% include 'partials/iostat.yaml.j2' %}
{% include 'partials/network.yaml' %}
{% include 'partials/turbostat.yaml' %}
{% include 'partials/numa.yaml' %}
{% include 'partials/irq.yaml' %}
{% include 'partials/load.yaml' %}
{% include 'partials/processes.yaml' %}
{% set per_process_row_title_prefix = 'OSP' %}
{% include 'partials/per_process_rows.yaml.j2' %}
{% if item.template_node_type in apache_groups %}
{% set partial_panel = {'node': '$Node'} %}
{% include 'partials/apache_metrics.yaml.j2' %}
{% endif %}
{% if item.template_node_type in cephmon_groups %}
{% set partial_panel = {'node': '$Node'} %}
{% include 'partials/cephstorage_python_plugin_metrics.yaml.j2' %}
{% include 'partials/ceph_mon.yaml' %}
{% endif %}
{% if item.template_node_type in gnocchi_groups %}
{% set partial_panel = {'collapse': 'true'} %}
{% include 'partials/gnocchi_backlog.yaml.j2' %}
{% endif %}
{% if item.template_node_type in mariadb_groups %}
{% include 'partials/mariadb.yaml' %}
{% include 'partials/mysql_innodb.yaml' %}
{% endif %}
{% if item.template_node_type in rabbitmq_groups %}
{% set partial_panel = {'node': '$Node'} %}
{% include 'partials/rabbitmq_metrics.yaml.j2' %}
{% endif %}
{% if item.template_node_type in swift_stat_groups %}
{#% if item.template_node_type in swift_stat_groups %#}
{% include 'partials/swift_stat_metrics.yaml.j2' %}
{% endif %}
{% if item.template_node_type in ironic_groups %}
{% include 'partials/ironic_metrics.yaml' %}
{% endif %}
{% if item.template_node_type in odl_groups %}
{% include 'partials/opendaylight_metrics.yaml' %}
{% endif %}
{% if item.template_node_type in ovsagent_groups %}
{% include 'partials/neutron_resources.yaml' %}
{% endif %}
{% include 'partials/tail.yaml' %}

View File

@ -0,0 +1,91 @@
- title: Apache Metrics
collapse: true
height: 200px
showTitle: true
panels:
- title: Apache Bytes
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.apache-status.apache_bytes, 'apache_', ''), 'overcloud-', ''), 1, 3)
yaxes:
- format: bytes
- format: short
- title: Apache Requests
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.apache-status.apache_requests, 'apache_', ''), 'overcloud-', ''), 1, 3)
yaxes:
- format: ops
- format: short
- title: Apache Connections/Workers
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.apache-status.apache_connections, 'apache_', ''), 'overcloud-', ''), 1, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.apache-status.apache_idle_workers, 'apache_', ''), 'overcloud-', ''), 1, 3)
yaxes:
- format: ops
- format: short
- title: Apache Scoreboard (All Controllers Summed)
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- target: aliasByNode(aliasSub(sumSeries($Cloud.{{partial_panel.node}}.apache-status.apache_scoreboard-closing), 'apache_scoreboard-', ''), 3)
- target: aliasByNode(aliasSub(sumSeries($Cloud.{{partial_panel.node}}.apache-status.apache_scoreboard-dnslookup), 'apache_scoreboard-', ''), 3)
- target: aliasByNode(aliasSub(sumSeries($Cloud.{{partial_panel.node}}.apache-status.apache_scoreboard-finishing), 'apache_scoreboard-', ''), 3)
- target: aliasByNode(aliasSub(sumSeries($Cloud.{{partial_panel.node}}.apache-status.apache_scoreboard-idle_cleanup), 'apache_scoreboard-', ''), 3)
- target: aliasByNode(aliasSub(sumSeries($Cloud.{{partial_panel.node}}.apache-status.apache_scoreboard-keepalive), 'apache_scoreboard-', ''), 3)
- target: aliasByNode(aliasSub(sumSeries($Cloud.{{partial_panel.node}}.apache-status.apache_scoreboard-logging), 'apache_scoreboard-', ''), 3)
- target: aliasByNode(aliasSub(sumSeries($Cloud.{{partial_panel.node}}.apache-status.apache_scoreboard-open), 'apache_scoreboard-', ''), 3)
- target: aliasByNode(aliasSub(sumSeries($Cloud.{{partial_panel.node}}.apache-status.apache_scoreboard-reading), 'apache_scoreboard-', ''), 3)
- target: aliasByNode(aliasSub(sumSeries($Cloud.{{partial_panel.node}}.apache-status.apache_scoreboard-sending), 'apache_scoreboard-', ''), 3)
- target: aliasByNode(aliasSub(sumSeries($Cloud.{{partial_panel.node}}.apache-status.apache_scoreboard-starting), 'apache_scoreboard-', ''), 3)
- target: aliasByNode(aliasSub(sumSeries($Cloud.{{partial_panel.node}}.apache-status.apache_scoreboard-waiting), 'apache_scoreboard-', ''), 3)

View File

@ -0,0 +1,105 @@
- title: Carbon Cache Metrics
collapse: true
height: 200px
showTitle: true
panels:
- title: Metrics, Committed Points, Update Operations
type: graph
decimals: 1
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(carbon.agents.*.metricsReceived, '[a-zA-Z0-9_]+-', ''), 2, 3)
- target: aliasByNode(aliasSub(carbon.agents.*.committedPoints, '[a-zA-Z0-9_]+-', ''), 2, 3)
- target: aliasByNode(aliasSub(carbon.agents.*.updateOperations, '[a-zA-Z0-9_]+-', ''), 2, 3)
- title: Average Update Time
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(carbon.agents.*.avgUpdateTime, '[a-zA-Z0-9_]+-', ''), 2, 3)
- title: Creates
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(carbon.agents.*.creates, '[a-zA-Z0-9_]+-', ''), 2, 3)
- title: Cache
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(carbon.agents.*.cache.*, '[a-zA-Z0-9_]+-', ''), 2, 4)
- title: Blacklist/Whitelist
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(carbon.agents.*.blacklistMatches, '[a-zA-Z0-9_]+-', ''), 2, 3)
- target: aliasByNode(aliasSub(carbon.agents.*.whitelistRejects, '[a-zA-Z0-9_]+-', ''), 2, 3)
- title: Errors
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(carbon.agents.*.errors, '[a-zA-Z0-9_]+-', ''), 2, 3)

View File

@ -0,0 +1,390 @@
- title: Ceph Mon
collapse: true
height: 200px
showTitle: true
panels:
- title: Mon Count/Quorum/Elections
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numMon, 'Count')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numMonQuorum, 'Quorum')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_rate-Mon_numElections, 'Elections')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_rate-Mon_electionCall, 'Call')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_rate-Mon_electionLose, 'Lose')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_rate-Mon_electionWin, 'Win')
- title: Mon Sessions
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Mon_numSessions, 'Open')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_rate-Mon_sessionAdd, 'Add')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_rate-Mon_sessionRm, 'RM')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_rate-Mon_sessionTrim, 'Trim')
- title: OSDs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numOsd, 'Total OSDs')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numOsdUp, 'OSDs Up')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numOsdIn, 'OSDs In')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_osdEpoch, 'Epoch')
- title: MDS
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numMdsUp, 'Up')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numMdsIn, 'In')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numMdsFailed, 'Failed')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_mdsEpoch, 'Epoch')
- title: Objects
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numObject, 'Total Objects')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numObjectDegraded, 'Degraded Objects')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numObjectMisplaced, 'Misplaced Objects')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numObjectUnfound, 'Unfound Objects')
- title: Placement Groups
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numPg, 'Total PGs')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numPgActive, 'PGs Active')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numPgActiveClean, 'PGs Active-Clean')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numPgPeering, 'PGs Peering')
- title: Pools
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numPool, 'Pools')
- title: OSD Bytes
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Bytes Available
stack: A
- alias: Bytes Used
stack: A
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_osdBytes, 'Total Bytes')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_osdBytesUsed, 'Bytes Used')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_osdBytesAvail, 'Bytes Available')
yaxes:
- format: bytes
- format: short
- title: Size of All Objects
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Cluster_numBytes, 'Size of all objects')
yaxes:
- format: bytes
- format: short
- title: LevelDB Queue/Operations
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Compact Queue Length
steppedLine: true
yaxis: 2
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-Leveldb_leveldbCompactQueueLen, 'Compact Queue Length')
- target: aliasByNode(aliasSub($Cloud.$Node.ceph-mon_*.ceph_rate-Leveldb_*, 'ceph_rate-Leveldb_leveldb', ''), 3)
yaxes:
- format: short
- format: short
label: Queue Length
- title: LevelDB Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
pointradius: 2
points: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.ceph-mon_*.ceph_latency-Leveldb_*, 'ceph_latency-Leveldb_leveldb', ''), 3)
yaxes:
- format: s
- format: short
- title: Finisher Monstore
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 2
seriesOverrides:
- alias: Queue Length
lines: true
yaxis: 2
- alias: Complete Latency
points: true
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_latency-FinisherMonstore_completeLatency, 'Complete Latency')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-FinisherMonstore_queueLen, 'Queue Length')
yaxes:
- format: s
- format: short
label: Queue Length
- title: Paxos Rate
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.ceph-mon_*.ceph_rate-Paxos_*, 'ceph_rate-Paxos_', ''), 3)
- title: Paxos Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 1
points: true
span: 6
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.ceph-mon_*.ceph_latency-Paxos_*, 'ceph_latency-Paxos_', ''), 3)
yaxes:
- format: µs
- format: short
- title: Throttle Mon Client
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Bytes Max
yaxis: 2
- alias: Bytes Current
yaxis: 2
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-ThrottleMonClientBytes_max, 'Bytes Max')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-ThrottleMonClientBytes_val, 'Bytes Current')
- target: aliasByNode(aliasSub($Cloud.$Node.ceph-mon_*.ceph_rate-ThrottleMonClientBytes_*, 'ceph_rate-ThrottleMonClientBytes_', ''), 3)
yaxes:
- format: Bps
- format: short
- title: Throttle Mon Daemon
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Bytes Max
yaxis: 2
- alias: Bytes Current
yaxis: 2
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-ThrottleMonDaemonBytes_max, 'Bytes Max')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-ThrottleMonDaemonBytes_val, 'Bytes Current')
- target: aliasByNode(aliasSub($Cloud.$Node.ceph-mon_*.ceph_rate-ThrottleMonDaemonBytes_*, 'ceph_rate-ThrottleMonDaemonBytes_', ''), 3)
yaxes:
- format: Bps
- format: bytes
- title: Throttle Msgr Dispatch Throttler Mon
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Bytes Max
yaxis: 2
- alias: Bytes Current
yaxis: 2
span: 6
targets:
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-ThrottleMsgrDispatchThrottlerMon_max, 'Bytes Max')
- target: alias($Cloud.$Node.ceph-mon_*.ceph_bytes-ThrottleMsgrDispatchThrottlerMon_val, 'Bytes Current')
- target: aliasByNode(aliasSub($Cloud.$Node.ceph-mon_*.ceph_rate-ThrottleMsgrDispatchThrottlerMon_*, 'ceph_rate-ThrottleMsgrDispatchThrottlerMon_', ''), 3)
yaxes:
- format: ops
- format: bytes

View File

@ -0,0 +1,272 @@
- title: Ceph Storage Python Plugins
collapse: true
height: 200px
showTitle: true
panels:
- title: Mons & Pool Count
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: false
show: true
total: false
values: true
nullPointMode: 'null'
span: 4
targets:
- target: aliasByNode(aliasSub($Cloud.{{partial_panel.node}}.collectd-ceph-storage-mon.*, 'gauge-', ''), 3)
- target: alias($Cloud.{{partial_panel.node}}.collectd-ceph-storage-pool.gauge-number, 'Pools')
- title: OSDs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: false
show: true
total: false
values: true
nullPointMode: 'null'
span: 4
targets:
- target: aliasByNode(aliasSub($Cloud.{{partial_panel.node}}.collectd-ceph-storage-osd.*, 'gauge-', ''), 3)
- title: PGs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: false
show: true
total: false
values: true
nullPointMode: 'null'
span: 4
targets:
- target: aliasByNode(aliasSub($Cloud.{{partial_panel.node}}.collectd-ceph-storage-pg.*, 'gauge-', ''), 3)
- title: Cluster Space
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.{{partial_panel.node}}.collectd-ceph-storage-cluster.gauge-total_*, 'gauge-', ''), 3)
yaxes:
- format: bits
- format: short
- title: Cluster Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias($Cloud.{{partial_panel.node}}.collectd-ceph-storage-cluster.gauge-min_latency, 'Min')
- target: alias($Cloud.{{partial_panel.node}}.collectd-ceph-storage-cluster.gauge-avg_latency, 'Avg')
- target: alias($Cloud.{{partial_panel.node}}.collectd-ceph-storage-cluster.gauge-max_latency, 'Max')
- target: alias($Cloud.{{partial_panel.node}}.collectd-ceph-storage-cluster.gauge-stddev_latency, 'stddev')
yaxes:
- format: ms
- format: short
- title: Pool Objects
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.{{partial_panel.node}}.$Pool.gauge-objects, 'collectd-ceph-storage-pool-', ''), 2)
- title: Pool iops
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$Pool.gauge-read_op_per_sec, 'collectd-ceph-storage-pool-', ''), 'gauge-', ''), 2, 3)
- target: aliasByNode(scale(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$Pool.gauge-write_op_per_sec, 'collectd-ceph-storage-pool-', ''), 'gauge-', ''), -1), 2, 3)
yaxes:
- format: iops
- format: short
- title: Pool Throughput
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$Pool.gauge-read_bytes_sec, 'collectd-ceph-storage-pool-', ''), 'gauge-', ''), 2, 3)
- target: aliasByNode(scale(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$Pool.gauge-write_bytes_sec,'collectd-ceph-storage-pool-', ''), 'gauge-', ''), -1), 2, 3)
yaxes:
- format: bytes
- format: short
- title: Pool PG/PGP Count
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$Pool.gauge-pg_num, 'collectd-ceph-storage-pool-', ''), 'gauge-', ''), '_num', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$Pool.gauge-pgp_num, 'collectd-ceph-storage-pool-', ''), 'gauge-', ''), '_num', ''), 2, 3)
- title: Pool Size
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub($Cloud.{{partial_panel.node}}.$Pool.gauge-size, 'collectd-ceph-storage-pool-', ''), 2)
- title: OSD Space
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$OSD.gauge-kb_total, 'collectd-ceph-storage-osd-', ''), 'gauge-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$OSD.gauge-kb_used, 'collectd-ceph-storage-osd-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: kbytes
- format: short
- title: OSD Latency
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
lines: false
nullPointMode: 'null'
pointradius: 2
points: true
span: 6
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$OSD.gauge-apply_latency_ms, 'collectd-ceph-storage-osd-', ''), 'gauge-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$OSD.gauge-commit_latency_ms, 'collectd-ceph-storage-osd-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: ms
- format: short
- title: OSD Snap Trim
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$OSD.gauge-num_snap_trimming, 'collectd-ceph-storage-osd-', ''), 'gauge-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.$OSD.gauge-snap_trim_queue_len, 'collectd-ceph-storage-osd-', ''), 'gauge-', ''), 2, 3)
- title: Pool Bytes Used
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub($Cloud.{{partial_panel.node}}.$Pool.gauge-bytes_used, 'collectd-ceph-storage-pool-', ''), 2)
yaxes:
- format: bytes
- format: short

View File

@ -0,0 +1,57 @@
- title: CPU All
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - All CPUs
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- target: alias(averageSeries($Cloud.$Node.cpu-*.cpu-system), 'System')
- target: alias(averageSeries($Cloud.$Node.cpu-*.cpu-user), 'User')
- target: alias(averageSeries($Cloud.$Node.cpu-*.cpu-nice), 'Nice')
- target: alias(averageSeries($Cloud.$Node.cpu-*.cpu-steal), 'Steal')
- target: alias(averageSeries($Cloud.$Node.cpu-*.cpu-softirq), 'SoftIRQ')
- target: alias(averageSeries($Cloud.$Node.cpu-*.cpu-interrupt), 'Interrupt')
- target: alias(averageSeries($Cloud.$Node.cpu-*.cpu-wait), 'Wait')
- target: alias(averageSeries($Cloud.$Node.cpu-*.cpu-idle), 'Idle')
yaxes:
- format: percent
- format: short
- title: $Cloud - $Node - All CPUs Sum
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- target: alias(sumSeries($Cloud.$Node.cpu-*.cpu-system), 'System')
- target: alias(sumSeries($Cloud.$Node.cpu-*.cpu-user), 'User')
- target: alias(sumSeries($Cloud.$Node.cpu-*.cpu-nice), 'Nice')
- target: alias(sumSeries($Cloud.$Node.cpu-*.cpu-steal), 'Steal')
- target: alias(sumSeries($Cloud.$Node.cpu-*.cpu-softirq), 'SoftIRQ')
- target: alias(sumSeries($Cloud.$Node.cpu-*.cpu-interrupt), 'Interrupt')
- target: alias(sumSeries($Cloud.$Node.cpu-*.cpu-wait), 'Wait')
- target: alias(sumSeries($Cloud.$Node.cpu-*.cpu-idle), 'Idle')
yaxes:
- format: percent
- format: short

View File

@ -0,0 +1,66 @@
- title: Per CPU Logical CPU Core (0-9)
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - $cpus0
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
minSpan: 6
nullPointMode: 'null'
repeat: cpus0
stack: true
targets:
- target: alias($Cloud.$Node.$cpus0.cpu-system, 'System')
- target: alias($Cloud.$Node.$cpus0.cpu-user, 'User')
- target: alias($Cloud.$Node.$cpus0.cpu-nice, 'Nice')
- target: alias($Cloud.$Node.$cpus0.cpu-steal, 'Steal')
- target: alias($Cloud.$Node.$cpus0.cpu-softirq, 'SoftIRQ')
- target: alias($Cloud.$Node.$cpus0.cpu-interrupt, 'Interrupt')
- target: alias($Cloud.$Node.$cpus0.cpu-wait, 'Wait')
- target: alias($Cloud.$Node.$cpus0.cpu-idle, 'Idle')
yaxes:
- format: percent
- format: short
- title: Per CPU Logical CPU Core (10-99)
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - $cpus00
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
minSpan: 6
nullPointMode: 'null'
repeat: cpus00
stack: true
targets:
- target: alias($Cloud.$Node.$cpus00.cpu-system, 'System')
- target: alias($Cloud.$Node.$cpus00.cpu-user, 'User')
- target: alias($Cloud.$Node.$cpus00.cpu-nice, 'Nice')
- target: alias($Cloud.$Node.$cpus00.cpu-steal, 'Steal')
- target: alias($Cloud.$Node.$cpus00.cpu-softirq, 'SoftIRQ')
- target: alias($Cloud.$Node.$cpus00.cpu-interrupt, 'Interrupt')
- target: alias($Cloud.$Node.$cpus00.cpu-wait, 'Wait')
- target: alias($Cloud.$Node.$cpus00.cpu-idle, 'Idle')
yaxes:
- format: percent
- format: short

View File

@ -0,0 +1,6 @@
- title: description row
height: 50px
panels:
- title: Browbeat provided Dashboard
content: "**This dashboard is provided by Browbeat and managed via Grafyaml**"
type: text

View File

@ -0,0 +1,45 @@
- title: DF
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Partition % Used
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.df-*.percent_bytes-used, 'df-', ''), 2)
yaxes:
- format: percent
max: 100
- format: short
- title: $Cloud - $Node - Inodes % Used
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.df-*.percent_inodes-used, 'df-', ''), 2)
yaxes:
- format: percent
max: 100
- format: short

View File

@ -0,0 +1,133 @@
- title: Disk
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - $Disk iops
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Write
transform: negative-Y
targets:
- target: alias($Cloud.$Node.$Disk.disk_ops.read, 'Read')
- target: alias($Cloud.$Node.$Disk.disk_ops.write, 'Write')
yaxes:
- format: iops
- format: short
- title: $Cloud - $Node - $Disk Throughput
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Write
transform: negative-Y
targets:
- target: alias($Cloud.$Node.$Disk.disk_octets.read, 'Read')
- target: alias($Cloud.$Node.$Disk.disk_octets.write, 'Write')
yaxes:
- format: Bps
- format: short
- title: $Cloud - $Node - $Disk Merged iops
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Write
transform: negative-Y
targets:
- target: alias($Cloud.$Node.$Disk.disk_merged.read, 'Read')
- target: alias($Cloud.$Node.$Disk.disk_merged.write, 'Write')
yaxes:
- format: iops
- format: short
- title: $Cloud - $Node - $Disk Pending Operations
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias($Cloud.$Node.$Disk.pending_operations, 'Pending Ops')
yaxes:
- format: short
- format: short
- title: $Cloud - $Node - $Disk Average Time (Estimated)
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Write
transform: negative-Y
targets:
- target: alias($Cloud.$Node.$Disk.disk_time.read, 'Read')
- target: alias($Cloud.$Node.$Disk.disk_time.write, 'Write')
yaxes:
- format: ms
- format: short
- title: $Cloud - $Node - $Disk IO Time
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: Weighted Time
yaxis: 2
targets:
- target: alias(scale($Cloud.$Node.$Disk.disk_io_time.io_time, 0.1), 'Time')
- target: alias($Cloud.$Node.$Disk.disk_io_time.weighted_io_time, 'Weighted Time')
yaxes:
- format: percent
- format: ms

View File

@ -0,0 +1,22 @@
- title: Gnocchi Backlog
collapse: {{partial_panel.collapse}}
height: 200px
showTitle: true
panels:
- title: $Node Metrics/Measures Backlog
type: graph
fill: 0
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'connected'
steppedLine: true
targets:
- target: aliasByMetric(aliasSub($Cloud.$Node.gnocchi_status.*, 'gauge-', ''))

View File

@ -0,0 +1,278 @@
- title: IOStat
collapse: {{partial_panel.collapse}}
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - rrqm/s & wrqm/s
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/.*wrqm_s.*/"
transform: negative-Y
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-rrqm_s, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-wrqm_s, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: ops
- format: short
- title: $Cloud - $Node - r/s & w/s
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/.*w_s.*/"
transform: negative-Y
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-r_s, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-w_s, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: ops
- format: short
- title: $Cloud - $Node - rkB/s & wkB/s
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/.*wkB_s.*/"
transform: negative-Y
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-rkB_s, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-wkB_s, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: deckbytes
- format: short
- title: $Cloud - $Node - Average Request Size (avgrq-sz)
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-avgrq_sz, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: ops
- format: short
- title: $Cloud - $Node - Average Queue Length of Requests (avgqu-sz)
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-avgqu_sz, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: ops
- format: short
- title: $Cloud - $Node - Average Time for I/O requests (await)
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-await, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: ms
- format: short
- title: $Cloud - $Node - Average Time Read/Write Requests (r_await/w_await)
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/.*w_await.*/"
transform: negative-Y
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-r_await, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-w_await, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: ms
- format: short
- title: $Cloud - $Node - Average Service Time (svctm)
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/.*w_await.*/"
transform: negative-Y
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-svctm, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: ms
- format: short
- title: $Cloud - $Node - %util
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/.*w_await.*/"
transform: negative-Y
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-_util, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: percent
- format: short
- title: $Cloud - $Node - Transfers per Second (tps)
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/.*w_await.*/"
transform: negative-Y
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-tps, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: iops
- format: short
- title: $Cloud - $Node - kB_read/s & kB_wrtn/s
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/.*kB_wrtn.*/"
transform: negative-Y
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-kB_read_s, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-kB_wrtn_s, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: deckbytes
- format: short
- title: $Cloud - $Node - kB_read & kB_wrtn
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "/.*kB_wrtn.*/"
transform: negative-Y
span: 6
stack: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-kB_read, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.collectd_iostat_python-*.gauge-kB_wrtn, 'collectd_iostat_python-', ''), 'gauge-', ''), 2, 3)
yaxes:
- format: deckbytes
- format: short

View File

@ -0,0 +1,116 @@
- title: Ironic StatsD power state
collapse: true
height: 200px
showTitle: true
panels:
- title: "Power State Sync: 90th Percentile Mean"
type: graph
legend:
show: true
nullPointMode: 'null'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.conductor.manager.do_sync_power_state.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: "Change Node Power State: 90th percentile mean"
type: graph
legend:
show: true
nullPointMode: 'null'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.conductor.manager.ConductorManager.change_node_power_state.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: Ironic StatsD boot/deployment info
collapse: true
height: 200px
showTitle: true
panels:
- title: "Set boot device: 90th percentile mean"
type: graph
legend:
show: true
nullPointMode: 'null'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.conductor.manager.ConductorManager.set_boot_device.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: "Do Node Deployment: 90th percentile mean"
type: graph
legend:
show: true
nullPointMode: 'null'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.conductor.manager.ConductorManager.do_node_deploy.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: Ironic StatsD API node details/list response time
collapse: true
height: 200px
showTitle: true
panels:
- title: "Get Node Details API response time: 90th percentile mean"
type: graph
legend:
show: true
nullPointMode: 'null'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.api.controllers.v1.node.NodesController.detail.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: "Get Node List API response time: 90th Percentile mean"
type: graph
legend:
show: true
nullPointMode: 'null'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.api.controllers.v1.node.NodesController.get_all.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: Ironic StatsD API power/provision state
collapse: true
height: 200px
showTitle: true
panels:
- title: "Node Power State API response time: 90th Percentile Mean"
type: graph
legend:
show: true
nullPointMode: 'null'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.api.controllers.v1.node.NodeStatesController.power.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short
- title: "Ironic Node Provision State API response time: 90th percentile mean"
type: graph
legend:
show: true
nullPointMode: 'null'
span: 6
targets:
- target: stats.timers.$Cloud.ironic.api.controllers.v1.node.NodeStatesController.provision.mean_90
yaxes:
- format: short
label: Milliseconds
- format: short

View File

@ -0,0 +1,37 @@
- title: IRQ
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - IRQ
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.irq.irq-[A-Z]*, 'irq-', ''), 3)
- title: $Cloud - $Node - Interrupts
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias(sumSeries($Cloud.$Node.irq.irq-[0-9]*), 'Interrupts')

View File

@ -0,0 +1,31 @@
- title: Load / Uptime
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - All CPUs
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: uptime
lines: false
yaxis: 2
targets:
- target: alias($Cloud.$Node.load.load.shortterm, '1m avg')
- target: alias($Cloud.$Node.load.load.midterm, '5m avg')
- target: alias($Cloud.$Node.load.load.longterm, '15m avg')
- target: alias($Cloud.$Node.uptime.uptime, 'uptime')
yaxes:
- format: short
- format: s

View File

@ -0,0 +1,190 @@
- title: MariaDB
collapse: true
height: 200px
showTitle: true
panels:
- title: MySQL Threads
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.threads-*, 'threads-', ''), 3)
- title: MySQL Traffic
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode($Cloud.$Node.mysql-*.mysql_octets.*, 4)
yaxes:
- format: bytes
- format: short
- title: MySQL Query Cache
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.cache_result-*, 'cache_result-qcache-', ''), 3)
yaxes:
- format: bytes
- format: short
- title: MySQL Query Cache Size
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.cache_size-*, 'cache_size-', ''), 3)
- title: MySQL Buffer Pool Data
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_bpool_bytes-*, 'mysql_bpool_bytes-', ''), 3)
yaxes:
- format: bytes
- format: short
- title: MySQL Buffer Pool Counters
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_bpool_counters-*, 'mysql_bpool_counters-', ''), 3)
- title: MySQL Commands
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_commands-*, 'mysql_commands-', ''), 3)
- title: MySQL Handler
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_handler-*, 'mysql_handler-', ''), 3)
- title: MySQL Locks
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_locks-*, 'mysql_locks-', ''), 3)
- title: MySQL Select
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_select-*, 'mysql_select-', ''), 3)
- title: MySQL Sort
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_sort-*, 'mysql_sort-', ''), 3)

View File

@ -0,0 +1,107 @@
- title: Memory & Swap
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Memory in Bytes
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- target: alias($Cloud.$Node.memory.memory-slab_unrecl, 'Slab Unrecl')
- target: alias($Cloud.$Node.memory.memory-used, 'Used')
- target: alias($Cloud.$Node.memory.memory-buffered, 'Buffered')
- target: alias($Cloud.$Node.memory.memory-slab_recl, 'Slab Recl')
- target: alias($Cloud.$Node.memory.memory-cached, 'Cached')
- target: alias($Cloud.$Node.memory.memory-free, 'Free')
yaxes:
- format: bytes
- format: short
- title: $Cloud - $Node - Memory in Percentage
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- hide: true
target: "$Cloud.$Node.memory.memory-slab_unrecl"
- hide: true
target: "$Cloud.$Node.memory.memory-used"
- hide: true
target: "$Cloud.$Node.memory.memory-buffered"
- hide: true
target: "$Cloud.$Node.memory.memory-slab_recl"
- hide: true
target: "$Cloud.$Node.memory.memory-cached"
- hide: true
target: "$Cloud.$Node.memory.memory-free"
- hide: true
target: sumSeries($Cloud.$Node.memory.*)
- target: 'alias(asPercent(#A, #G), ''Slab Unrecl'')'
- target: 'alias(asPercent(#B, #G), ''Used'')'
- target: 'alias(asPercent(#C, #G), ''Buffered'')'
- target: 'alias(asPercent(#D, #G), ''Slab Recl'')'
- target: 'alias(asPercent(#E, #G), ''Cached'')'
- target: 'alias(asPercent(#F, #G), ''Free'')'
yaxes:
- format: percent
- format: short
- title: $Cloud - $Node - Swap Usage
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- target: alias($Cloud.$Node.swap.swap-used, 'Used')
- target: alias($Cloud.$Node.swap.swap-cached, 'Cached')
- target: alias($Cloud.$Node.swap.swap-free, 'Free')
yaxes:
- format: bits
- format: short
- title: $Cloud - $Node - Swap IO
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias($Cloud.$Node.swap.swap_io-in, 'In')
- target: alias($Cloud.$Node.swap.swap_io-out, 'Out')
yaxes:
- format: bytes
- format: short

View File

@ -0,0 +1,101 @@
- title: MYSQL INNODB
collapse: true
height: 200px
showTitle: true
panels:
- title: MySQL Innodb Data
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_innodb_data-*, 'mysql_innodb_data-', ''), 3)
- title: MySQL Innodb Double Write
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_innodb_dblwr-*, 'mysql_innodb_dblwr-', ''), 3)
- title: MySQL Innodb Log
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_innodb_log-*, 'mysql_innodb_log-', ''), 3)
- title: MySQL Innodb Pages
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_innodb_pages-*, 'mysql_innodb_pages-', ''), 3)
- title: MySQL Innodb Row Lock
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_innodb_row_lock-*, 'mysql_innodb_row_lock-', ''), 3)
- title: MySQL Innodb Rows
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub($Cloud.$Node.mysql-*.mysql_innodb_rows-*, 'mysql_innodb_rows-', ''), 3)

View File

@ -0,0 +1,109 @@
- title: Network
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - $Interface Network IO
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: RX
transform: negative-Y
targets:
- target: alias($Cloud.$Node.$Interface.if_packets.tx, 'TX')
- target: alias($Cloud.$Node.$Interface.if_packets.rx, 'RX')
yaxes:
- format: pps
- format: short
- title: $Cloud - $Node - $Interface Network Throughput
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: RX
transform: negative-Y
targets:
- target: alias(scale($Cloud.$Node.$Interface.if_octets.tx, 8), 'TX')
- target: alias(scale($Cloud.$Node.$Interface.if_octets.rx, 8), 'RX')
yaxes:
- format: bps
- format: short
- title: $Cloud - $Node - $Interface Errors
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: RX
transform: negative-Y
targets:
- target: alias($Cloud.$Node.$Interface.if_errors.tx, 'TX')
- target: alias($Cloud.$Node.$Interface.if_errors.rx, 'RX')
yaxes:
- format: short
- format: short
- title: $Cloud - $Node - ConnTrack
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
seriesOverrides:
- alias: "% Used"
yaxis: 2
targets:
- target: alias($Cloud.$Node.conntrack.conntrack-max, 'Max')
- target: alias($Cloud.$Node.conntrack.conntrack, 'Used')
- target: alias($Cloud.$Node.conntrack.percent-used, '% Used')
yaxes:
- format: short
- format: percent
max: 100
- title: Ping- Latency and Jitter
type: graph
legend:
alignAsTable: true
avg: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode($Cloud.$Node.ping.*, 3)

View File

@ -0,0 +1,20 @@
- title: Neutron Resources
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - Neutron $Node Resources
type: graph
legend:
avg: false
current: false
max: false
min: false
show: true
total: false
values: false
nullPointMode: 'null'
targets:
- target: "$Cloud.$Node.ovsagent_monitoring.gauge-qdhcp_ns_total-count"
- target: "$Cloud.$Node.ovsagent_monitoring.gauge-qrouter_ns_total-count"
- target: "$Cloud.$Node.ovsagent_monitoring.gauge-tap_interface_total-count"

View File

@ -0,0 +1,26 @@
- title: Numa
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Numastat
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.numa-*.vmpage_action-interleave_hit, 'numa-', ''), 'vmpage_action-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.numa-*.vmpage_action-local_node, 'numa-', ''), 'vmpage_action-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.numa-*.vmpage_action-numa_foreign, 'numa-', ''), 'vmpage_action-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.numa-*.vmpage_action-numa_hit, 'numa-', ''), 'vmpage_action-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.numa-*.vmpage_action-numa_miss, 'numa-', ''), 'vmpage_action-', ''), 2, 3)
- target: aliasByNode(aliasSub(aliasSub($Cloud.$Node.numa-*.vmpage_action-other_node, 'numa-', ''), 'vmpage_action-', ''), 2, 3)

View File

@ -0,0 +1,41 @@
- title: OpenDaylight
collapse: true
height: 200px
showTitle: true
panels:
- title: ODL Java Heap Memory
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode($Cloud.$Node.GenericJMX-memory-heap.*, 3)
yaxes:
- format: bits
- format: short
- title: ODL Java Non-Heap Memory
type: graph
legend:
alignAsTable: true
avg: true
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode($Cloud.$Node.GenericJMX-memory-nonheap.*, 3)
yaxes:
- format: bits
- format: short

View File

@ -0,0 +1,37 @@
#jinja2:lstrip_blocks: True
{% for metrics in per_process_metrics %}
- title: {{per_process_row_title_prefix}} {{metrics.name}}
collapse: true
height: 200px
showTitle: true
panels:
{% for panel in per_process_panels[item.process_list_name] %}
- title: {{panel.name}}
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: '{{metrics.nullPointMode}}'
targets:
{% for process in panel.processes %}
{% for metric in metrics.metrics %}
{% if metrics.name|match('Process CPU') %}
- target: alias(scale($Cloud.$Node.processes-{{process|replace('.', '_')|replace(':', '_')}}{{metric.query}}, 0.0001), '{{process}} {{metric.name}}')
{% else %}
- target: alias($Cloud.$Node.processes-{{process|replace('.', '_')|replace(':', '_')}}{{metric.query}}, '{{process}} {{metric.name}}')
{% endif %}
{% endfor %}
{% endfor %}
yaxes:
- format: {{metrics.y1units}}
- format: short
{% endfor %}
{% endfor %}

View File

@ -0,0 +1,35 @@
#jinja2:lstrip_blocks: True
- title: {{partial_panel.title}}
collapse: true
height: 200px
showTitle: true
panels:
{% for metrics in per_process_metrics %}
- title: {{metrics.name}}
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: '{{metrics.nullPointMode}}'
targets:
{% for process in partial_panel.processes %}
{% for metric in metrics.metrics %}
{% if metrics.name|match('Process CPU') %}
- target: alias(scale($Cloud.$Node.processes-{{process|replace('.', '_')|replace(':', '_')}}{{metric.query}}, 0.0001), '{{process}} {{metric.name}}')
{% else %}
- target: alias($Cloud.$Node.processes-{{process|replace('.', '_')|replace(':', '_')}}{{metric.query}}, '{{process}} {{metric.name}}')
{% endif %}
{% endfor %}
{% endfor %}
yaxes:
- format: {{metrics.y1units}}
- format: short
{% endfor %}

View File

@ -0,0 +1,41 @@
- title: Processes
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Processes State
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
stack: true
targets:
- target: alias($Cloud.$Node.processes.ps_state-running, 'Running')
- target: alias($Cloud.$Node.processes.ps_state-stopped, 'Stopped')
- target: alias($Cloud.$Node.processes.ps_state-sleeping, 'Sleeping')
- target: alias($Cloud.$Node.processes.ps_state-blocked, 'Blocked')
- target: alias($Cloud.$Node.processes.ps_state-paging, 'Paging')
- target: alias($Cloud.$Node.processes.ps_state-zombies, 'Zombies')
- title: $Cloud - $Node - Fork Rate
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: alias($Cloud.$Node.processes.fork_rate, 'Fork Rate')

View File

@ -0,0 +1,114 @@
#jinja2:lstrip_blocks: True
- title: Rabbitmq Metrics
collapse: true
height: 200px
showTitle: true
panels:
- title: Rabbitmq Object Counts
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: alias($Cloud.{{partial_panel.node}}.rabbitmq_monitoring.gauge-queues, 'Queues')
- target: alias($Cloud.{{partial_panel.node}}.rabbitmq_monitoring.gauge-connections, 'Connections')
- target: alias($Cloud.{{partial_panel.node}}.rabbitmq_monitoring.gauge-consumers, 'Consumers')
- target: alias($Cloud.{{partial_panel.node}}.rabbitmq_monitoring.gauge-channels, 'Channels')
- target: alias($Cloud.{{partial_panel.node}}.rabbitmq_monitoring.gauge-exchanges, 'Exchanges')
- title: Queue Totals
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
steppedLine: true
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.rabbitmq_monitoring.gauge-queue_total-*-count, 'gauge-queue_total-', ''), '-count', ''), 3)
- title: Queue Total Rates
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.rabbitmq_monitoring.gauge-queue_total-*-rate, 'gauge-queue_total-', ''), '-rate', ''), 3)
- title: Message Stats Count
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.rabbitmq_monitoring.gauge-message_total-*-count, 'gauge-message_total-', ''), '-count', ''), 3)
- title: Message Stats Rate
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.rabbitmq_monitoring.gauge-message_total-*-rate, 'gauge-message_total-', ''), '-rate', ''), 3)
- title: Queue Message Counts
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
span: 6
steppedLine: true
targets:
- target: aliasByMetric(aliasSub($Cloud.{{partial_panel.node}}.rabbitmq_monitoring.*-msg_count-*, 'gauge-msg_count-', ''))

View File

@ -0,0 +1,58 @@
- title: Swift Stat
collapse: true
height: 250px
showTitle: true
panels:
- title: Byte Total
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'connected'
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.swift_stat.gauge-*-bytes, 'gauge-', ''), '-bytes', ''), 3)
yaxes:
- format: bytes
- format: short
- title: Container Count
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'connected'
span: 6
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.swift_stat.gauge-*-containers, 'gauge-', ''), '-containers', ''), 3)
- title: Object Count
type: graph
fill: 0
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'connected'
span: 6
targets:
- target: aliasByNode(aliasSub(aliasSub($Cloud.{{partial_panel.node}}.swift_stat.gauge-*-objects, 'gauge-', ''), '-objects', ''), 3)

View File

@ -0,0 +1,50 @@
- title: Tail
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Tail Info
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(consolidateBy(scale(aliasSub(aliasSub($Cloud.$Node.tail-*.counter-*error, 'tail-', ''), 'counter-', ''), 10), 'max'), 2)
- title: $Cloud - $Node - Tail Warn
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(consolidateBy(scale(aliasSub(aliasSub($Cloud.$Node.tail-*.counter-*warn, 'tail-', ''), 'counter-', ''), 10), 'max'), 2)
- title: $Cloud - $Node - Tail Info
type: graph
legend:
alignAsTable: true
avg: false
current: true
max: true
min: true
rightSide: true
show: true
total: false
values: true
nullPointMode: 'null'
targets:
- target: aliasByNode(consolidateBy(scale(aliasSub(aliasSub($Cloud.$Node.tail-*.counter-*info, 'tail-', ''), 'counter-', ''), 10), 'max'), 2)

View File

@ -0,0 +1,58 @@
- title: Turbostat
collapse: true
height: 200px
showTitle: true
panels:
- title: $Cloud - $Node - Gauge TSC & SMI Count
type: graph
decimals: 2
fill: 0
nullPointMode: 'null'
seriesOverrides:
- alias: SMI Count
yaxis: 2
targets:
- target: aliasByNode(scale(aliasSub($Cloud.$Node.turbostat-cpu*.gauge-TSC, 'turbostat-','tsc-'), 1000000), 2)
- target: alias(sumSeries($Cloud.$Node.turbostat-cpu*.count), 'SMI Count')
yaxes:
- format: hertz
- format: short
- title: $Cloud - $Node - turbostat Freq Avg
type: graph
fill: 0
nullPointMode: 'null'
targets:
- target: aliasByNode(scale(aliasSub($Cloud.$Node.turbostat-cpu*.frequency-average, 'turbostat-', ''), 1000000), 2)
yaxes:
- format: hertz
- format: short
- title: $Cloud - $Node - turbostat Freq Busy
type: graph
decimals: 2
fill: 0
nullPointMode: 'null'
targets:
- target: aliasByNode(scale($Cloud.$Node.turbostat-cpu*.frequency-busy, 1000000), 2)
yaxes:
- format: hertz
- format: short
- title: $Cloud - $Node - turbostat c0%
type: graph
decimals: 2
fill: 0
nullPointMode: 'null'
targets:
- target: aliasByNode($Cloud.$Node.turbostat-cpu*.percent-c0, 2)
yaxes:
- format: percent
- format: short
- title: $Cloud - $Node - turbostat c1%
type: graph
decimals: 2
fill: 0
nullPointMode: 'null'
targets:
- target: aliasByNode($Cloud.$Node.turbostat-cpu*.percent-c1, 2)
yaxes:
- format: percent
- format: short

View File

@ -0,0 +1,24 @@
- title: CPU
height: 250px
showTitle: true
panels:
{% for node_index in range(1,4) %}
- title: $Cloud - $Node{{node_index}} - All CPUs Sum
type: graph
legend: {}
nullPointMode: 'null'
span: 4
stack: true
targets:
- target: alias(sumSeries($Cloud.$Node{{node_index}}.cpu-*.cpu-system), 'System')
- target: alias(sumSeries($Cloud.$Node{{node_index}}.cpu-*.cpu-user), 'User')
- target: alias(sumSeries($Cloud.$Node{{node_index}}.cpu-*.cpu-nice), 'Nice')
- target: alias(sumSeries($Cloud.$Node{{node_index}}.cpu-*.cpu-steal), 'Steal')
- target: alias(sumSeries($Cloud.$Node{{node_index}}.cpu-*.cpu-softirq), 'SoftIRQ')
- target: alias(sumSeries($Cloud.$Node{{node_index}}.cpu-*.cpu-interrupt), 'Interrupt')
- target: alias(sumSeries($Cloud.$Node{{node_index}}.cpu-*.cpu-wait), 'Wait')
- target: alias(sumSeries($Cloud.$Node{{node_index}}.cpu-*.cpu-idle), 'Idle')
yaxes:
- format: percent
- format: short
{% endfor %}

View File

@ -0,0 +1,67 @@
- title: Disk
height: 250px
showTitle: true
panels:
{% for node_index in range(1,4) %}
- title: $Cloud - $Node{{node_index}} - IO Util
type: graph
fill: 0
legend: {}
nullPointMode: 'null'
span: 4
targets:
- target: aliasByNode(aliasSub(scale($Cloud.$Node{{node_index}}.disk-*.disk_io_time.io_time, 0.1), 'disk-', ''), 2)
yaxes:
- format: percent
- format: short
{% endfor %}
{% if enhanced %}
{% for node_index in range(1,4) %}
- title: $Cloud - $Node{{node_index}} - Throughput
type: graph
fill: 0
legend: {}
nullPointMode: 'null'
span: 4
seriesOverrides:
- alias: "/.*\\.write/"
transform: negative-Y
targets:
- target: aliasByNode(aliasSub($Cloud.$Node{{node_index}}.disk-*.disk_octets.read, 'disk-', ''), 2, 4)
- target: aliasByNode(aliasSub($Cloud.$Node{{node_index}}.disk-*.disk_octets.write, 'disk-', ''), 2, 4)
yaxes:
- format: Bps
- format: short
{% endfor %}
{% for node_index in range(1,4) %}
- title: $Cloud - $Node{{node_index}} - IOps
type: graph
fill: 0
legend: {}
nullPointMode: 'null'
span: 4
seriesOverrides:
- alias: "/.*\\.write/"
transform: negative-Y
targets:
- target: aliasByNode(aliasSub($Cloud.$Node{{node_index}}.disk-*.disk_ops.read, 'disk-', ''), 2, 4)
- target: aliasByNode(aliasSub($Cloud.$Node{{node_index}}.disk-*.disk_ops.write, 'disk-', ''), 2, 4)
yaxes:
- format: iops
- format: short
{% endfor %}
{% for node_index in range(1,4) %}
- title: $Cloud - $Node{{node_index}} - Partition % Used
type: graph
fill: 0
legend: {}
nullPointMode: 'null'
span: 4
targets:
- target: aliasByNode(aliasSub($Cloud.$Node{{node_index}}.df-*.percent_bytes-used, 'df-', ''), 2)
yaxes:
- format: percent
max: 100
- format: short
{% endfor %}
{% endif %}

View File

@ -0,0 +1,24 @@
- title: Load / Uptime
height: 250px
showTitle: true
panels:
{% for node_index in range(1,4) %}
- title: $Cloud - $Node{{node_index}} - Load / Uptime
type: graph
fill: 0
legend: {}
nullPointMode: 'null'
seriesOverrides:
- alias: uptime
# lines: false
yaxis: 2
span: 4
targets:
- target: alias($Cloud.$Node{{node_index}}.load.load.shortterm, '1m avg')
- target: alias($Cloud.$Node{{node_index}}.load.load.midterm, '5m avg')
- target: alias($Cloud.$Node{{node_index}}.load.load.longterm, '15m avg')
- target: alias($Cloud.$Node{{node_index}}.uptime.uptime, 'uptime')
yaxes:
- format: short
- format: s
{% endfor %}

View File

@ -0,0 +1,40 @@
- title: Memory
height: 250px
showTitle: true
panels:
{% for node_index in range(1,4) %}
- title: $Cloud - $Node{{node_index}} - Memory in Bytes
type: graph
legend: {}
nullPointMode: 'null'
span: 4
stack: true
targets:
- target: alias($Cloud.$Node{{node_index}}.memory.memory-slab_unrecl, 'Slab Unrecl')
- target: alias($Cloud.$Node{{node_index}}.memory.memory-used, 'Used')
- target: alias($Cloud.$Node{{node_index}}.memory.memory-buffered, 'Buffered')
- target: alias($Cloud.$Node{{node_index}}.memory.memory-slab_recl, 'Slab Recl')
- target: alias($Cloud.$Node{{node_index}}.memory.memory-cached, 'Cached')
- target: alias($Cloud.$Node{{node_index}}.memory.memory-free, 'Free')
yaxes:
- format: bytes
- format: short
{% endfor %}
{% if enhanced %}
{% for node_index in range(1,4) %}
- title: $Cloud - $Node{{node_index}} - Swap
type: graph
legend: {}
nullPointMode: 'null'
span: 4
stack: true
targets:
- target: alias($Cloud.$Node{{node_index}}.swap.swap-used, 'Used')
- target: alias($Cloud.$Node{{node_index}}.swap.swap-cached, 'Cached')
- target: alias($Cloud.$Node{{node_index}}.swap.swap-free, 'Free')
yaxes:
- format: bits
min: 0
- format: short
{% endfor %}
{% endif %}

View File

@ -0,0 +1,40 @@
- title: Network
height: 250px
showTitle: true
panels:
{% for node_index in range(1,4) %}
- title: $Cloud - $Node{{node_index}} - Throughput
type: graph
fill: 0
legend: {}
nullPointMode: 'null'
seriesOverrides:
- alias: "/.*\\.rx/"
transform: negative-Y
span: 4
targets:
- target: aliasByNode(aliasSub($Cloud.$Node{{node_index}}.*.if_octets.tx, 'interface-', ''), 2, 4)
- target: aliasByNode(aliasSub($Cloud.$Node{{node_index}}.*.if_octets.rx, 'interface-', ''), 2, 4)
yaxes:
- format: Bps
- format: short
{% endfor %}
{% if enhanced %}
{% for node_index in range(1,4) %}
- title: $Cloud - $Node{{node_index}} - PPS
type: graph
fill: 0
legend: {}
nullPointMode: 'null'
seriesOverrides:
- alias: "/.*\\.rx/"
transform: negative-Y
span: 4
targets:
- target: aliasByNode(aliasSub($Cloud.$Node{{node_index}}.*.if_packets.tx, 'interface-', ''), 2, 4)
- target: aliasByNode(aliasSub($Cloud.$Node{{node_index}}.*.if_packets.rx, 'interface-', ''), 2, 4)
yaxes:
- format: pps
- format: short
{% endfor %}
{% endif %}

View File

@ -0,0 +1,35 @@
#jinja2:lstrip_blocks: True
{% set enhanced = False %}
---
dashboard:
title: Three Node Performance Food Groups
templating:
- name: Cloud
query: "*"
refresh: true
type: query
- name: Node1
query: "$Cloud.*"
refresh: true
type: query
- name: Node2
query: "$Cloud.*"
refresh: true
type: query
- name: Node3
query: "$Cloud.*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% include 'three_node_performance/cpu.yaml.j2' %}
{% include 'three_node_performance/memory.yaml.j2' %}
{% include 'three_node_performance/disk.yaml.j2' %}
{% include 'three_node_performance/network.yaml.j2' %}

View File

@ -0,0 +1,37 @@
#jinja2:lstrip_blocks: True
{% set enhanced = True %}
---
dashboard:
title: Three Node Performance Food Groups Enhanced
templating:
- name: Cloud
query: "*"
refresh: true
type: query
- name: Node1
query: "$Cloud.*"
refresh: true
type: query
- name: Node2
query: "$Cloud.*"
refresh: true
type: query
- name: Node3
query: "$Cloud.*"
refresh: true
type: query
time:
from: now-1h
to: now
rows:
{% include 'partials/description.yaml' %}
{% include 'three_node_performance/cpu.yaml.j2' %}
{% include 'three_node_performance/load.yaml.j2' %}
{% include 'three_node_performance/memory.yaml.j2' %}
{% include 'three_node_performance/disk.yaml.j2' %}
{% include 'three_node_performance/network.yaml.j2' %}

View File

@ -1,8 +1,17 @@
---
#
# Vars to generate Per-Process component of OpenStack Dashboards
# Vars for Dashboard Generation
#
dashboard_groups:
- undercloud
- controller
- networker
- blockstorage
- objectstorage
- cephstorage
- compute
per_process_metrics:
- name: "Process/Thread Counts"
y1units: "short"

View File

@ -29,6 +29,7 @@ export VARS="elastic_enabled=true \
--extra-vars grafana_host=$GRAPH_HOST \
--extra-vars grafana_username=$GRAFANA_USER \
--extra-vars grafana_password=$GRAFANA_PASS \
--extra-vars grafana_apikey=$GRAFANA_APIKEY \
--extra-vars browbeat_cloud_name=$CLOUD_NAME \
--extra-vars browbeat_config_file=$BENCHMARK \
--extra-vars graphite_prefix=$CLOUD_NAME \

View File

@ -1,5 +1,6 @@
ansible==2.2.0.0
elasticsearch
grafyaml==0.0.7
openstacksdk
python-dateutil==2.4.2
python-openstackclient==3.11.0