├── .gitignore ├── Gruntfile.js ├── LICENSE ├── README.md ├── dist ├── README.md ├── components │ ├── config.html │ ├── config.js │ └── config.js.map ├── dashboards │ ├── Cross_Server_Graphs.json │ ├── Disk_Performance.json │ ├── Disk_Space.json │ ├── Galera_Graphs.json │ ├── MySQL_InnoDB_Metrics.json │ ├── MySQL_MyISAM_Metrics.json │ ├── MySQL_Overview.json │ ├── MySQL_Performance_Schema.json │ ├── MySQL_Query_Response_Time.json │ ├── MySQL_Replication.json │ ├── MySQL_Table_Statistics.json │ ├── MySQL_User_Statistics.json │ ├── Prometheus.json │ ├── Summary_Dashboard.json │ ├── System_Overview.json │ ├── TokuDB_Metrics.json │ └── Trends_Dashboard.json ├── img │ ├── percona_large.png │ └── percona_small.png ├── module.js ├── module.js.map ├── plugin.json └── src │ └── img │ ├── percona_large.png │ └── percona_small.png ├── package.json ├── plugin.json └── src ├── components ├── config.html └── config.js ├── dashboards ├── Cross_Server_Graphs.json ├── Disk_Performance.json ├── Disk_Space.json ├── Galera_Graphs.json ├── MySQL_InnoDB_Metrics.json ├── MySQL_MyISAM_Metrics.json ├── MySQL_Overview.json ├── MySQL_Performance_Schema.json ├── MySQL_Query_Response_Time.json ├── MySQL_Replication.json ├── MySQL_Table_Statistics.json ├── MySQL_User_Statistics.json ├── Prometheus.json ├── Summary_Dashboard.json ├── System_Overview.json ├── TokuDB_Metrics.json └── Trends_Dashboard.json ├── img ├── percona_large.png └── percona_small.png └── module.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | 3 | require('load-grunt-tasks')(grunt); 4 | 5 | grunt.loadNpmTasks('grunt-execute'); 6 | grunt.loadNpmTasks('grunt-contrib-clean'); 7 | 8 | grunt.initConfig({ 9 | 10 | clean: ["dist"], 11 | 12 | copy: { 13 | src_to_dist: { 14 | cwd: 'src', 15 | expand: true, 16 | src: ['**/*', '!**/*.js', '!**/*.scss'], 17 | dest: 'dist' 18 | }, 19 | img_to_dist: { 20 | cwd: 'src', 21 | expand: true, 22 | src: ['img/*'], 23 | dest: 'dist/src/' 24 | }, 25 | pluginDef: { 26 | expand: true, 27 | src: ['plugin.json', 'README.md'], 28 | dest: 'dist', 29 | } 30 | }, 31 | 32 | watch: { 33 | rebuild_all: { 34 | files: ['src/**/*', 'plugin.json', 'README.md'], 35 | tasks: ['default'], 36 | options: {spawn: false} 37 | }, 38 | }, 39 | 40 | babel: { 41 | options: { 42 | sourceMap: true, 43 | presets: ["es2015"], 44 | // plugins: ['transform-es2015-modules-systemjs', "transform-es2015-for-of"], 45 | }, 46 | dist: { 47 | files: [{ 48 | cwd: 'src', 49 | expand: true, 50 | src: ['**/*.js'], 51 | dest: 'dist', 52 | ext:'.js' 53 | }] 54 | }, 55 | }, 56 | 57 | }); 58 | 59 | grunt.registerTask('default', ['clean', 'copy:src_to_dist', 'copy:pluginDef', 'copy:img_to_dist', 'babel']); 60 | }; 61 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Percona 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DEPRECATED 2 | 3 | Please note this repo is _*deprecated*_, users should refer to [percona/grafana-dashboards](https://github.com/percona/grafana-dashboards/) for updates, thank you. 4 | 5 | 6 | 7 | ### About 8 | 9 | This app provides a set of dashboards for MySQL performance and system monitoring with Prometheus datasource. 10 | The dashboards rely on `alias` label in the Prometheus config and depend from the small patch applied on Grafana. 11 | 12 | ### Dashboards 13 | 14 | * Cross Server Graphs 15 | * Disk Performance 16 | * Disk Space 17 | * Galera Graphs 18 | * MySQL InnoDB Metrics 19 | * MySQL MyISAM Metrics 20 | * MySQL Overview 21 | * MySQL Performance Schema 22 | * MySQL Query Response Time 23 | * MySQL Replication 24 | * MySQL Table Statistics 25 | * MySQL User Statistics 26 | * Prometheus 27 | * Summary Dashboard 28 | * System Overview 29 | * TokuDB Graphs 30 | * Trends Dashboard 31 | 32 | ### Screenshots 33 | 34 | ![img](https://raw.githubusercontent.com/percona/grafana-dashboards/master/assets/sample2.png) 35 | ![img](https://raw.githubusercontent.com/percona/grafana-dashboards/master/assets/sample5.png) 36 | ![img](https://raw.githubusercontent.com/percona/grafana-dashboards/master/assets/sample6.png) 37 | 38 | ### Setup instructions 39 | 40 | #### Import dashboards 41 | 42 | Enable the plugin and import the necessary dashboards from plugin's Dashboards tab. 43 | 44 | #### Add Prometheus datasource 45 | 46 | The datasource should be named `Prometheus` so it is automatically picked up by the graphs. 47 | 48 | #### Prometheus configuration 49 | 50 | The dashboards use `alias` label to work with individual hosts. 51 | Ensure you have `alias` defined for each of your targets. 52 | For example, if you want to monitor `192.168.1.7` the excerpt of the config will be look like this: 53 | 54 | scrape_configs: 55 | - job_name: prometheus 56 | target_groups: 57 | - targets: ['localhost:9090'] 58 | 59 | - job_name: linux 60 | target_groups: 61 | - targets: ['192.168.1.7:9100'] 62 | labels: 63 | alias: db1 64 | 65 | - job_name: mysql 66 | target_groups: 67 | - targets: ['192.168.1.7:9104'] 68 | labels: 69 | alias: db1 70 | 71 | Note, adding a new label to the existing Prometheus instance will introduce a mess with the time-series. 72 | So it is recommended to start using `alias` from scratch. 73 | 74 | How you name jobs is not important. However, "Prometheus" dashboard assumes the job name is `prometheus`. 75 | 76 | Also it is assumed that the exporters are run at least with this minimal set of options: 77 | 78 | * node_exporter: `-collectors.enabled="diskstats,filesystem,loadavg,meminfo,netdev,stat,time,uname,vmstat"` 79 | * mysqld_exporter: `-collect.binlog_size=true -collect.info_schema.processlist=true` 80 | 81 | ##### Apply Grafana patch 82 | 83 | It is important to apply the following minor patch on your Grafana installation in order to use the interval template variable to get the good zoomable graphs. The fix is simply to allow variable in Step field of graph editor page. For more information, take a look at [PR#3757](https://github.com/grafana/grafana/pull/3757) and [PR#4257](https://github.com/grafana/grafana/pull/4257). 84 | 85 | Run those 2 commands on top of your Grafana installation: 86 | 87 | sed -i 's/expr=\(.\)\.replace(\(.\)\.expr,\(.\)\.scopedVars\(.*\)var \(.\)=\(.\)\.interval/expr=\1.replace(\2.expr,\3.scopedVars\4var \5=\1.replace(\6.interval, \3.scopedVars)/' /usr/share/grafana/public/app/plugins/datasource/prometheus/datasource.js 88 | 89 | sed -i 's/,range_input/.replace(\/"{\/g,"\\"").replace(\/}"\/g,"\\""),range_input/; s/step_input:""/step_input:this.target.step/' /usr/share/grafana/public/app/plugins/datasource/prometheus/query_ctrl.js 90 | 91 | Those changes are idemportent and do not break anything. No restart required. 92 | 93 | #### Changelog 94 | 95 | ##### v1.0.0 96 | - Initial version. 97 | -------------------------------------------------------------------------------- /dist/README.md: -------------------------------------------------------------------------------- 1 | ### About 2 | 3 | This app provides a set of dashboards for MySQL performance and system monitoring with Prometheus datasource. 4 | The dashboards rely on `alias` label in the Prometheus config and depend from the small patch applied on Grafana. 5 | 6 | ### Dashboards 7 | 8 | * Cross Server Graphs 9 | * Disk Performance 10 | * Disk Space 11 | * Galera Graphs 12 | * MySQL InnoDB Metrics 13 | * MySQL MyISAM Metrics 14 | * MySQL Overview 15 | * MySQL Performance Schema 16 | * MySQL Query Response Time 17 | * MySQL Replication 18 | * MySQL Table Statistics 19 | * MySQL User Statistics 20 | * Prometheus 21 | * Summary Dashboard 22 | * System Overview 23 | * TokuDB Graphs 24 | * Trends Dashboard 25 | 26 | ### Screenshots 27 | 28 | ![img](https://raw.githubusercontent.com/percona/grafana-dashboards/master/assets/sample2.png) 29 | ![img](https://raw.githubusercontent.com/percona/grafana-dashboards/master/assets/sample5.png) 30 | ![img](https://raw.githubusercontent.com/percona/grafana-dashboards/master/assets/sample6.png) 31 | 32 | ### Setup instructions 33 | 34 | #### Import dashboards 35 | 36 | Enable the plugin and import the necessary dashboards from plugin's Dashboards tab. 37 | 38 | #### Add Prometheus datasource 39 | 40 | The datasource should be named `Prometheus` so it is automatically picked up by the graphs. 41 | 42 | #### Prometheus configuration 43 | 44 | The dashboards use `alias` label to work with individual hosts. 45 | Ensure you have `alias` defined for each of your targets. 46 | For example, if you want to monitor `192.168.1.7` the excerpt of the config will be look like this: 47 | 48 | scrape_configs: 49 | - job_name: prometheus 50 | target_groups: 51 | - targets: ['localhost:9090'] 52 | 53 | - job_name: linux 54 | target_groups: 55 | - targets: ['192.168.1.7:9100'] 56 | labels: 57 | alias: db1 58 | 59 | - job_name: mysql 60 | target_groups: 61 | - targets: ['192.168.1.7:9104'] 62 | labels: 63 | alias: db1 64 | 65 | Note, adding a new label to the existing Prometheus instance will introduce a mess with the time-series. 66 | So it is recommended to start using `alias` from scratch. 67 | 68 | How you name jobs is not important. However, "Prometheus" dashboard assumes the job name is `prometheus`. 69 | 70 | Also it is assumed that the exporters are run at least with this minimal set of options: 71 | 72 | * node_exporter: `-collectors.enabled="diskstats,filesystem,loadavg,meminfo,netdev,stat,time,uname,vmstat"` 73 | * mysqld_exporter: `-collect.binlog_size=true -collect.info_schema.processlist=true` 74 | 75 | ##### Apply Grafana patch 76 | 77 | It is important to apply the following minor patch on your Grafana installation in order to use the interval template variable to get the good zoomable graphs. The fix is simply to allow variable in Step field of graph editor page. For more information, take a look at [PR#3757](https://github.com/grafana/grafana/pull/3757) and [PR#4257](https://github.com/grafana/grafana/pull/4257). 78 | 79 | Run those 2 commands on top of your Grafana installation: 80 | 81 | sed -i 's/expr=\(.\)\.replace(\(.\)\.expr,\(.\)\.scopedVars\(.*\)var \(.\)=\(.\)\.interval/expr=\1.replace(\2.expr,\3.scopedVars\4var \5=\1.replace(\6.interval, \3.scopedVars)/' /usr/share/grafana/public/app/plugins/datasource/prometheus/datasource.js 82 | 83 | sed -i 's/,range_input/.replace(\/"{\/g,"\\"").replace(\/}"\/g,"\\""),range_input/; s/step_input:""/step_input:this.target.step/' /usr/share/grafana/public/app/plugins/datasource/prometheus/query_ctrl.js 84 | 85 | Those changes are idemportent and do not break anything. No restart required. 86 | 87 | #### Changelog 88 | 89 | ##### v1.0.0 90 | - Initial version. 91 | -------------------------------------------------------------------------------- /dist/components/config.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/grafana-app/e42fbf6bf3c15fa745bd13d9ca75dd1a101268aa/dist/components/config.html -------------------------------------------------------------------------------- /dist/components/config.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 8 | 9 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 10 | 11 | var PerconaAppConfigCtrl = exports.PerconaAppConfigCtrl = function () { 12 | function PerconaAppConfigCtrl() { 13 | _classCallCheck(this, PerconaAppConfigCtrl); 14 | 15 | this.appEditCtrl.setPostUpdateHook(this.postUpdate.bind(this)); 16 | } 17 | 18 | _createClass(PerconaAppConfigCtrl, [{ 19 | key: "postUpdate", 20 | value: function postUpdate() { 21 | if (!this.appModel.enabled) { 22 | return Promise.resolve(); 23 | } 24 | 25 | return this.appEditCtrl.importDashboards().then(function () { 26 | return { 27 | url: "/dashboard/db/summary-dashboard", 28 | message: "Percona app installed!" 29 | }; 30 | }); 31 | } 32 | }]); 33 | 34 | return PerconaAppConfigCtrl; 35 | }(); 36 | 37 | PerconaAppConfigCtrl.templateUrl = 'components/config.html'; 38 | //# sourceMappingURL=config.js.map 39 | -------------------------------------------------------------------------------- /dist/components/config.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/components/config.js"],"names":[],"mappings":";;;;;;;;;;IACa,oB,WAAA,oB;AACX,kCAAc;AAAA;;AACZ,SAAK,WAAL,CAAiB,iBAAjB,CAAmC,KAAK,UAAL,CAAgB,IAAhB,CAAqB,IAArB,CAAnC;AACD;;;;iCAEY;AACX,UAAI,CAAC,KAAK,QAAL,CAAc,OAAnB,EAA4B;AAC1B,eAAO,QAAQ,OAAR,EAAP;AACD;;AAED,aAAO,KAAK,WAAL,CAAiB,gBAAjB,GAAoC,IAApC,CAAyC,YAAM;AACpD,eAAO;AACL,eAAK,iCADA;AAEL,mBAAS;AAFJ,SAAP;AAID,OALM,CAAP;AAMD;;;;;;AAGH,qBAAqB,WAArB,GAAmC,wBAAnC","file":"config.js","sourcesContent":["\nexport class PerconaAppConfigCtrl {\n constructor() {\n this.appEditCtrl.setPostUpdateHook(this.postUpdate.bind(this));\n }\n\n postUpdate() {\n if (!this.appModel.enabled) {\n return Promise.resolve();\n }\n\n return this.appEditCtrl.importDashboards().then(() => {\n return {\n url: \"/dashboard/db/summary-dashboard\",\n message: \"Percona app installed!\"\n };\n });\n }\n}\n\nPerconaAppConfigCtrl.templateUrl = 'components/config.html';\n"]} -------------------------------------------------------------------------------- /dist/dashboards/Disk_Space.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [] 4 | }, 5 | "editable": true, 6 | "hideControls": false, 7 | "id": null, 8 | "links": [], 9 | "originalTitle": "Disk Space", 10 | "refresh": false, 11 | "rows": [ 12 | { 13 | "collapse": false, 14 | "editable": true, 15 | "height": "250px", 16 | "panels": [ 17 | { 18 | "content": "`Disk Space` - Amount of disk space used and available on various mount points. Running out of disk space on OS volume, database volume or volume used for temporary space can cause downtime. Some storage may also have reduced performance when small amount of space is available.\n", 19 | "datasource": "Prometheus", 20 | "editable": true, 21 | "error": false, 22 | "height": "50px", 23 | "id": 7, 24 | "isNew": true, 25 | "links": [], 26 | "mode": "markdown", 27 | "span": 12, 28 | "style": {}, 29 | "title": "", 30 | "transparent": true, 31 | "type": "text" 32 | }, 33 | { 34 | "aliasColors": { 35 | "Free (device /dev/xvda1, ext4)": "#82B5D8", 36 | "Used (device /dev/xvda1, ext4)": "#BA43A9" 37 | }, 38 | "bars": false, 39 | "datasource": "Prometheus", 40 | "decimals": 2, 41 | "editable": true, 42 | "error": false, 43 | "fill": 6, 44 | "grid": { 45 | "threshold1": null, 46 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 47 | "threshold2": null, 48 | "threshold2Color": "rgba(234, 112, 112, 0.22)", 49 | "thresholdLine": false 50 | }, 51 | "id": 4, 52 | "legend": { 53 | "alignAsTable": true, 54 | "avg": true, 55 | "current": false, 56 | "hideEmpty": false, 57 | "max": true, 58 | "min": true, 59 | "rightSide": false, 60 | "show": true, 61 | "total": false, 62 | "values": true 63 | }, 64 | "lines": true, 65 | "linewidth": 2, 66 | "links": [], 67 | "minSpan": 6, 68 | "nullPointMode": "null", 69 | "percentage": false, 70 | "pointradius": 5, 71 | "points": false, 72 | "renderer": "flot", 73 | "repeat": "mountpoint", 74 | "seriesOverrides": [ 75 | { 76 | "alias": "/Used/", 77 | "color": "#99440A" 78 | }, 79 | { 80 | "alias": "/Free/", 81 | "color": "#EF843C" 82 | } 83 | ], 84 | "span": 6, 85 | "stack": true, 86 | "steppedLine": false, 87 | "targets": [ 88 | { 89 | "calculatedInterval": "2m", 90 | "datasourceErrors": {}, 91 | "errors": {}, 92 | "expr": "node_filesystem_size{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"} - node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 93 | "hide": false, 94 | "interval": "$interval", 95 | "intervalFactor": 1, 96 | "legendFormat": "Used (device {{ device }}, {{ fstype }})", 97 | "metric": "", 98 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_size%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D-node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 99 | "refId": "B", 100 | "step": 300 101 | }, 102 | { 103 | "calculatedInterval": "2m", 104 | "datasourceErrors": {}, 105 | "errors": {}, 106 | "expr": "node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 107 | "interval": "$interval", 108 | "intervalFactor": 1, 109 | "legendFormat": "Free (device {{ device }}, {{ fstype }})", 110 | "metric": "", 111 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 112 | "refId": "A", 113 | "step": 300, 114 | "target": "" 115 | } 116 | ], 117 | "timeFrom": null, 118 | "timeShift": null, 119 | "title": "Mountpoint $mountpoint", 120 | "tooltip": { 121 | "msResolution": false, 122 | "shared": true, 123 | "value_type": "individual" 124 | }, 125 | "transparent": false, 126 | "type": "graph", 127 | "xaxis": { 128 | "show": true 129 | }, 130 | "yaxes": [ 131 | { 132 | "format": "bytes", 133 | "label": "", 134 | "logBase": 1, 135 | "max": null, 136 | "min": 0, 137 | "show": true 138 | }, 139 | { 140 | "format": "bytes", 141 | "logBase": 1, 142 | "max": null, 143 | "min": null, 144 | "show": true 145 | } 146 | ] 147 | }, 148 | { 149 | "aliasColors": { 150 | "Free (device /dev/xvda1, ext4)": "#82B5D8", 151 | "Used (device /dev/xvda1, ext4)": "#BA43A9" 152 | }, 153 | "bars": false, 154 | "datasource": "Prometheus", 155 | "decimals": 2, 156 | "editable": true, 157 | "error": false, 158 | "fill": 6, 159 | "grid": { 160 | "threshold1": null, 161 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 162 | "threshold2": null, 163 | "threshold2Color": "rgba(234, 112, 112, 0.22)", 164 | "thresholdLine": false 165 | }, 166 | "id": 8, 167 | "legend": { 168 | "alignAsTable": true, 169 | "avg": true, 170 | "current": false, 171 | "hideEmpty": false, 172 | "max": true, 173 | "min": true, 174 | "rightSide": false, 175 | "show": true, 176 | "total": false, 177 | "values": true 178 | }, 179 | "lines": true, 180 | "linewidth": 2, 181 | "links": [], 182 | "minSpan": 6, 183 | "nullPointMode": "null", 184 | "percentage": false, 185 | "pointradius": 5, 186 | "points": false, 187 | "renderer": "flot", 188 | "repeat": null, 189 | "repeatIteration": 1463692484622, 190 | "repeatPanelId": 4, 191 | "seriesOverrides": [ 192 | { 193 | "alias": "/Used/", 194 | "color": "#99440A" 195 | }, 196 | { 197 | "alias": "/Free/", 198 | "color": "#EF843C" 199 | } 200 | ], 201 | "span": 6, 202 | "stack": true, 203 | "steppedLine": false, 204 | "targets": [ 205 | { 206 | "calculatedInterval": "2m", 207 | "datasourceErrors": {}, 208 | "errors": {}, 209 | "expr": "node_filesystem_size{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"} - node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 210 | "hide": false, 211 | "interval": "$interval", 212 | "intervalFactor": 1, 213 | "legendFormat": "Used (device {{ device }}, {{ fstype }})", 214 | "metric": "", 215 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_size%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D-node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 216 | "refId": "B", 217 | "step": 300 218 | }, 219 | { 220 | "calculatedInterval": "2m", 221 | "datasourceErrors": {}, 222 | "errors": {}, 223 | "expr": "node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 224 | "interval": "$interval", 225 | "intervalFactor": 1, 226 | "legendFormat": "Free (device {{ device }}, {{ fstype }})", 227 | "metric": "", 228 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 229 | "refId": "A", 230 | "step": 300, 231 | "target": "" 232 | } 233 | ], 234 | "timeFrom": null, 235 | "timeShift": null, 236 | "title": "Mountpoint $mountpoint", 237 | "tooltip": { 238 | "msResolution": false, 239 | "shared": true, 240 | "value_type": "individual" 241 | }, 242 | "transparent": false, 243 | "type": "graph", 244 | "xaxis": { 245 | "show": true 246 | }, 247 | "yaxes": [ 248 | { 249 | "format": "bytes", 250 | "label": "", 251 | "logBase": 1, 252 | "max": null, 253 | "min": 0, 254 | "show": true 255 | }, 256 | { 257 | "format": "bytes", 258 | "logBase": 1, 259 | "max": null, 260 | "min": null, 261 | "show": true 262 | } 263 | ] 264 | }, 265 | { 266 | "aliasColors": { 267 | "Free (device /dev/xvda1, ext4)": "#82B5D8", 268 | "Used (device /dev/xvda1, ext4)": "#BA43A9" 269 | }, 270 | "bars": false, 271 | "datasource": "Prometheus", 272 | "decimals": 2, 273 | "editable": true, 274 | "error": false, 275 | "fill": 6, 276 | "grid": { 277 | "threshold1": null, 278 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 279 | "threshold2": null, 280 | "threshold2Color": "rgba(234, 112, 112, 0.22)", 281 | "thresholdLine": false 282 | }, 283 | "id": 9, 284 | "legend": { 285 | "alignAsTable": true, 286 | "avg": true, 287 | "current": false, 288 | "hideEmpty": false, 289 | "max": true, 290 | "min": true, 291 | "rightSide": false, 292 | "show": true, 293 | "total": false, 294 | "values": true 295 | }, 296 | "lines": true, 297 | "linewidth": 2, 298 | "links": [], 299 | "minSpan": 6, 300 | "nullPointMode": "null", 301 | "percentage": false, 302 | "pointradius": 5, 303 | "points": false, 304 | "renderer": "flot", 305 | "repeat": null, 306 | "repeatIteration": 1463692484622, 307 | "repeatPanelId": 4, 308 | "seriesOverrides": [ 309 | { 310 | "alias": "/Used/", 311 | "color": "#99440A" 312 | }, 313 | { 314 | "alias": "/Free/", 315 | "color": "#EF843C" 316 | } 317 | ], 318 | "span": 6, 319 | "stack": true, 320 | "steppedLine": false, 321 | "targets": [ 322 | { 323 | "calculatedInterval": "2m", 324 | "datasourceErrors": {}, 325 | "errors": {}, 326 | "expr": "node_filesystem_size{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"} - node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 327 | "hide": false, 328 | "interval": "$interval", 329 | "intervalFactor": 1, 330 | "legendFormat": "Used (device {{ device }}, {{ fstype }})", 331 | "metric": "", 332 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_size%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D-node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 333 | "refId": "B", 334 | "step": 300 335 | }, 336 | { 337 | "calculatedInterval": "2m", 338 | "datasourceErrors": {}, 339 | "errors": {}, 340 | "expr": "node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 341 | "interval": "$interval", 342 | "intervalFactor": 1, 343 | "legendFormat": "Free (device {{ device }}, {{ fstype }})", 344 | "metric": "", 345 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 346 | "refId": "A", 347 | "step": 300, 348 | "target": "" 349 | } 350 | ], 351 | "timeFrom": null, 352 | "timeShift": null, 353 | "title": "Mountpoint $mountpoint", 354 | "tooltip": { 355 | "msResolution": false, 356 | "shared": true, 357 | "value_type": "individual" 358 | }, 359 | "transparent": false, 360 | "type": "graph", 361 | "xaxis": { 362 | "show": true 363 | }, 364 | "yaxes": [ 365 | { 366 | "format": "bytes", 367 | "label": "", 368 | "logBase": 1, 369 | "max": null, 370 | "min": 0, 371 | "show": true 372 | }, 373 | { 374 | "format": "bytes", 375 | "logBase": 1, 376 | "max": null, 377 | "min": null, 378 | "show": true 379 | } 380 | ] 381 | } 382 | ], 383 | "repeat": null, 384 | "scopedVars": { 385 | "host": { 386 | "selected": true, 387 | "text": "cdba", 388 | "value": "cdba" 389 | } 390 | }, 391 | "showTitle": false, 392 | "title": "Disk Space" 393 | } 394 | ], 395 | "schemaVersion": 12, 396 | "sharedCrosshair": true, 397 | "style": "dark", 398 | "tags": [ 399 | "OS", 400 | "Percona" 401 | ], 402 | "templating": { 403 | "list": [ 404 | { 405 | "allFormat": "glob", 406 | "auto": true, 407 | "auto_count": 200, 408 | "auto_min": "1s", 409 | "current": { 410 | "text": "auto", 411 | "value": "$__auto_interval" 412 | }, 413 | "datasource": "Prometheus", 414 | "hide": 0, 415 | "includeAll": false, 416 | "label": "Interval", 417 | "multi": false, 418 | "multiFormat": "glob", 419 | "name": "interval", 420 | "options": [ 421 | { 422 | "selected": true, 423 | "text": "auto", 424 | "value": "$__auto_interval" 425 | }, 426 | { 427 | "selected": false, 428 | "text": "1s", 429 | "value": "1s" 430 | }, 431 | { 432 | "selected": false, 433 | "text": "5s", 434 | "value": "5s" 435 | }, 436 | { 437 | "selected": false, 438 | "text": "1m", 439 | "value": "1m" 440 | }, 441 | { 442 | "selected": false, 443 | "text": "5m", 444 | "value": "5m" 445 | }, 446 | { 447 | "selected": false, 448 | "text": "1h", 449 | "value": "1h" 450 | }, 451 | { 452 | "selected": false, 453 | "text": "6h", 454 | "value": "6h" 455 | }, 456 | { 457 | "selected": false, 458 | "text": "1d", 459 | "value": "1d" 460 | } 461 | ], 462 | "query": "1s,5s,1m,5m,1h,6h,1d", 463 | "refresh": 0, 464 | "type": "interval" 465 | }, 466 | { 467 | "allFormat": "glob", 468 | "datasource": "Prometheus", 469 | "hide": 0, 470 | "includeAll": false, 471 | "label": "Host", 472 | "multi": false, 473 | "multiFormat": "regex values", 474 | "name": "host", 475 | "query": "label_values(alias)", 476 | "refresh": 1, 477 | "refresh_on_load": false, 478 | "regex": "", 479 | "tagValuesQuery": "alias", 480 | "tagsQuery": "up", 481 | "type": "query", 482 | "useTags": false 483 | }, 484 | { 485 | "allFormat": "wildcard", 486 | "current": { 487 | "text": "All", 488 | "value": "$__all" 489 | }, 490 | "datasource": "Prometheus", 491 | "hide": 0, 492 | "hideLabel": false, 493 | "includeAll": true, 494 | "label": "Mountpoint", 495 | "multi": false, 496 | "multiFormat": "regex values", 497 | "name": "mountpoint", 498 | "options": [ 499 | { 500 | "selected": true, 501 | "text": "All", 502 | "value": "$__all" 503 | }, 504 | { 505 | "selected": false, 506 | "text": "/", 507 | "value": "/" 508 | }, 509 | { 510 | "selected": false, 511 | "text": "/db", 512 | "value": "/db" 513 | }, 514 | { 515 | "selected": false, 516 | "text": "/media/ephemeral0", 517 | "value": "/media/ephemeral0" 518 | } 519 | ], 520 | "query": "label_values(node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}, mountpoint)", 521 | "refresh": 1, 522 | "refresh_on_load": false, 523 | "regex": "", 524 | "tagValuesQuery": "alias", 525 | "tagsQuery": "up", 526 | "type": "query", 527 | "useTags": false 528 | } 529 | ] 530 | }, 531 | "time": { 532 | "from": "now-12h", 533 | "to": "now" 534 | }, 535 | "timepicker": { 536 | "collapse": false, 537 | "enable": true, 538 | "notice": false, 539 | "now": true, 540 | "refresh_intervals": [ 541 | "5s", 542 | "10s", 543 | "30s", 544 | "1m", 545 | "5m", 546 | "15m", 547 | "30m", 548 | "1h", 549 | "2h", 550 | "1d" 551 | ], 552 | "status": "Stable", 553 | "time_options": [ 554 | "5m", 555 | "15m", 556 | "1h", 557 | "6h", 558 | "12h", 559 | "24h", 560 | "2d", 561 | "7d", 562 | "30d" 563 | ], 564 | "type": "timepicker" 565 | }, 566 | "timezone": "browser", 567 | "title": "Disk Space | Percona App", 568 | "version": 0 569 | } -------------------------------------------------------------------------------- /dist/dashboards/MySQL_MyISAM_Metrics.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [] 4 | }, 5 | "editable": true, 6 | "hideControls": false, 7 | "id": null, 8 | "links": [], 9 | "originalTitle": "MySQL MyISAM Metrics", 10 | "refresh": false, 11 | "rows": [ 12 | { 13 | "collapse": false, 14 | "editable": true, 15 | "height": "270px", 16 | "panels": [ 17 | { 18 | "aliasColors": {}, 19 | "bars": false, 20 | "datasource": "Prometheus", 21 | "decimals": 2, 22 | "editable": true, 23 | "error": false, 24 | "fill": 2, 25 | "grid": { 26 | "threshold1": null, 27 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 28 | "threshold2": null, 29 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 30 | }, 31 | "id": 3, 32 | "legend": { 33 | "alignAsTable": true, 34 | "avg": true, 35 | "current": false, 36 | "max": true, 37 | "min": true, 38 | "rightSide": false, 39 | "show": true, 40 | "total": false, 41 | "values": true 42 | }, 43 | "lines": true, 44 | "linewidth": 2, 45 | "links": [], 46 | "nullPointMode": "null", 47 | "percentage": false, 48 | "pointradius": 5, 49 | "points": false, 50 | "renderer": "flot", 51 | "seriesOverrides": [ 52 | { 53 | "alias": "Key Reads", 54 | "fill": 0 55 | }, 56 | { 57 | "alias": "Key Writes", 58 | "fill": 0, 59 | "transform": "negative-Y" 60 | }, 61 | { 62 | "alias": "Key Write Requests", 63 | "transform": "negative-Y" 64 | } 65 | ], 66 | "span": 6, 67 | "stack": false, 68 | "steppedLine": false, 69 | "targets": [ 70 | { 71 | "calculatedInterval": "2m", 72 | "datasourceErrors": {}, 73 | "errors": {}, 74 | "expr": "rate(mysql_global_status_key_reads{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_reads{alias=\"$host\"}[5m])", 75 | "interval": "$interval", 76 | "intervalFactor": 1, 77 | "legendFormat": "Key Reads", 78 | "metric": "", 79 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 80 | "refId": "D", 81 | "step": 300 82 | }, 83 | { 84 | "calculatedInterval": "2m", 85 | "datasourceErrors": {}, 86 | "errors": {}, 87 | "expr": "rate(mysql_global_status_key_read_requests{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_read_requests{alias=\"$host\"}[5m])", 88 | "interval": "$interval", 89 | "intervalFactor": 1, 90 | "legendFormat": "Key Read Requests", 91 | "metric": "", 92 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 93 | "refId": "A", 94 | "step": 300 95 | }, 96 | { 97 | "calculatedInterval": "2m", 98 | "datasourceErrors": {}, 99 | "errors": {}, 100 | "expr": "rate(mysql_global_status_key_writes{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_writes{alias=\"$host\"}[5m])", 101 | "interval": "$interval", 102 | "intervalFactor": 1, 103 | "legendFormat": "Key Writes", 104 | "metric": "", 105 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 106 | "refId": "B", 107 | "step": 300 108 | }, 109 | { 110 | "calculatedInterval": "2m", 111 | "datasourceErrors": {}, 112 | "errors": {}, 113 | "expr": "rate(mysql_global_status_key_write_requests{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_write_requests{alias=\"$host\"}[5m])", 114 | "interval": "$interval", 115 | "intervalFactor": 1, 116 | "legendFormat": "Key Write Requests", 117 | "metric": "", 118 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 119 | "refId": "C", 120 | "step": 300 121 | } 122 | ], 123 | "timeFrom": null, 124 | "timeShift": null, 125 | "title": "MyISAM Indexes", 126 | "tooltip": { 127 | "msResolution": false, 128 | "shared": true, 129 | "value_type": "individual" 130 | }, 131 | "type": "graph", 132 | "xaxis": { 133 | "show": true 134 | }, 135 | "yaxes": [ 136 | { 137 | "format": "short", 138 | "logBase": 1, 139 | "max": null, 140 | "min": 0, 141 | "show": true 142 | }, 143 | { 144 | "format": "short", 145 | "logBase": 1, 146 | "max": null, 147 | "min": 0, 148 | "show": true 149 | } 150 | ] 151 | }, 152 | { 153 | "aliasColors": {}, 154 | "bars": false, 155 | "datasource": "Prometheus", 156 | "decimals": 2, 157 | "editable": true, 158 | "error": false, 159 | "fill": 6, 160 | "grid": { 161 | "threshold1": null, 162 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 163 | "threshold2": null, 164 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 165 | }, 166 | "id": 21, 167 | "legend": { 168 | "alignAsTable": true, 169 | "avg": true, 170 | "current": false, 171 | "max": true, 172 | "min": true, 173 | "rightSide": false, 174 | "show": true, 175 | "total": false, 176 | "values": true 177 | }, 178 | "lines": true, 179 | "linewidth": 2, 180 | "links": [], 181 | "nullPointMode": "null", 182 | "percentage": false, 183 | "pointradius": 5, 184 | "points": false, 185 | "renderer": "flot", 186 | "seriesOverrides": [ 187 | { 188 | "alias": "Key Blocks Not Flushed", 189 | "fill": 0 190 | } 191 | ], 192 | "span": 6, 193 | "stack": false, 194 | "steppedLine": false, 195 | "targets": [ 196 | { 197 | "calculatedInterval": "2m", 198 | "datasourceErrors": {}, 199 | "errors": {}, 200 | "expr": "mysql_global_variables_key_buffer_size{alias=\"$host\"}", 201 | "interval": "$interval", 202 | "intervalFactor": 1, 203 | "legendFormat": "Key Buffer Size", 204 | "metric": "", 205 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22rate(mysql_global_status_innodb_pages_written%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D)%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-8-20%2016%3A2%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 206 | "refId": "C", 207 | "step": 300 208 | }, 209 | { 210 | "calculatedInterval": "2m", 211 | "datasourceErrors": {}, 212 | "errors": {}, 213 | "expr": "mysql_global_variables_key_buffer_size{alias=\"$host\"} - mysql_global_status_key_blocks_unused{alias=\"$host\"} * mysql_global_variables_key_cache_block_size{alias=\"$host\"}", 214 | "interval": "$interval", 215 | "intervalFactor": 1, 216 | "legendFormat": "Key Blocks Used", 217 | "metric": "", 218 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22rate(mysql_global_status_innodb_pages_written%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D)%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-8-20%2016%3A2%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 219 | "refId": "B", 220 | "step": 300 221 | }, 222 | { 223 | "calculatedInterval": "2m", 224 | "datasourceErrors": {}, 225 | "errors": {}, 226 | "expr": "mysql_global_status_key_blocks_not_flushed{alias=\"$host\"} * mysql_global_variables_key_cache_block_size{alias=\"$host\"}", 227 | "interval": "$interval", 228 | "intervalFactor": 1, 229 | "legendFormat": "Key Blocks Not Flushed", 230 | "metric": "", 231 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22rate(mysql_global_status_innodb_pages_written%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D)%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-8-20%2016%3A2%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 232 | "refId": "A", 233 | "step": 300 234 | } 235 | ], 236 | "timeFrom": null, 237 | "timeShift": null, 238 | "title": "MyISAM Key Cache", 239 | "tooltip": { 240 | "msResolution": false, 241 | "shared": true, 242 | "value_type": "individual" 243 | }, 244 | "type": "graph", 245 | "xaxis": { 246 | "show": true 247 | }, 248 | "yaxes": [ 249 | { 250 | "format": "short", 251 | "logBase": 1, 252 | "max": null, 253 | "min": 0, 254 | "show": true 255 | }, 256 | { 257 | "format": "short", 258 | "logBase": 1, 259 | "max": null, 260 | "min": 0, 261 | "show": true 262 | } 263 | ] 264 | }, 265 | { 266 | "aliasColors": {}, 267 | "bars": false, 268 | "datasource": "Prometheus", 269 | "decimals": 2, 270 | "editable": true, 271 | "error": false, 272 | "fill": 2, 273 | "grid": { 274 | "threshold1": null, 275 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 276 | "threshold2": null, 277 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 278 | }, 279 | "id": 22, 280 | "legend": { 281 | "alignAsTable": true, 282 | "avg": true, 283 | "current": false, 284 | "max": true, 285 | "min": true, 286 | "rightSide": false, 287 | "show": true, 288 | "total": false, 289 | "values": true 290 | }, 291 | "lines": true, 292 | "linewidth": 2, 293 | "links": [], 294 | "nullPointMode": "null", 295 | "percentage": false, 296 | "pointradius": 5, 297 | "points": false, 298 | "renderer": "flot", 299 | "seriesOverrides": [ 300 | { 301 | "alias": "Key Reads", 302 | "fill": 0 303 | }, 304 | { 305 | "alias": "Key Writes", 306 | "fill": 0, 307 | "transform": "negative-Y" 308 | }, 309 | { 310 | "alias": "Key Write Requests", 311 | "transform": "negative-Y" 312 | } 313 | ], 314 | "span": 7, 315 | "stack": false, 316 | "steppedLine": false, 317 | "targets": [ 318 | { 319 | "calculatedInterval": "2m", 320 | "datasourceErrors": {}, 321 | "errors": {}, 322 | "expr": "rate(mysql_global_status_key_reads{alias=\"$host\"}[$interval]) / rate(mysql_global_status_key_read_requests{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_reads{alias=\"$host\"}[5m]) / irate(mysql_global_status_key_read_requests{alias=\"$host\"}[5m])", 323 | "interval": "$interval", 324 | "intervalFactor": 1, 325 | "legendFormat": "Key Read Ratio", 326 | "metric": "", 327 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 328 | "refId": "D", 329 | "step": 300 330 | }, 331 | { 332 | "calculatedInterval": "2m", 333 | "datasourceErrors": {}, 334 | "errors": {}, 335 | "expr": "rate(mysql_global_status_key_writes{alias=\"$host\"}[$interval]) / rate(mysql_global_status_key_write_requests{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_writes{alias=\"$host\"}[5m]) / irate(mysql_global_status_key_write_requests{alias=\"$host\"}[5m])", 336 | "interval": "$interval", 337 | "intervalFactor": 1, 338 | "legendFormat": "Key Write Ratio", 339 | "metric": "", 340 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 341 | "refId": "A", 342 | "step": 300 343 | } 344 | ], 345 | "timeFrom": null, 346 | "timeShift": null, 347 | "title": "MyISAM Key Buffer Performance", 348 | "tooltip": { 349 | "msResolution": false, 350 | "shared": true, 351 | "value_type": "individual" 352 | }, 353 | "type": "graph", 354 | "xaxis": { 355 | "show": true 356 | }, 357 | "yaxes": [ 358 | { 359 | "format": "short", 360 | "logBase": 1, 361 | "max": null, 362 | "min": 0, 363 | "show": true 364 | }, 365 | { 366 | "format": "short", 367 | "logBase": 1, 368 | "max": null, 369 | "min": 0, 370 | "show": true 371 | } 372 | ] 373 | }, 374 | { 375 | "content": "The `Key_reads/Key_read_requests` ratio should normally be less than 0.01.\n\nThe `Key_writes/Key_write_requests` ratio is usually near 1 if you are using mostly updates and deletes, but might be much smaller if you tend to do updates that affect many rows at the same time or if you are using the `DELAY_KEY_WRITE` table option.", 376 | "datasource": "Prometheus", 377 | "editable": true, 378 | "error": false, 379 | "height": "", 380 | "id": 23, 381 | "links": [], 382 | "mode": "markdown", 383 | "span": 5, 384 | "style": {}, 385 | "title": "", 386 | "type": "text" 387 | } 388 | ], 389 | "showTitle": false, 390 | "title": "InnoDB Stats" 391 | } 392 | ], 393 | "schemaVersion": 12, 394 | "sharedCrosshair": true, 395 | "style": "dark", 396 | "tags": [ 397 | "Percona", 398 | "MySQL" 399 | ], 400 | "templating": { 401 | "list": [ 402 | { 403 | "allFormat": "glob", 404 | "auto": true, 405 | "auto_count": 200, 406 | "auto_min": "1s", 407 | "current": { 408 | "text": "auto", 409 | "value": "$__auto_interval" 410 | }, 411 | "datasource": "Prometheus", 412 | "hide": 0, 413 | "includeAll": false, 414 | "label": "Interval", 415 | "multi": false, 416 | "multiFormat": "glob", 417 | "name": "interval", 418 | "options": [ 419 | { 420 | "selected": true, 421 | "text": "auto", 422 | "value": "$__auto_interval" 423 | }, 424 | { 425 | "selected": false, 426 | "text": "1s", 427 | "value": "1s" 428 | }, 429 | { 430 | "selected": false, 431 | "text": "5s", 432 | "value": "5s" 433 | }, 434 | { 435 | "selected": false, 436 | "text": "1m", 437 | "value": "1m" 438 | }, 439 | { 440 | "selected": false, 441 | "text": "5m", 442 | "value": "5m" 443 | }, 444 | { 445 | "selected": false, 446 | "text": "1h", 447 | "value": "1h" 448 | }, 449 | { 450 | "selected": false, 451 | "text": "6h", 452 | "value": "6h" 453 | }, 454 | { 455 | "selected": false, 456 | "text": "1d", 457 | "value": "1d" 458 | } 459 | ], 460 | "query": "1s,5s,1m,5m,1h,6h,1d", 461 | "refresh": 0, 462 | "type": "interval" 463 | }, 464 | { 465 | "allFormat": "glob", 466 | "datasource": "Prometheus", 467 | "hide": 0, 468 | "includeAll": false, 469 | "label": "Host", 470 | "multi": false, 471 | "multiFormat": "regex values", 472 | "name": "host", 473 | "query": "label_values(alias)", 474 | "refresh": 1, 475 | "refresh_on_load": false, 476 | "regex": "", 477 | "type": "query" 478 | } 479 | ] 480 | }, 481 | "time": { 482 | "from": "now-12h", 483 | "to": "now" 484 | }, 485 | "timepicker": { 486 | "collapse": false, 487 | "enable": true, 488 | "notice": false, 489 | "now": true, 490 | "refresh_intervals": [ 491 | "5s", 492 | "10s", 493 | "30s", 494 | "1m", 495 | "5m", 496 | "15m", 497 | "30m", 498 | "1h", 499 | "2h", 500 | "1d" 501 | ], 502 | "status": "Stable", 503 | "time_options": [ 504 | "5m", 505 | "15m", 506 | "1h", 507 | "6h", 508 | "12h", 509 | "24h", 510 | "2d", 511 | "7d", 512 | "30d" 513 | ], 514 | "type": "timepicker" 515 | }, 516 | "timezone": "browser", 517 | "title": "MySQL MyISAM Metrics | Percona App", 518 | "version": 0 519 | } -------------------------------------------------------------------------------- /dist/dashboards/MySQL_Query_Response_Time.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [] 4 | }, 5 | "editable": true, 6 | "hideControls": false, 7 | "id": null, 8 | "links": [], 9 | "originalTitle": "MySQL Query Response Time", 10 | "refresh": false, 11 | "rows": [ 12 | { 13 | "collapse": false, 14 | "editable": true, 15 | "height": "250px", 16 | "panels": [ 17 | { 18 | "aliasColors": {}, 19 | "bars": false, 20 | "datasource": "Prometheus", 21 | "decimals": 2, 22 | "editable": true, 23 | "error": false, 24 | "fill": 2, 25 | "grid": { 26 | "threshold1": null, 27 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 28 | "threshold2": null, 29 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 30 | }, 31 | "id": 6, 32 | "legend": { 33 | "alignAsTable": true, 34 | "avg": true, 35 | "current": false, 36 | "hideZero": false, 37 | "max": true, 38 | "min": true, 39 | "rightSide": false, 40 | "show": true, 41 | "total": false, 42 | "values": true 43 | }, 44 | "lines": true, 45 | "linewidth": 2, 46 | "links": [], 47 | "nullPointMode": "null", 48 | "percentage": false, 49 | "pointradius": 5, 50 | "points": false, 51 | "renderer": "flot", 52 | "seriesOverrides": [], 53 | "span": 12, 54 | "stack": false, 55 | "steppedLine": false, 56 | "targets": [ 57 | { 58 | "calculatedInterval": "2m", 59 | "datasourceErrors": {}, 60 | "errors": {}, 61 | "expr": "rate(mysql_info_schema_query_response_time_count_sum{alias=\"$host\"}[$interval]) / on (alias) rate(mysql_info_schema_query_response_time_count_count{alias=\"$host\"}[$interval]) * 1000 or irate(mysql_info_schema_query_response_time_count_sum{alias=\"$host\"}[5m]) / on (alias) irate(mysql_info_schema_query_response_time_count_count{alias=\"$host\"}[5m]) * 1000", 62 | "hide": false, 63 | "interval": "$interval", 64 | "intervalFactor": 1, 65 | "legendFormat": "Time", 66 | "metric": "", 67 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22rate(mysql_global_status_connections%5B%24interval%5D)%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%207%3A46%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 68 | "refId": "B", 69 | "step": 300 70 | } 71 | ], 72 | "timeFrom": null, 73 | "timeShift": null, 74 | "title": "Average Query Response Time", 75 | "tooltip": { 76 | "msResolution": false, 77 | "shared": true, 78 | "value_type": "cumulative" 79 | }, 80 | "type": "graph", 81 | "xaxis": { 82 | "show": true 83 | }, 84 | "yaxes": [ 85 | { 86 | "format": "ms", 87 | "logBase": 1, 88 | "max": null, 89 | "min": 0, 90 | "show": true 91 | }, 92 | { 93 | "format": "short", 94 | "logBase": 1, 95 | "max": null, 96 | "min": 0, 97 | "show": true 98 | } 99 | ] 100 | }, 101 | { 102 | "aliasColors": {}, 103 | "bars": false, 104 | "datasource": "Prometheus", 105 | "decimals": 2, 106 | "editable": true, 107 | "error": false, 108 | "fill": 2, 109 | "grid": { 110 | "threshold1": null, 111 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 112 | "threshold2": null, 113 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 114 | }, 115 | "height": "", 116 | "hideTimeOverride": false, 117 | "id": 7, 118 | "isNew": true, 119 | "legend": { 120 | "alignAsTable": true, 121 | "avg": true, 122 | "current": false, 123 | "hideEmpty": false, 124 | "hideZero": false, 125 | "max": true, 126 | "min": true, 127 | "rightSide": true, 128 | "show": true, 129 | "sort": null, 130 | "sortDesc": null, 131 | "total": false, 132 | "values": true 133 | }, 134 | "lines": true, 135 | "linewidth": 2, 136 | "links": [], 137 | "nullPointMode": "null", 138 | "percentage": false, 139 | "pointradius": 5, 140 | "points": false, 141 | "renderer": "flot", 142 | "seriesOverrides": [ 143 | { 144 | "alias": "Queries >10s", 145 | "color": "#E24D42" 146 | }, 147 | { 148 | "alias": "Queries 1s - 10s", 149 | "color": "#EF843C" 150 | }, 151 | { 152 | "alias": "Queries 100ms - 1s", 153 | "color": "#EAB839" 154 | } 155 | ], 156 | "span": 12, 157 | "stack": false, 158 | "steppedLine": false, 159 | "targets": [ 160 | { 161 | "expr": "(rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='1'}[$interval]) - on (alias) rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='0.1'}[$interval])) or (irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='1'}[5m]) - on (alias) irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='0.1'}[5m]))", 162 | "hide": false, 163 | "interval": "$interval", 164 | "intervalFactor": 1, 165 | "legendFormat": "Queries 100ms - 1s", 166 | "metric": "", 167 | "refId": "A", 168 | "step": 300 169 | }, 170 | { 171 | "expr": "(rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='10'}[$interval]) - on (alias) rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='1'}[$interval])) or (irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='10'}[5m]) - on (alias) irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='1'}[5m]))", 172 | "interval": "$interval", 173 | "intervalFactor": 1, 174 | "legendFormat": "Queries 1s - 10s", 175 | "refId": "B", 176 | "step": 300 177 | }, 178 | { 179 | "expr": "(rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='100000'}[$interval]) - on (alias) rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='10'}[$interval])) or (irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='100000'}[5m]) - on (alias) irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='10'}[5m]))", 180 | "interval": "$interval", 181 | "intervalFactor": 1, 182 | "legendFormat": "Queries >10s", 183 | "refId": "C", 184 | "step": 300 185 | } 186 | ], 187 | "timeFrom": null, 188 | "timeShift": null, 189 | "title": "Query Response Time Distribution", 190 | "tooltip": { 191 | "msResolution": false, 192 | "shared": true, 193 | "value_type": "individual" 194 | }, 195 | "transparent": false, 196 | "type": "graph", 197 | "xaxis": { 198 | "show": true 199 | }, 200 | "yaxes": [ 201 | { 202 | "format": "ops", 203 | "logBase": 1, 204 | "max": null, 205 | "min": 0, 206 | "show": true 207 | }, 208 | { 209 | "format": "ops", 210 | "logBase": 1, 211 | "max": null, 212 | "min": 0, 213 | "show": true 214 | } 215 | ] 216 | }, 217 | { 218 | "content": "These graphs require additional options to be enabled for mysqld_exporter: `-collect.info_schema.query_response_time=true`\n\nAlso query response time distribution should be installed on MySQL via plugin and `query_response_time_stats` is `ON`.", 219 | "datasource": "Prometheus", 220 | "editable": true, 221 | "error": false, 222 | "height": "50px", 223 | "id": 5, 224 | "links": [], 225 | "mode": "markdown", 226 | "span": 12, 227 | "style": {}, 228 | "title": "", 229 | "transparent": true, 230 | "type": "text" 231 | } 232 | ], 233 | "showTitle": false, 234 | "title": "Query Response Time Distribution" 235 | } 236 | ], 237 | "schemaVersion": 12, 238 | "sharedCrosshair": true, 239 | "style": "dark", 240 | "tags": [ 241 | "Percona", 242 | "MySQL" 243 | ], 244 | "templating": { 245 | "list": [ 246 | { 247 | "allFormat": "glob", 248 | "auto": true, 249 | "auto_count": 200, 250 | "auto_min": "1s", 251 | "current": { 252 | "text": "auto", 253 | "value": "$__auto_interval" 254 | }, 255 | "datasource": "Prometheus", 256 | "hide": 0, 257 | "includeAll": false, 258 | "label": "Interval", 259 | "multi": false, 260 | "multiFormat": "glob", 261 | "name": "interval", 262 | "options": [ 263 | { 264 | "selected": true, 265 | "text": "auto", 266 | "value": "$__auto_interval" 267 | }, 268 | { 269 | "selected": false, 270 | "text": "1s", 271 | "value": "1s" 272 | }, 273 | { 274 | "selected": false, 275 | "text": "5s", 276 | "value": "5s" 277 | }, 278 | { 279 | "selected": false, 280 | "text": "1m", 281 | "value": "1m" 282 | }, 283 | { 284 | "selected": false, 285 | "text": "5m", 286 | "value": "5m" 287 | }, 288 | { 289 | "selected": false, 290 | "text": "1h", 291 | "value": "1h" 292 | }, 293 | { 294 | "selected": false, 295 | "text": "6h", 296 | "value": "6h" 297 | }, 298 | { 299 | "selected": false, 300 | "text": "1d", 301 | "value": "1d" 302 | } 303 | ], 304 | "query": "1s,5s,1m,5m,1h,6h,1d", 305 | "refresh": 0, 306 | "type": "interval" 307 | }, 308 | { 309 | "allFormat": "glob", 310 | "datasource": "Prometheus", 311 | "hide": 0, 312 | "includeAll": false, 313 | "label": "Host", 314 | "multi": false, 315 | "multiFormat": "glob", 316 | "name": "host", 317 | "query": "label_values(alias)", 318 | "refresh": 1, 319 | "type": "query" 320 | } 321 | ] 322 | }, 323 | "time": { 324 | "from": "now-12h", 325 | "to": "now" 326 | }, 327 | "timepicker": { 328 | "collapse": false, 329 | "enable": true, 330 | "notice": false, 331 | "now": true, 332 | "refresh_intervals": [ 333 | "5s", 334 | "10s", 335 | "30s", 336 | "1m", 337 | "5m", 338 | "15m", 339 | "30m", 340 | "1h", 341 | "2h", 342 | "1d" 343 | ], 344 | "status": "Stable", 345 | "time_options": [ 346 | "5m", 347 | "15m", 348 | "1h", 349 | "6h", 350 | "12h", 351 | "24h", 352 | "2d", 353 | "7d", 354 | "30d" 355 | ], 356 | "type": "timepicker" 357 | }, 358 | "timezone": "browser", 359 | "title": "MySQL Query Response Time | Percona App", 360 | "version": 0 361 | } -------------------------------------------------------------------------------- /dist/dashboards/MySQL_User_Statistics.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [] 4 | }, 5 | "editable": true, 6 | "hideControls": false, 7 | "id": null, 8 | "links": [], 9 | "originalTitle": "MySQL User Statistics", 10 | "refresh": false, 11 | "rows": [ 12 | { 13 | "collapse": false, 14 | "editable": true, 15 | "height": "250px", 16 | "panels": [ 17 | { 18 | "content": "These graphs require additional options to be enabled for mysqld_exporter: `-collect.info_schema.userstats=true`\n\nAlso `userstat` should be enabled on MySQL.", 19 | "datasource": "Prometheus", 20 | "editable": true, 21 | "error": false, 22 | "height": "50px", 23 | "id": 36, 24 | "links": [], 25 | "mode": "markdown", 26 | "span": 12, 27 | "style": {}, 28 | "title": "", 29 | "transparent": true, 30 | "type": "text" 31 | }, 32 | { 33 | "aliasColors": {}, 34 | "bars": false, 35 | "datasource": "Prometheus", 36 | "decimals": 2, 37 | "editable": true, 38 | "error": false, 39 | "fill": 2, 40 | "grid": { 41 | "threshold1": null, 42 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 43 | "threshold2": null, 44 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 45 | }, 46 | "id": 25, 47 | "legend": { 48 | "alignAsTable": false, 49 | "avg": false, 50 | "current": false, 51 | "hideEmpty": false, 52 | "max": false, 53 | "min": false, 54 | "rightSide": false, 55 | "show": true, 56 | "total": false, 57 | "values": false 58 | }, 59 | "lines": true, 60 | "linewidth": 2, 61 | "links": [], 62 | "nullPointMode": "null", 63 | "percentage": false, 64 | "pointradius": 5, 65 | "points": false, 66 | "renderer": "flot", 67 | "seriesOverrides": [], 68 | "span": 6, 69 | "stack": false, 70 | "steppedLine": false, 71 | "targets": [ 72 | { 73 | "calculatedInterval": "2m", 74 | "datasourceErrors": {}, 75 | "errors": {}, 76 | "expr": "topk(5, (rate(mysql_info_schema_user_statistics_total_ssl_connections_total{alias=\"$host\"}[$interval]) + rate(mysql_info_schema_user_statistics_total_connections{alias=\"$host\"}[$interval]))>0) or topk(5, (irate(mysql_info_schema_user_statistics_total_ssl_connections_total{alias=\"$host\"}[5m]) + irate(mysql_info_schema_user_statistics_total_connections{alias=\"$host\"}[5m]))>0)", 77 | "interval": "$interval", 78 | "intervalFactor": 1, 79 | "legendFormat": "{{ user }}", 80 | "metric": "", 81 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 82 | "refId": "A", 83 | "step": 300 84 | } 85 | ], 86 | "timeFrom": null, 87 | "timeShift": null, 88 | "title": "Top Users by Connections", 89 | "tooltip": { 90 | "msResolution": false, 91 | "shared": true, 92 | "value_type": "individual" 93 | }, 94 | "type": "graph", 95 | "xaxis": { 96 | "show": true 97 | }, 98 | "yaxes": [ 99 | { 100 | "format": "short", 101 | "logBase": 1, 102 | "max": null, 103 | "min": 0, 104 | "show": true 105 | }, 106 | { 107 | "format": "short", 108 | "logBase": 1, 109 | "max": null, 110 | "min": 0, 111 | "show": true 112 | } 113 | ] 114 | }, 115 | { 116 | "aliasColors": {}, 117 | "bars": false, 118 | "datasource": "Prometheus", 119 | "decimals": 2, 120 | "editable": true, 121 | "error": false, 122 | "fill": 2, 123 | "grid": { 124 | "threshold1": null, 125 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 126 | "threshold2": null, 127 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 128 | }, 129 | "id": 39, 130 | "legend": { 131 | "alignAsTable": false, 132 | "avg": false, 133 | "current": false, 134 | "hideEmpty": false, 135 | "max": false, 136 | "min": false, 137 | "rightSide": false, 138 | "show": true, 139 | "total": false, 140 | "values": false 141 | }, 142 | "lines": true, 143 | "linewidth": 2, 144 | "links": [], 145 | "nullPointMode": "null", 146 | "percentage": false, 147 | "pointradius": 5, 148 | "points": false, 149 | "renderer": "flot", 150 | "seriesOverrides": [], 151 | "span": 6, 152 | "stack": false, 153 | "steppedLine": false, 154 | "targets": [ 155 | { 156 | "calculatedInterval": "2m", 157 | "datasourceErrors": {}, 158 | "errors": {}, 159 | "expr": "topk(5, (rate(mysql_info_schema_user_statistics_bytes_sent_total{alias=\"$host\"}[$interval]) + rate(mysql_info_schema_user_statistics_bytes_received_total{alias=\"$host\"}[$interval]))>0) or topk(5, (irate(mysql_info_schema_user_statistics_bytes_sent_total{alias=\"$host\"}[5m]) + irate(mysql_info_schema_user_statistics_bytes_received_total{alias=\"$host\"}[5m]))>0)", 160 | "interval": "$interval", 161 | "intervalFactor": 1, 162 | "legendFormat": "{{ user }}", 163 | "metric": "", 164 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 165 | "refId": "A", 166 | "step": 300 167 | } 168 | ], 169 | "timeFrom": null, 170 | "timeShift": null, 171 | "title": "Top Users by Traffic", 172 | "tooltip": { 173 | "msResolution": false, 174 | "shared": true, 175 | "value_type": "individual" 176 | }, 177 | "type": "graph", 178 | "xaxis": { 179 | "show": true 180 | }, 181 | "yaxes": [ 182 | { 183 | "format": "bytes", 184 | "logBase": 1, 185 | "max": null, 186 | "min": 0, 187 | "show": true 188 | }, 189 | { 190 | "format": "short", 191 | "logBase": 1, 192 | "max": null, 193 | "min": 0, 194 | "show": true 195 | } 196 | ] 197 | }, 198 | { 199 | "aliasColors": {}, 200 | "bars": false, 201 | "datasource": "Prometheus", 202 | "decimals": 2, 203 | "editable": true, 204 | "error": false, 205 | "fill": 2, 206 | "grid": { 207 | "threshold1": null, 208 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 209 | "threshold2": null, 210 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 211 | }, 212 | "id": 37, 213 | "legend": { 214 | "alignAsTable": false, 215 | "avg": false, 216 | "current": false, 217 | "hideEmpty": false, 218 | "max": false, 219 | "min": false, 220 | "rightSide": false, 221 | "show": true, 222 | "total": false, 223 | "values": false 224 | }, 225 | "lines": true, 226 | "linewidth": 2, 227 | "links": [], 228 | "nullPointMode": "null", 229 | "percentage": false, 230 | "pointradius": 5, 231 | "points": false, 232 | "renderer": "flot", 233 | "seriesOverrides": [], 234 | "span": 6, 235 | "stack": false, 236 | "steppedLine": false, 237 | "targets": [ 238 | { 239 | "calculatedInterval": "2m", 240 | "datasourceErrors": {}, 241 | "errors": {}, 242 | "expr": "topk(5, rate(mysql_info_schema_user_statistics_rows_fetched_total{alias=\"$host\"}[$interval])>0) or topk(5, irate(mysql_info_schema_user_statistics_rows_fetched_total{alias=\"$host\"}[5m])>0)", 243 | "interval": "$interval", 244 | "intervalFactor": 1, 245 | "legendFormat": "{{ user }}", 246 | "metric": "", 247 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 248 | "refId": "A", 249 | "step": 300 250 | } 251 | ], 252 | "timeFrom": null, 253 | "timeShift": null, 254 | "title": "Top Users by Rows Fetched", 255 | "tooltip": { 256 | "msResolution": false, 257 | "shared": true, 258 | "value_type": "individual" 259 | }, 260 | "type": "graph", 261 | "xaxis": { 262 | "show": true 263 | }, 264 | "yaxes": [ 265 | { 266 | "format": "short", 267 | "logBase": 1, 268 | "max": null, 269 | "min": 0, 270 | "show": true 271 | }, 272 | { 273 | "format": "short", 274 | "logBase": 1, 275 | "max": null, 276 | "min": 0, 277 | "show": true 278 | } 279 | ] 280 | }, 281 | { 282 | "aliasColors": {}, 283 | "bars": false, 284 | "datasource": "Prometheus", 285 | "decimals": 2, 286 | "editable": true, 287 | "error": false, 288 | "fill": 2, 289 | "grid": { 290 | "threshold1": null, 291 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 292 | "threshold2": null, 293 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 294 | }, 295 | "id": 38, 296 | "legend": { 297 | "alignAsTable": false, 298 | "avg": false, 299 | "current": false, 300 | "hideEmpty": false, 301 | "max": false, 302 | "min": false, 303 | "rightSide": false, 304 | "show": true, 305 | "total": false, 306 | "values": false 307 | }, 308 | "lines": true, 309 | "linewidth": 2, 310 | "links": [], 311 | "nullPointMode": "null", 312 | "percentage": false, 313 | "pointradius": 5, 314 | "points": false, 315 | "renderer": "flot", 316 | "seriesOverrides": [], 317 | "span": 6, 318 | "stack": false, 319 | "steppedLine": false, 320 | "targets": [ 321 | { 322 | "calculatedInterval": "2m", 323 | "datasourceErrors": {}, 324 | "errors": {}, 325 | "expr": "topk(5, rate(mysql_info_schema_user_statistics_rows_updated_total{alias=\"$host\"}[$interval])>0) or topk(5, irate(mysql_info_schema_user_statistics_rows_updated_total{alias=\"$host\"}[5m])>0)", 326 | "interval": "$interval", 327 | "intervalFactor": 1, 328 | "legendFormat": "{{ user }}", 329 | "metric": "", 330 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 331 | "refId": "A", 332 | "step": 300 333 | } 334 | ], 335 | "timeFrom": null, 336 | "timeShift": null, 337 | "title": "Top Users by Rows Updated", 338 | "tooltip": { 339 | "msResolution": false, 340 | "shared": true, 341 | "value_type": "individual" 342 | }, 343 | "type": "graph", 344 | "xaxis": { 345 | "show": true 346 | }, 347 | "yaxes": [ 348 | { 349 | "format": "short", 350 | "logBase": 1, 351 | "max": null, 352 | "min": 0, 353 | "show": true 354 | }, 355 | { 356 | "format": "short", 357 | "logBase": 1, 358 | "max": null, 359 | "min": 0, 360 | "show": true 361 | } 362 | ] 363 | }, 364 | { 365 | "aliasColors": {}, 366 | "bars": false, 367 | "datasource": "Prometheus", 368 | "decimals": 2, 369 | "editable": true, 370 | "error": false, 371 | "fill": 2, 372 | "grid": { 373 | "threshold1": null, 374 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 375 | "threshold2": null, 376 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 377 | }, 378 | "id": 40, 379 | "legend": { 380 | "alignAsTable": false, 381 | "avg": false, 382 | "current": false, 383 | "hideEmpty": false, 384 | "max": false, 385 | "min": false, 386 | "rightSide": false, 387 | "show": true, 388 | "total": false, 389 | "values": false 390 | }, 391 | "lines": true, 392 | "linewidth": 2, 393 | "links": [], 394 | "nullPointMode": "null", 395 | "percentage": false, 396 | "pointradius": 5, 397 | "points": false, 398 | "renderer": "flot", 399 | "seriesOverrides": [], 400 | "span": 6, 401 | "stack": false, 402 | "steppedLine": false, 403 | "targets": [ 404 | { 405 | "calculatedInterval": "2m", 406 | "datasourceErrors": {}, 407 | "errors": {}, 408 | "expr": "topk(5, rate(mysql_info_schema_user_statistics_busy_seconds_total{alias=\"$host\"}[$interval])>0) or topk(5, irate(mysql_info_schema_user_statistics_busy_seconds_total{alias=\"$host\"}[5m])>0)", 409 | "interval": "$interval", 410 | "intervalFactor": 1, 411 | "legendFormat": "{{ user }}", 412 | "metric": "", 413 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 414 | "refId": "A", 415 | "step": 300 416 | } 417 | ], 418 | "timeFrom": null, 419 | "timeShift": null, 420 | "title": "Top Users by Busy Time", 421 | "tooltip": { 422 | "msResolution": false, 423 | "shared": true, 424 | "value_type": "individual" 425 | }, 426 | "type": "graph", 427 | "xaxis": { 428 | "show": true 429 | }, 430 | "yaxes": [ 431 | { 432 | "format": "s", 433 | "logBase": 1, 434 | "max": null, 435 | "min": 0, 436 | "show": true 437 | }, 438 | { 439 | "format": "short", 440 | "logBase": 1, 441 | "max": null, 442 | "min": 0, 443 | "show": true 444 | } 445 | ] 446 | }, 447 | { 448 | "aliasColors": {}, 449 | "bars": false, 450 | "datasource": "Prometheus", 451 | "decimals": 2, 452 | "editable": true, 453 | "error": false, 454 | "fill": 2, 455 | "grid": { 456 | "threshold1": null, 457 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 458 | "threshold2": null, 459 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 460 | }, 461 | "id": 41, 462 | "legend": { 463 | "alignAsTable": false, 464 | "avg": false, 465 | "current": false, 466 | "hideEmpty": false, 467 | "max": false, 468 | "min": false, 469 | "rightSide": false, 470 | "show": true, 471 | "total": false, 472 | "values": false 473 | }, 474 | "lines": true, 475 | "linewidth": 2, 476 | "links": [], 477 | "nullPointMode": "null", 478 | "percentage": false, 479 | "pointradius": 5, 480 | "points": false, 481 | "renderer": "flot", 482 | "seriesOverrides": [], 483 | "span": 6, 484 | "stack": false, 485 | "steppedLine": false, 486 | "targets": [ 487 | { 488 | "calculatedInterval": "2m", 489 | "datasourceErrors": {}, 490 | "errors": {}, 491 | "expr": "topk(5, rate(mysql_info_schema_user_statistics_cpu_time_seconds_total{alias=\"$host\"}[$interval])>0) or topk(5, irate(mysql_info_schema_user_statistics_cpu_time_seconds_total{alias=\"$host\"}[5m])>0)", 492 | "interval": "$interval", 493 | "intervalFactor": 1, 494 | "legendFormat": "{{ user }}", 495 | "metric": "", 496 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 497 | "refId": "A", 498 | "step": 300 499 | } 500 | ], 501 | "timeFrom": null, 502 | "timeShift": null, 503 | "title": "Top Users by CPU Time", 504 | "tooltip": { 505 | "msResolution": false, 506 | "shared": true, 507 | "value_type": "individual" 508 | }, 509 | "type": "graph", 510 | "xaxis": { 511 | "show": true 512 | }, 513 | "yaxes": [ 514 | { 515 | "format": "s", 516 | "logBase": 1, 517 | "max": null, 518 | "min": 0, 519 | "show": true 520 | }, 521 | { 522 | "format": "short", 523 | "logBase": 1, 524 | "max": null, 525 | "min": 0, 526 | "show": true 527 | } 528 | ] 529 | } 530 | ], 531 | "showTitle": false, 532 | "title": "User Stats" 533 | } 534 | ], 535 | "schemaVersion": 12, 536 | "sharedCrosshair": true, 537 | "style": "dark", 538 | "tags": [ 539 | "MySQL", 540 | "Percona" 541 | ], 542 | "templating": { 543 | "list": [ 544 | { 545 | "allFormat": "glob", 546 | "auto": true, 547 | "auto_count": 200, 548 | "auto_min": "1s", 549 | "current": { 550 | "text": "auto", 551 | "value": "$__auto_interval" 552 | }, 553 | "datasource": "Prometheus", 554 | "hide": 0, 555 | "includeAll": false, 556 | "label": "Interval", 557 | "multi": false, 558 | "multiFormat": "glob", 559 | "name": "interval", 560 | "options": [ 561 | { 562 | "selected": true, 563 | "text": "auto", 564 | "value": "$__auto_interval" 565 | }, 566 | { 567 | "selected": false, 568 | "text": "1s", 569 | "value": "1s" 570 | }, 571 | { 572 | "selected": false, 573 | "text": "5s", 574 | "value": "5s" 575 | }, 576 | { 577 | "selected": false, 578 | "text": "1m", 579 | "value": "1m" 580 | }, 581 | { 582 | "selected": false, 583 | "text": "5m", 584 | "value": "5m" 585 | }, 586 | { 587 | "selected": false, 588 | "text": "1h", 589 | "value": "1h" 590 | }, 591 | { 592 | "selected": false, 593 | "text": "6h", 594 | "value": "6h" 595 | }, 596 | { 597 | "selected": false, 598 | "text": "1d", 599 | "value": "1d" 600 | } 601 | ], 602 | "query": "1s,5s,1m,5m,1h,6h,1d", 603 | "refresh": 0, 604 | "type": "interval" 605 | }, 606 | { 607 | "allFormat": "glob", 608 | "datasource": "Prometheus", 609 | "hide": 0, 610 | "includeAll": false, 611 | "label": "Host", 612 | "multi": false, 613 | "multiFormat": "regex values", 614 | "name": "host", 615 | "query": "label_values(alias)", 616 | "refresh": 1, 617 | "refresh_on_load": false, 618 | "regex": "", 619 | "type": "query" 620 | } 621 | ] 622 | }, 623 | "time": { 624 | "from": "now-12h", 625 | "to": "now" 626 | }, 627 | "timepicker": { 628 | "collapse": false, 629 | "enable": true, 630 | "notice": false, 631 | "now": true, 632 | "refresh_intervals": [ 633 | "5s", 634 | "10s", 635 | "30s", 636 | "1m", 637 | "5m", 638 | "15m", 639 | "30m", 640 | "1h", 641 | "2h", 642 | "1d" 643 | ], 644 | "status": "Stable", 645 | "time_options": [ 646 | "5m", 647 | "15m", 648 | "1h", 649 | "6h", 650 | "12h", 651 | "24h", 652 | "2d", 653 | "7d", 654 | "30d" 655 | ], 656 | "type": "timepicker" 657 | }, 658 | "timezone": "browser", 659 | "title": "MySQL User Statistics | Percona App", 660 | "version": 0 661 | } -------------------------------------------------------------------------------- /dist/img/percona_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/grafana-app/e42fbf6bf3c15fa745bd13d9ca75dd1a101268aa/dist/img/percona_large.png -------------------------------------------------------------------------------- /dist/img/percona_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/grafana-app/e42fbf6bf3c15fa745bd13d9ca75dd1a101268aa/dist/img/percona_small.png -------------------------------------------------------------------------------- /dist/module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.ConfigCtrl = undefined; 7 | 8 | var _config = require('./components/config'); 9 | 10 | exports.ConfigCtrl = _config.PerconaAppConfigCtrl; 11 | //# sourceMappingURL=module.js.map 12 | -------------------------------------------------------------------------------- /dist/module.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../src/module.js"],"names":[],"mappings":";;;;;;;AAAA;;QAG0B,U","file":"module.js","sourcesContent":["import {PerconaAppConfigCtrl} from './components/config';\n\nexport {\n PerconaAppConfigCtrl as ConfigCtrl\n};\n"]} -------------------------------------------------------------------------------- /dist/plugin.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "app", 3 | "name": "Percona", 4 | "id": "percona-percona-app", 5 | 6 | "css": { 7 | "dark": "css/dark.css", 8 | "light": "css/light.css" 9 | }, 10 | 11 | "info": { 12 | "description": "Percona app for Grafana", 13 | "author": { 14 | "name": "Percona", 15 | "url": "https://percona.com" 16 | }, 17 | "keywords": ["percona", "mysql"], 18 | "logos": { 19 | "small": "src/img/percona_small.png", 20 | "large": "src/img/percona_large.png" 21 | }, 22 | "links": [ 23 | {"name": "Percona", "url": "https://percona.com"}, 24 | {"name": "GitHub", "url": "https://github.com/percona/grafana-app"} 25 | ], 26 | "version": "1.0.0", 27 | "updated": "2016-05-25" 28 | }, 29 | 30 | "includes": [ 31 | {"type": "dashboard", "name": "Cross Server Graphs | Percona App", "path": "dashboards/Cross_Server_Graphs.json", "addToNav": true, "defaultNav": true}, 32 | {"type": "dashboard", "name": "Disk Performance | Percona App", "path": "dashboards/Disk_Performance.json", "addToNav": true}, 33 | {"type": "dashboard", "name": "Disk Space | Percona App", "path": "dashboards/Disk_Space.json", "addToNav": true}, 34 | {"type": "dashboard", "name": "Galera Graphs | Percona App", "path": "dashboards/Galera_Graphs.json"}, 35 | {"type": "dashboard", "name": "MySQL InnoDB Metrics | Percona App", "path": "dashboards/MySQL_InnoDB_Metrics.json", "addToNav": true}, 36 | {"type": "dashboard", "name": "MySQL MyISAM Metrics | Percona App", "path": "dashboards/MySQL_MyISAM_Metrics.json"}, 37 | {"type": "dashboard", "name": "MySQL Overview | Percona App", "path": "dashboards/MySQL_Overview.json", "addToNav": true}, 38 | {"type": "dashboard", "name": "MySQL Performance Schema | Percona App", "path": "dashboards/MySQL_Performance_Schema.json"}, 39 | {"type": "dashboard", "name": "MySQL Query Response Time | Percona App", "path": "dashboards/MySQL_Query_Response_Time.json"}, 40 | {"type": "dashboard", "name": "MySQL Replication | Percona App", "path": "dashboards/MySQL_Replication.json", "addToNav": true}, 41 | {"type": "dashboard", "name": "MySQL Table Statistics | Percona App", "path": "dashboards/MySQL_Table_Statistics.json"}, 42 | {"type": "dashboard", "name": "MySQL User Statistics | Percona App", "path": "dashboards/MySQL_User_Statistics.json"}, 43 | {"type": "dashboard", "name": "Prometheus | Percona App", "path": "dashboards/Prometheus.json"}, 44 | {"type": "dashboard", "name": "Summary Dashboard | Percona App", "path": "dashboards/Summary_Dashboard.json", "addToNav": true}, 45 | {"type": "dashboard", "name": "System Overview | Percona App", "path": "dashboards/System_Overview.json", "addToNav": true}, 46 | {"type": "dashboard", "name": "TokuDB Graphs | Percona App", "path": "dashboards/TokuDB_Metrics.json"}, 47 | {"type": "dashboard", "name": "Trends Dashboard | Percona App", "path": "dashboards/Trends_Dashboard.json", "addToNav": true} 48 | ], 49 | 50 | "dependencies": { 51 | "grafanaVersion": "3.x.x", 52 | "plugins": [] 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /dist/src/img/percona_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/grafana-app/e42fbf6bf3c15fa745bd13d9ca75dd1a101268aa/dist/src/img/percona_large.png -------------------------------------------------------------------------------- /dist/src/img/percona_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/grafana-app/e42fbf6bf3c15fa745bd13d9ca75dd1a101268aa/dist/src/img/percona_small.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "percona-app", 3 | "private": true, 4 | "version": "1.0.0", 5 | "description": "", 6 | "main": "index.js", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/percona/grafana-app.git" 13 | }, 14 | "author": "Roman Vynar", 15 | "license": "MIT", 16 | "bugs": { 17 | "url": "https://github.com/percona/grafana-app/issues" 18 | }, 19 | "devDependencies": { 20 | "grunt": "~0.4.5", 21 | "babel": "~6.5.1", 22 | "grunt-babel": "~6.0.0", 23 | "grunt-contrib-copy": "~0.8.2", 24 | "grunt-contrib-watch": "^0.6.1", 25 | "grunt-contrib-uglify": "~0.11.0", 26 | "grunt-systemjs-builder": "^0.2.5", 27 | "load-grunt-tasks": "~3.2.0", 28 | "grunt-execute": "~0.2.2", 29 | "grunt-contrib-clean": "~0.6.0", 30 | "babel-preset-es2015": "~6.9.0" 31 | }, 32 | "dependencies": { 33 | "babel-plugin-transform-es2015-modules-systemjs": "^6.5.0", 34 | "babel-preset-es2015": "^6.5.0", 35 | "lodash": "~4.17.15" 36 | }, 37 | "homepage": "https://github.com/percona/grafana-app" 38 | } 39 | -------------------------------------------------------------------------------- /plugin.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "app", 3 | "name": "Percona", 4 | "id": "percona-percona-app", 5 | 6 | "css": { 7 | "dark": "css/dark.css", 8 | "light": "css/light.css" 9 | }, 10 | 11 | "info": { 12 | "description": "Percona app for Grafana", 13 | "author": { 14 | "name": "Percona", 15 | "url": "https://percona.com" 16 | }, 17 | "keywords": ["percona", "mysql"], 18 | "logos": { 19 | "small": "src/img/percona_small.png", 20 | "large": "src/img/percona_large.png" 21 | }, 22 | "links": [ 23 | {"name": "Percona", "url": "https://percona.com"}, 24 | {"name": "GitHub", "url": "https://github.com/percona/grafana-app"} 25 | ], 26 | "version": "1.0.0", 27 | "updated": "2016-05-25" 28 | }, 29 | 30 | "includes": [ 31 | {"type": "dashboard", "name": "Cross Server Graphs | Percona App", "path": "dashboards/Cross_Server_Graphs.json", "addToNav": true, "defaultNav": true}, 32 | {"type": "dashboard", "name": "Disk Performance | Percona App", "path": "dashboards/Disk_Performance.json", "addToNav": true}, 33 | {"type": "dashboard", "name": "Disk Space | Percona App", "path": "dashboards/Disk_Space.json", "addToNav": true}, 34 | {"type": "dashboard", "name": "Galera Graphs | Percona App", "path": "dashboards/Galera_Graphs.json"}, 35 | {"type": "dashboard", "name": "MySQL InnoDB Metrics | Percona App", "path": "dashboards/MySQL_InnoDB_Metrics.json", "addToNav": true}, 36 | {"type": "dashboard", "name": "MySQL MyISAM Metrics | Percona App", "path": "dashboards/MySQL_MyISAM_Metrics.json"}, 37 | {"type": "dashboard", "name": "MySQL Overview | Percona App", "path": "dashboards/MySQL_Overview.json", "addToNav": true}, 38 | {"type": "dashboard", "name": "MySQL Performance Schema | Percona App", "path": "dashboards/MySQL_Performance_Schema.json"}, 39 | {"type": "dashboard", "name": "MySQL Query Response Time | Percona App", "path": "dashboards/MySQL_Query_Response_Time.json"}, 40 | {"type": "dashboard", "name": "MySQL Replication | Percona App", "path": "dashboards/MySQL_Replication.json", "addToNav": true}, 41 | {"type": "dashboard", "name": "MySQL Table Statistics | Percona App", "path": "dashboards/MySQL_Table_Statistics.json"}, 42 | {"type": "dashboard", "name": "MySQL User Statistics | Percona App", "path": "dashboards/MySQL_User_Statistics.json"}, 43 | {"type": "dashboard", "name": "Prometheus | Percona App", "path": "dashboards/Prometheus.json"}, 44 | {"type": "dashboard", "name": "Summary Dashboard | Percona App", "path": "dashboards/Summary_Dashboard.json", "addToNav": true}, 45 | {"type": "dashboard", "name": "System Overview | Percona App", "path": "dashboards/System_Overview.json", "addToNav": true}, 46 | {"type": "dashboard", "name": "TokuDB Graphs | Percona App", "path": "dashboards/TokuDB_Metrics.json"}, 47 | {"type": "dashboard", "name": "Trends Dashboard | Percona App", "path": "dashboards/Trends_Dashboard.json", "addToNav": true} 48 | ], 49 | 50 | "dependencies": { 51 | "grafanaVersion": "3.x.x", 52 | "plugins": [] 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/components/config.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/grafana-app/e42fbf6bf3c15fa745bd13d9ca75dd1a101268aa/src/components/config.html -------------------------------------------------------------------------------- /src/components/config.js: -------------------------------------------------------------------------------- 1 | 2 | export class PerconaAppConfigCtrl { 3 | constructor() { 4 | this.appEditCtrl.setPostUpdateHook(this.postUpdate.bind(this)); 5 | } 6 | 7 | postUpdate() { 8 | if (!this.appModel.enabled) { 9 | return Promise.resolve(); 10 | } 11 | 12 | return this.appEditCtrl.importDashboards().then(() => { 13 | return { 14 | url: "/dashboard/db/summary-dashboard", 15 | message: "Percona app installed!" 16 | }; 17 | }); 18 | } 19 | } 20 | 21 | PerconaAppConfigCtrl.templateUrl = 'components/config.html'; 22 | -------------------------------------------------------------------------------- /src/dashboards/Disk_Space.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [] 4 | }, 5 | "editable": true, 6 | "hideControls": false, 7 | "id": null, 8 | "links": [], 9 | "originalTitle": "Disk Space", 10 | "refresh": false, 11 | "rows": [ 12 | { 13 | "collapse": false, 14 | "editable": true, 15 | "height": "250px", 16 | "panels": [ 17 | { 18 | "content": "`Disk Space` - Amount of disk space used and available on various mount points. Running out of disk space on OS volume, database volume or volume used for temporary space can cause downtime. Some storage may also have reduced performance when small amount of space is available.\n", 19 | "datasource": "Prometheus", 20 | "editable": true, 21 | "error": false, 22 | "height": "50px", 23 | "id": 7, 24 | "isNew": true, 25 | "links": [], 26 | "mode": "markdown", 27 | "span": 12, 28 | "style": {}, 29 | "title": "", 30 | "transparent": true, 31 | "type": "text" 32 | }, 33 | { 34 | "aliasColors": { 35 | "Free (device /dev/xvda1, ext4)": "#82B5D8", 36 | "Used (device /dev/xvda1, ext4)": "#BA43A9" 37 | }, 38 | "bars": false, 39 | "datasource": "Prometheus", 40 | "decimals": 2, 41 | "editable": true, 42 | "error": false, 43 | "fill": 6, 44 | "grid": { 45 | "threshold1": null, 46 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 47 | "threshold2": null, 48 | "threshold2Color": "rgba(234, 112, 112, 0.22)", 49 | "thresholdLine": false 50 | }, 51 | "id": 4, 52 | "legend": { 53 | "alignAsTable": true, 54 | "avg": true, 55 | "current": false, 56 | "hideEmpty": false, 57 | "max": true, 58 | "min": true, 59 | "rightSide": false, 60 | "show": true, 61 | "total": false, 62 | "values": true 63 | }, 64 | "lines": true, 65 | "linewidth": 2, 66 | "links": [], 67 | "minSpan": 6, 68 | "nullPointMode": "null", 69 | "percentage": false, 70 | "pointradius": 5, 71 | "points": false, 72 | "renderer": "flot", 73 | "repeat": "mountpoint", 74 | "seriesOverrides": [ 75 | { 76 | "alias": "/Used/", 77 | "color": "#99440A" 78 | }, 79 | { 80 | "alias": "/Free/", 81 | "color": "#EF843C" 82 | } 83 | ], 84 | "span": 6, 85 | "stack": true, 86 | "steppedLine": false, 87 | "targets": [ 88 | { 89 | "calculatedInterval": "2m", 90 | "datasourceErrors": {}, 91 | "errors": {}, 92 | "expr": "node_filesystem_size{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"} - node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 93 | "hide": false, 94 | "interval": "$interval", 95 | "intervalFactor": 1, 96 | "legendFormat": "Used (device {{ device }}, {{ fstype }})", 97 | "metric": "", 98 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_size%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D-node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 99 | "refId": "B", 100 | "step": 300 101 | }, 102 | { 103 | "calculatedInterval": "2m", 104 | "datasourceErrors": {}, 105 | "errors": {}, 106 | "expr": "node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 107 | "interval": "$interval", 108 | "intervalFactor": 1, 109 | "legendFormat": "Free (device {{ device }}, {{ fstype }})", 110 | "metric": "", 111 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 112 | "refId": "A", 113 | "step": 300, 114 | "target": "" 115 | } 116 | ], 117 | "timeFrom": null, 118 | "timeShift": null, 119 | "title": "Mountpoint $mountpoint", 120 | "tooltip": { 121 | "msResolution": false, 122 | "shared": true, 123 | "value_type": "individual" 124 | }, 125 | "transparent": false, 126 | "type": "graph", 127 | "xaxis": { 128 | "show": true 129 | }, 130 | "yaxes": [ 131 | { 132 | "format": "bytes", 133 | "label": "", 134 | "logBase": 1, 135 | "max": null, 136 | "min": 0, 137 | "show": true 138 | }, 139 | { 140 | "format": "bytes", 141 | "logBase": 1, 142 | "max": null, 143 | "min": null, 144 | "show": true 145 | } 146 | ] 147 | }, 148 | { 149 | "aliasColors": { 150 | "Free (device /dev/xvda1, ext4)": "#82B5D8", 151 | "Used (device /dev/xvda1, ext4)": "#BA43A9" 152 | }, 153 | "bars": false, 154 | "datasource": "Prometheus", 155 | "decimals": 2, 156 | "editable": true, 157 | "error": false, 158 | "fill": 6, 159 | "grid": { 160 | "threshold1": null, 161 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 162 | "threshold2": null, 163 | "threshold2Color": "rgba(234, 112, 112, 0.22)", 164 | "thresholdLine": false 165 | }, 166 | "id": 8, 167 | "legend": { 168 | "alignAsTable": true, 169 | "avg": true, 170 | "current": false, 171 | "hideEmpty": false, 172 | "max": true, 173 | "min": true, 174 | "rightSide": false, 175 | "show": true, 176 | "total": false, 177 | "values": true 178 | }, 179 | "lines": true, 180 | "linewidth": 2, 181 | "links": [], 182 | "minSpan": 6, 183 | "nullPointMode": "null", 184 | "percentage": false, 185 | "pointradius": 5, 186 | "points": false, 187 | "renderer": "flot", 188 | "repeat": null, 189 | "repeatIteration": 1463692484622, 190 | "repeatPanelId": 4, 191 | "seriesOverrides": [ 192 | { 193 | "alias": "/Used/", 194 | "color": "#99440A" 195 | }, 196 | { 197 | "alias": "/Free/", 198 | "color": "#EF843C" 199 | } 200 | ], 201 | "span": 6, 202 | "stack": true, 203 | "steppedLine": false, 204 | "targets": [ 205 | { 206 | "calculatedInterval": "2m", 207 | "datasourceErrors": {}, 208 | "errors": {}, 209 | "expr": "node_filesystem_size{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"} - node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 210 | "hide": false, 211 | "interval": "$interval", 212 | "intervalFactor": 1, 213 | "legendFormat": "Used (device {{ device }}, {{ fstype }})", 214 | "metric": "", 215 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_size%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D-node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 216 | "refId": "B", 217 | "step": 300 218 | }, 219 | { 220 | "calculatedInterval": "2m", 221 | "datasourceErrors": {}, 222 | "errors": {}, 223 | "expr": "node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 224 | "interval": "$interval", 225 | "intervalFactor": 1, 226 | "legendFormat": "Free (device {{ device }}, {{ fstype }})", 227 | "metric": "", 228 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 229 | "refId": "A", 230 | "step": 300, 231 | "target": "" 232 | } 233 | ], 234 | "timeFrom": null, 235 | "timeShift": null, 236 | "title": "Mountpoint $mountpoint", 237 | "tooltip": { 238 | "msResolution": false, 239 | "shared": true, 240 | "value_type": "individual" 241 | }, 242 | "transparent": false, 243 | "type": "graph", 244 | "xaxis": { 245 | "show": true 246 | }, 247 | "yaxes": [ 248 | { 249 | "format": "bytes", 250 | "label": "", 251 | "logBase": 1, 252 | "max": null, 253 | "min": 0, 254 | "show": true 255 | }, 256 | { 257 | "format": "bytes", 258 | "logBase": 1, 259 | "max": null, 260 | "min": null, 261 | "show": true 262 | } 263 | ] 264 | }, 265 | { 266 | "aliasColors": { 267 | "Free (device /dev/xvda1, ext4)": "#82B5D8", 268 | "Used (device /dev/xvda1, ext4)": "#BA43A9" 269 | }, 270 | "bars": false, 271 | "datasource": "Prometheus", 272 | "decimals": 2, 273 | "editable": true, 274 | "error": false, 275 | "fill": 6, 276 | "grid": { 277 | "threshold1": null, 278 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 279 | "threshold2": null, 280 | "threshold2Color": "rgba(234, 112, 112, 0.22)", 281 | "thresholdLine": false 282 | }, 283 | "id": 9, 284 | "legend": { 285 | "alignAsTable": true, 286 | "avg": true, 287 | "current": false, 288 | "hideEmpty": false, 289 | "max": true, 290 | "min": true, 291 | "rightSide": false, 292 | "show": true, 293 | "total": false, 294 | "values": true 295 | }, 296 | "lines": true, 297 | "linewidth": 2, 298 | "links": [], 299 | "minSpan": 6, 300 | "nullPointMode": "null", 301 | "percentage": false, 302 | "pointradius": 5, 303 | "points": false, 304 | "renderer": "flot", 305 | "repeat": null, 306 | "repeatIteration": 1463692484622, 307 | "repeatPanelId": 4, 308 | "seriesOverrides": [ 309 | { 310 | "alias": "/Used/", 311 | "color": "#99440A" 312 | }, 313 | { 314 | "alias": "/Free/", 315 | "color": "#EF843C" 316 | } 317 | ], 318 | "span": 6, 319 | "stack": true, 320 | "steppedLine": false, 321 | "targets": [ 322 | { 323 | "calculatedInterval": "2m", 324 | "datasourceErrors": {}, 325 | "errors": {}, 326 | "expr": "node_filesystem_size{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"} - node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 327 | "hide": false, 328 | "interval": "$interval", 329 | "intervalFactor": 1, 330 | "legendFormat": "Used (device {{ device }}, {{ fstype }})", 331 | "metric": "", 332 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_size%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D-node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 333 | "refId": "B", 334 | "step": 300 335 | }, 336 | { 337 | "calculatedInterval": "2m", 338 | "datasourceErrors": {}, 339 | "errors": {}, 340 | "expr": "node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\", mountpoint=\"$mountpoint\"}", 341 | "interval": "$interval", 342 | "intervalFactor": 1, 343 | "legendFormat": "Free (device {{ device }}, {{ fstype }})", 344 | "metric": "", 345 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22node_filesystem_avail%7Balias%3D%5C%22%24host%5C%22%2C%20fstype!~%5C%22rootfs%7Cselinuxfs%5C%22%7D%22%2C%22range_input%22%3A%2243201s%22%2C%22end_input%22%3A%222015-10-6%207%3A48%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 346 | "refId": "A", 347 | "step": 300, 348 | "target": "" 349 | } 350 | ], 351 | "timeFrom": null, 352 | "timeShift": null, 353 | "title": "Mountpoint $mountpoint", 354 | "tooltip": { 355 | "msResolution": false, 356 | "shared": true, 357 | "value_type": "individual" 358 | }, 359 | "transparent": false, 360 | "type": "graph", 361 | "xaxis": { 362 | "show": true 363 | }, 364 | "yaxes": [ 365 | { 366 | "format": "bytes", 367 | "label": "", 368 | "logBase": 1, 369 | "max": null, 370 | "min": 0, 371 | "show": true 372 | }, 373 | { 374 | "format": "bytes", 375 | "logBase": 1, 376 | "max": null, 377 | "min": null, 378 | "show": true 379 | } 380 | ] 381 | } 382 | ], 383 | "repeat": null, 384 | "scopedVars": { 385 | "host": { 386 | "selected": true, 387 | "text": "cdba", 388 | "value": "cdba" 389 | } 390 | }, 391 | "showTitle": false, 392 | "title": "Disk Space" 393 | } 394 | ], 395 | "schemaVersion": 12, 396 | "sharedCrosshair": true, 397 | "style": "dark", 398 | "tags": [ 399 | "OS", 400 | "Percona" 401 | ], 402 | "templating": { 403 | "list": [ 404 | { 405 | "allFormat": "glob", 406 | "auto": true, 407 | "auto_count": 200, 408 | "auto_min": "1s", 409 | "current": { 410 | "text": "auto", 411 | "value": "$__auto_interval" 412 | }, 413 | "datasource": "Prometheus", 414 | "hide": 0, 415 | "includeAll": false, 416 | "label": "Interval", 417 | "multi": false, 418 | "multiFormat": "glob", 419 | "name": "interval", 420 | "options": [ 421 | { 422 | "selected": true, 423 | "text": "auto", 424 | "value": "$__auto_interval" 425 | }, 426 | { 427 | "selected": false, 428 | "text": "1s", 429 | "value": "1s" 430 | }, 431 | { 432 | "selected": false, 433 | "text": "5s", 434 | "value": "5s" 435 | }, 436 | { 437 | "selected": false, 438 | "text": "1m", 439 | "value": "1m" 440 | }, 441 | { 442 | "selected": false, 443 | "text": "5m", 444 | "value": "5m" 445 | }, 446 | { 447 | "selected": false, 448 | "text": "1h", 449 | "value": "1h" 450 | }, 451 | { 452 | "selected": false, 453 | "text": "6h", 454 | "value": "6h" 455 | }, 456 | { 457 | "selected": false, 458 | "text": "1d", 459 | "value": "1d" 460 | } 461 | ], 462 | "query": "1s,5s,1m,5m,1h,6h,1d", 463 | "refresh": 0, 464 | "type": "interval" 465 | }, 466 | { 467 | "allFormat": "glob", 468 | "datasource": "Prometheus", 469 | "hide": 0, 470 | "includeAll": false, 471 | "label": "Host", 472 | "multi": false, 473 | "multiFormat": "regex values", 474 | "name": "host", 475 | "query": "label_values(alias)", 476 | "refresh": 1, 477 | "refresh_on_load": false, 478 | "regex": "", 479 | "tagValuesQuery": "alias", 480 | "tagsQuery": "up", 481 | "type": "query", 482 | "useTags": false 483 | }, 484 | { 485 | "allFormat": "wildcard", 486 | "current": { 487 | "text": "All", 488 | "value": "$__all" 489 | }, 490 | "datasource": "Prometheus", 491 | "hide": 0, 492 | "hideLabel": false, 493 | "includeAll": true, 494 | "label": "Mountpoint", 495 | "multi": false, 496 | "multiFormat": "regex values", 497 | "name": "mountpoint", 498 | "options": [ 499 | { 500 | "selected": true, 501 | "text": "All", 502 | "value": "$__all" 503 | }, 504 | { 505 | "selected": false, 506 | "text": "/", 507 | "value": "/" 508 | }, 509 | { 510 | "selected": false, 511 | "text": "/db", 512 | "value": "/db" 513 | }, 514 | { 515 | "selected": false, 516 | "text": "/media/ephemeral0", 517 | "value": "/media/ephemeral0" 518 | } 519 | ], 520 | "query": "label_values(node_filesystem_avail{alias=\"$host\", fstype!~\"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs\"}, mountpoint)", 521 | "refresh": 1, 522 | "refresh_on_load": false, 523 | "regex": "", 524 | "tagValuesQuery": "alias", 525 | "tagsQuery": "up", 526 | "type": "query", 527 | "useTags": false 528 | } 529 | ] 530 | }, 531 | "time": { 532 | "from": "now-12h", 533 | "to": "now" 534 | }, 535 | "timepicker": { 536 | "collapse": false, 537 | "enable": true, 538 | "notice": false, 539 | "now": true, 540 | "refresh_intervals": [ 541 | "5s", 542 | "10s", 543 | "30s", 544 | "1m", 545 | "5m", 546 | "15m", 547 | "30m", 548 | "1h", 549 | "2h", 550 | "1d" 551 | ], 552 | "status": "Stable", 553 | "time_options": [ 554 | "5m", 555 | "15m", 556 | "1h", 557 | "6h", 558 | "12h", 559 | "24h", 560 | "2d", 561 | "7d", 562 | "30d" 563 | ], 564 | "type": "timepicker" 565 | }, 566 | "timezone": "browser", 567 | "title": "Disk Space | Percona App", 568 | "version": 0 569 | } -------------------------------------------------------------------------------- /src/dashboards/MySQL_MyISAM_Metrics.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [] 4 | }, 5 | "editable": true, 6 | "hideControls": false, 7 | "id": null, 8 | "links": [], 9 | "originalTitle": "MySQL MyISAM Metrics", 10 | "refresh": false, 11 | "rows": [ 12 | { 13 | "collapse": false, 14 | "editable": true, 15 | "height": "270px", 16 | "panels": [ 17 | { 18 | "aliasColors": {}, 19 | "bars": false, 20 | "datasource": "Prometheus", 21 | "decimals": 2, 22 | "editable": true, 23 | "error": false, 24 | "fill": 2, 25 | "grid": { 26 | "threshold1": null, 27 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 28 | "threshold2": null, 29 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 30 | }, 31 | "id": 3, 32 | "legend": { 33 | "alignAsTable": true, 34 | "avg": true, 35 | "current": false, 36 | "max": true, 37 | "min": true, 38 | "rightSide": false, 39 | "show": true, 40 | "total": false, 41 | "values": true 42 | }, 43 | "lines": true, 44 | "linewidth": 2, 45 | "links": [], 46 | "nullPointMode": "null", 47 | "percentage": false, 48 | "pointradius": 5, 49 | "points": false, 50 | "renderer": "flot", 51 | "seriesOverrides": [ 52 | { 53 | "alias": "Key Reads", 54 | "fill": 0 55 | }, 56 | { 57 | "alias": "Key Writes", 58 | "fill": 0, 59 | "transform": "negative-Y" 60 | }, 61 | { 62 | "alias": "Key Write Requests", 63 | "transform": "negative-Y" 64 | } 65 | ], 66 | "span": 6, 67 | "stack": false, 68 | "steppedLine": false, 69 | "targets": [ 70 | { 71 | "calculatedInterval": "2m", 72 | "datasourceErrors": {}, 73 | "errors": {}, 74 | "expr": "rate(mysql_global_status_key_reads{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_reads{alias=\"$host\"}[5m])", 75 | "interval": "$interval", 76 | "intervalFactor": 1, 77 | "legendFormat": "Key Reads", 78 | "metric": "", 79 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 80 | "refId": "D", 81 | "step": 300 82 | }, 83 | { 84 | "calculatedInterval": "2m", 85 | "datasourceErrors": {}, 86 | "errors": {}, 87 | "expr": "rate(mysql_global_status_key_read_requests{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_read_requests{alias=\"$host\"}[5m])", 88 | "interval": "$interval", 89 | "intervalFactor": 1, 90 | "legendFormat": "Key Read Requests", 91 | "metric": "", 92 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 93 | "refId": "A", 94 | "step": 300 95 | }, 96 | { 97 | "calculatedInterval": "2m", 98 | "datasourceErrors": {}, 99 | "errors": {}, 100 | "expr": "rate(mysql_global_status_key_writes{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_writes{alias=\"$host\"}[5m])", 101 | "interval": "$interval", 102 | "intervalFactor": 1, 103 | "legendFormat": "Key Writes", 104 | "metric": "", 105 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 106 | "refId": "B", 107 | "step": 300 108 | }, 109 | { 110 | "calculatedInterval": "2m", 111 | "datasourceErrors": {}, 112 | "errors": {}, 113 | "expr": "rate(mysql_global_status_key_write_requests{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_write_requests{alias=\"$host\"}[5m])", 114 | "interval": "$interval", 115 | "intervalFactor": 1, 116 | "legendFormat": "Key Write Requests", 117 | "metric": "", 118 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 119 | "refId": "C", 120 | "step": 300 121 | } 122 | ], 123 | "timeFrom": null, 124 | "timeShift": null, 125 | "title": "MyISAM Indexes", 126 | "tooltip": { 127 | "msResolution": false, 128 | "shared": true, 129 | "value_type": "individual" 130 | }, 131 | "type": "graph", 132 | "xaxis": { 133 | "show": true 134 | }, 135 | "yaxes": [ 136 | { 137 | "format": "short", 138 | "logBase": 1, 139 | "max": null, 140 | "min": 0, 141 | "show": true 142 | }, 143 | { 144 | "format": "short", 145 | "logBase": 1, 146 | "max": null, 147 | "min": 0, 148 | "show": true 149 | } 150 | ] 151 | }, 152 | { 153 | "aliasColors": {}, 154 | "bars": false, 155 | "datasource": "Prometheus", 156 | "decimals": 2, 157 | "editable": true, 158 | "error": false, 159 | "fill": 6, 160 | "grid": { 161 | "threshold1": null, 162 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 163 | "threshold2": null, 164 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 165 | }, 166 | "id": 21, 167 | "legend": { 168 | "alignAsTable": true, 169 | "avg": true, 170 | "current": false, 171 | "max": true, 172 | "min": true, 173 | "rightSide": false, 174 | "show": true, 175 | "total": false, 176 | "values": true 177 | }, 178 | "lines": true, 179 | "linewidth": 2, 180 | "links": [], 181 | "nullPointMode": "null", 182 | "percentage": false, 183 | "pointradius": 5, 184 | "points": false, 185 | "renderer": "flot", 186 | "seriesOverrides": [ 187 | { 188 | "alias": "Key Blocks Not Flushed", 189 | "fill": 0 190 | } 191 | ], 192 | "span": 6, 193 | "stack": false, 194 | "steppedLine": false, 195 | "targets": [ 196 | { 197 | "calculatedInterval": "2m", 198 | "datasourceErrors": {}, 199 | "errors": {}, 200 | "expr": "mysql_global_variables_key_buffer_size{alias=\"$host\"}", 201 | "interval": "$interval", 202 | "intervalFactor": 1, 203 | "legendFormat": "Key Buffer Size", 204 | "metric": "", 205 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22rate(mysql_global_status_innodb_pages_written%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D)%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-8-20%2016%3A2%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 206 | "refId": "C", 207 | "step": 300 208 | }, 209 | { 210 | "calculatedInterval": "2m", 211 | "datasourceErrors": {}, 212 | "errors": {}, 213 | "expr": "mysql_global_variables_key_buffer_size{alias=\"$host\"} - mysql_global_status_key_blocks_unused{alias=\"$host\"} * mysql_global_variables_key_cache_block_size{alias=\"$host\"}", 214 | "interval": "$interval", 215 | "intervalFactor": 1, 216 | "legendFormat": "Key Blocks Used", 217 | "metric": "", 218 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22rate(mysql_global_status_innodb_pages_written%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D)%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-8-20%2016%3A2%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 219 | "refId": "B", 220 | "step": 300 221 | }, 222 | { 223 | "calculatedInterval": "2m", 224 | "datasourceErrors": {}, 225 | "errors": {}, 226 | "expr": "mysql_global_status_key_blocks_not_flushed{alias=\"$host\"} * mysql_global_variables_key_cache_block_size{alias=\"$host\"}", 227 | "interval": "$interval", 228 | "intervalFactor": 1, 229 | "legendFormat": "Key Blocks Not Flushed", 230 | "metric": "", 231 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22rate(mysql_global_status_innodb_pages_written%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D)%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-8-20%2016%3A2%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 232 | "refId": "A", 233 | "step": 300 234 | } 235 | ], 236 | "timeFrom": null, 237 | "timeShift": null, 238 | "title": "MyISAM Key Cache", 239 | "tooltip": { 240 | "msResolution": false, 241 | "shared": true, 242 | "value_type": "individual" 243 | }, 244 | "type": "graph", 245 | "xaxis": { 246 | "show": true 247 | }, 248 | "yaxes": [ 249 | { 250 | "format": "short", 251 | "logBase": 1, 252 | "max": null, 253 | "min": 0, 254 | "show": true 255 | }, 256 | { 257 | "format": "short", 258 | "logBase": 1, 259 | "max": null, 260 | "min": 0, 261 | "show": true 262 | } 263 | ] 264 | }, 265 | { 266 | "aliasColors": {}, 267 | "bars": false, 268 | "datasource": "Prometheus", 269 | "decimals": 2, 270 | "editable": true, 271 | "error": false, 272 | "fill": 2, 273 | "grid": { 274 | "threshold1": null, 275 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 276 | "threshold2": null, 277 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 278 | }, 279 | "id": 22, 280 | "legend": { 281 | "alignAsTable": true, 282 | "avg": true, 283 | "current": false, 284 | "max": true, 285 | "min": true, 286 | "rightSide": false, 287 | "show": true, 288 | "total": false, 289 | "values": true 290 | }, 291 | "lines": true, 292 | "linewidth": 2, 293 | "links": [], 294 | "nullPointMode": "null", 295 | "percentage": false, 296 | "pointradius": 5, 297 | "points": false, 298 | "renderer": "flot", 299 | "seriesOverrides": [ 300 | { 301 | "alias": "Key Reads", 302 | "fill": 0 303 | }, 304 | { 305 | "alias": "Key Writes", 306 | "fill": 0, 307 | "transform": "negative-Y" 308 | }, 309 | { 310 | "alias": "Key Write Requests", 311 | "transform": "negative-Y" 312 | } 313 | ], 314 | "span": 7, 315 | "stack": false, 316 | "steppedLine": false, 317 | "targets": [ 318 | { 319 | "calculatedInterval": "2m", 320 | "datasourceErrors": {}, 321 | "errors": {}, 322 | "expr": "rate(mysql_global_status_key_reads{alias=\"$host\"}[$interval]) / rate(mysql_global_status_key_read_requests{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_reads{alias=\"$host\"}[5m]) / irate(mysql_global_status_key_read_requests{alias=\"$host\"}[5m])", 323 | "interval": "$interval", 324 | "intervalFactor": 1, 325 | "legendFormat": "Key Read Ratio", 326 | "metric": "", 327 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 328 | "refId": "D", 329 | "step": 300 330 | }, 331 | { 332 | "calculatedInterval": "2m", 333 | "datasourceErrors": {}, 334 | "errors": {}, 335 | "expr": "rate(mysql_global_status_key_writes{alias=\"$host\"}[$interval]) / rate(mysql_global_status_key_write_requests{alias=\"$host\"}[$interval]) or irate(mysql_global_status_key_writes{alias=\"$host\"}[5m]) / irate(mysql_global_status_key_write_requests{alias=\"$host\"}[5m])", 336 | "interval": "$interval", 337 | "intervalFactor": 1, 338 | "legendFormat": "Key Write Ratio", 339 | "metric": "", 340 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22mysql_global_status_innodb_buffer_pool_pages_free%7Balias%3D%5C%22%24host%5C%22%7D%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-9-2%207%3A21%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Atrue%2C%22tab%22%3A0%7D%5D", 341 | "refId": "A", 342 | "step": 300 343 | } 344 | ], 345 | "timeFrom": null, 346 | "timeShift": null, 347 | "title": "MyISAM Key Buffer Performance", 348 | "tooltip": { 349 | "msResolution": false, 350 | "shared": true, 351 | "value_type": "individual" 352 | }, 353 | "type": "graph", 354 | "xaxis": { 355 | "show": true 356 | }, 357 | "yaxes": [ 358 | { 359 | "format": "short", 360 | "logBase": 1, 361 | "max": null, 362 | "min": 0, 363 | "show": true 364 | }, 365 | { 366 | "format": "short", 367 | "logBase": 1, 368 | "max": null, 369 | "min": 0, 370 | "show": true 371 | } 372 | ] 373 | }, 374 | { 375 | "content": "The `Key_reads/Key_read_requests` ratio should normally be less than 0.01.\n\nThe `Key_writes/Key_write_requests` ratio is usually near 1 if you are using mostly updates and deletes, but might be much smaller if you tend to do updates that affect many rows at the same time or if you are using the `DELAY_KEY_WRITE` table option.", 376 | "datasource": "Prometheus", 377 | "editable": true, 378 | "error": false, 379 | "height": "", 380 | "id": 23, 381 | "links": [], 382 | "mode": "markdown", 383 | "span": 5, 384 | "style": {}, 385 | "title": "", 386 | "type": "text" 387 | } 388 | ], 389 | "showTitle": false, 390 | "title": "InnoDB Stats" 391 | } 392 | ], 393 | "schemaVersion": 12, 394 | "sharedCrosshair": true, 395 | "style": "dark", 396 | "tags": [ 397 | "Percona", 398 | "MySQL" 399 | ], 400 | "templating": { 401 | "list": [ 402 | { 403 | "allFormat": "glob", 404 | "auto": true, 405 | "auto_count": 200, 406 | "auto_min": "1s", 407 | "current": { 408 | "text": "auto", 409 | "value": "$__auto_interval" 410 | }, 411 | "datasource": "Prometheus", 412 | "hide": 0, 413 | "includeAll": false, 414 | "label": "Interval", 415 | "multi": false, 416 | "multiFormat": "glob", 417 | "name": "interval", 418 | "options": [ 419 | { 420 | "selected": true, 421 | "text": "auto", 422 | "value": "$__auto_interval" 423 | }, 424 | { 425 | "selected": false, 426 | "text": "1s", 427 | "value": "1s" 428 | }, 429 | { 430 | "selected": false, 431 | "text": "5s", 432 | "value": "5s" 433 | }, 434 | { 435 | "selected": false, 436 | "text": "1m", 437 | "value": "1m" 438 | }, 439 | { 440 | "selected": false, 441 | "text": "5m", 442 | "value": "5m" 443 | }, 444 | { 445 | "selected": false, 446 | "text": "1h", 447 | "value": "1h" 448 | }, 449 | { 450 | "selected": false, 451 | "text": "6h", 452 | "value": "6h" 453 | }, 454 | { 455 | "selected": false, 456 | "text": "1d", 457 | "value": "1d" 458 | } 459 | ], 460 | "query": "1s,5s,1m,5m,1h,6h,1d", 461 | "refresh": 0, 462 | "type": "interval" 463 | }, 464 | { 465 | "allFormat": "glob", 466 | "datasource": "Prometheus", 467 | "hide": 0, 468 | "includeAll": false, 469 | "label": "Host", 470 | "multi": false, 471 | "multiFormat": "regex values", 472 | "name": "host", 473 | "query": "label_values(alias)", 474 | "refresh": 1, 475 | "refresh_on_load": false, 476 | "regex": "", 477 | "type": "query" 478 | } 479 | ] 480 | }, 481 | "time": { 482 | "from": "now-12h", 483 | "to": "now" 484 | }, 485 | "timepicker": { 486 | "collapse": false, 487 | "enable": true, 488 | "notice": false, 489 | "now": true, 490 | "refresh_intervals": [ 491 | "5s", 492 | "10s", 493 | "30s", 494 | "1m", 495 | "5m", 496 | "15m", 497 | "30m", 498 | "1h", 499 | "2h", 500 | "1d" 501 | ], 502 | "status": "Stable", 503 | "time_options": [ 504 | "5m", 505 | "15m", 506 | "1h", 507 | "6h", 508 | "12h", 509 | "24h", 510 | "2d", 511 | "7d", 512 | "30d" 513 | ], 514 | "type": "timepicker" 515 | }, 516 | "timezone": "browser", 517 | "title": "MySQL MyISAM Metrics | Percona App", 518 | "version": 0 519 | } -------------------------------------------------------------------------------- /src/dashboards/MySQL_Query_Response_Time.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [] 4 | }, 5 | "editable": true, 6 | "hideControls": false, 7 | "id": null, 8 | "links": [], 9 | "originalTitle": "MySQL Query Response Time", 10 | "refresh": false, 11 | "rows": [ 12 | { 13 | "collapse": false, 14 | "editable": true, 15 | "height": "250px", 16 | "panels": [ 17 | { 18 | "aliasColors": {}, 19 | "bars": false, 20 | "datasource": "Prometheus", 21 | "decimals": 2, 22 | "editable": true, 23 | "error": false, 24 | "fill": 2, 25 | "grid": { 26 | "threshold1": null, 27 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 28 | "threshold2": null, 29 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 30 | }, 31 | "id": 6, 32 | "legend": { 33 | "alignAsTable": true, 34 | "avg": true, 35 | "current": false, 36 | "hideZero": false, 37 | "max": true, 38 | "min": true, 39 | "rightSide": false, 40 | "show": true, 41 | "total": false, 42 | "values": true 43 | }, 44 | "lines": true, 45 | "linewidth": 2, 46 | "links": [], 47 | "nullPointMode": "null", 48 | "percentage": false, 49 | "pointradius": 5, 50 | "points": false, 51 | "renderer": "flot", 52 | "seriesOverrides": [], 53 | "span": 12, 54 | "stack": false, 55 | "steppedLine": false, 56 | "targets": [ 57 | { 58 | "calculatedInterval": "2m", 59 | "datasourceErrors": {}, 60 | "errors": {}, 61 | "expr": "rate(mysql_info_schema_query_response_time_count_sum{alias=\"$host\"}[$interval]) / on (alias) rate(mysql_info_schema_query_response_time_count_count{alias=\"$host\"}[$interval]) * 1000 or irate(mysql_info_schema_query_response_time_count_sum{alias=\"$host\"}[5m]) / on (alias) irate(mysql_info_schema_query_response_time_count_count{alias=\"$host\"}[5m]) * 1000", 62 | "hide": false, 63 | "interval": "$interval", 64 | "intervalFactor": 1, 65 | "legendFormat": "Time", 66 | "metric": "", 67 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22rate(mysql_global_status_connections%5B%24interval%5D)%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%207%3A46%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 68 | "refId": "B", 69 | "step": 300 70 | } 71 | ], 72 | "timeFrom": null, 73 | "timeShift": null, 74 | "title": "Average Query Response Time", 75 | "tooltip": { 76 | "msResolution": false, 77 | "shared": true, 78 | "value_type": "cumulative" 79 | }, 80 | "type": "graph", 81 | "xaxis": { 82 | "show": true 83 | }, 84 | "yaxes": [ 85 | { 86 | "format": "ms", 87 | "logBase": 1, 88 | "max": null, 89 | "min": 0, 90 | "show": true 91 | }, 92 | { 93 | "format": "short", 94 | "logBase": 1, 95 | "max": null, 96 | "min": 0, 97 | "show": true 98 | } 99 | ] 100 | }, 101 | { 102 | "aliasColors": {}, 103 | "bars": false, 104 | "datasource": "Prometheus", 105 | "decimals": 2, 106 | "editable": true, 107 | "error": false, 108 | "fill": 2, 109 | "grid": { 110 | "threshold1": null, 111 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 112 | "threshold2": null, 113 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 114 | }, 115 | "height": "", 116 | "hideTimeOverride": false, 117 | "id": 7, 118 | "isNew": true, 119 | "legend": { 120 | "alignAsTable": true, 121 | "avg": true, 122 | "current": false, 123 | "hideEmpty": false, 124 | "hideZero": false, 125 | "max": true, 126 | "min": true, 127 | "rightSide": true, 128 | "show": true, 129 | "sort": null, 130 | "sortDesc": null, 131 | "total": false, 132 | "values": true 133 | }, 134 | "lines": true, 135 | "linewidth": 2, 136 | "links": [], 137 | "nullPointMode": "null", 138 | "percentage": false, 139 | "pointradius": 5, 140 | "points": false, 141 | "renderer": "flot", 142 | "seriesOverrides": [ 143 | { 144 | "alias": "Queries >10s", 145 | "color": "#E24D42" 146 | }, 147 | { 148 | "alias": "Queries 1s - 10s", 149 | "color": "#EF843C" 150 | }, 151 | { 152 | "alias": "Queries 100ms - 1s", 153 | "color": "#EAB839" 154 | } 155 | ], 156 | "span": 12, 157 | "stack": false, 158 | "steppedLine": false, 159 | "targets": [ 160 | { 161 | "expr": "(rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='1'}[$interval]) - on (alias) rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='0.1'}[$interval])) or (irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='1'}[5m]) - on (alias) irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='0.1'}[5m]))", 162 | "hide": false, 163 | "interval": "$interval", 164 | "intervalFactor": 1, 165 | "legendFormat": "Queries 100ms - 1s", 166 | "metric": "", 167 | "refId": "A", 168 | "step": 300 169 | }, 170 | { 171 | "expr": "(rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='10'}[$interval]) - on (alias) rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='1'}[$interval])) or (irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='10'}[5m]) - on (alias) irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='1'}[5m]))", 172 | "interval": "$interval", 173 | "intervalFactor": 1, 174 | "legendFormat": "Queries 1s - 10s", 175 | "refId": "B", 176 | "step": 300 177 | }, 178 | { 179 | "expr": "(rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='100000'}[$interval]) - on (alias) rate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='10'}[$interval])) or (irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='100000'}[5m]) - on (alias) irate(mysql_info_schema_query_response_time_count_bucket{alias=\"$host\",le='10'}[5m]))", 180 | "interval": "$interval", 181 | "intervalFactor": 1, 182 | "legendFormat": "Queries >10s", 183 | "refId": "C", 184 | "step": 300 185 | } 186 | ], 187 | "timeFrom": null, 188 | "timeShift": null, 189 | "title": "Query Response Time Distribution", 190 | "tooltip": { 191 | "msResolution": false, 192 | "shared": true, 193 | "value_type": "individual" 194 | }, 195 | "transparent": false, 196 | "type": "graph", 197 | "xaxis": { 198 | "show": true 199 | }, 200 | "yaxes": [ 201 | { 202 | "format": "ops", 203 | "logBase": 1, 204 | "max": null, 205 | "min": 0, 206 | "show": true 207 | }, 208 | { 209 | "format": "ops", 210 | "logBase": 1, 211 | "max": null, 212 | "min": 0, 213 | "show": true 214 | } 215 | ] 216 | }, 217 | { 218 | "content": "These graphs require additional options to be enabled for mysqld_exporter: `-collect.info_schema.query_response_time=true`\n\nAlso query response time distribution should be installed on MySQL via plugin and `query_response_time_stats` is `ON`.", 219 | "datasource": "Prometheus", 220 | "editable": true, 221 | "error": false, 222 | "height": "50px", 223 | "id": 5, 224 | "links": [], 225 | "mode": "markdown", 226 | "span": 12, 227 | "style": {}, 228 | "title": "", 229 | "transparent": true, 230 | "type": "text" 231 | } 232 | ], 233 | "showTitle": false, 234 | "title": "Query Response Time Distribution" 235 | } 236 | ], 237 | "schemaVersion": 12, 238 | "sharedCrosshair": true, 239 | "style": "dark", 240 | "tags": [ 241 | "Percona", 242 | "MySQL" 243 | ], 244 | "templating": { 245 | "list": [ 246 | { 247 | "allFormat": "glob", 248 | "auto": true, 249 | "auto_count": 200, 250 | "auto_min": "1s", 251 | "current": { 252 | "text": "auto", 253 | "value": "$__auto_interval" 254 | }, 255 | "datasource": "Prometheus", 256 | "hide": 0, 257 | "includeAll": false, 258 | "label": "Interval", 259 | "multi": false, 260 | "multiFormat": "glob", 261 | "name": "interval", 262 | "options": [ 263 | { 264 | "selected": true, 265 | "text": "auto", 266 | "value": "$__auto_interval" 267 | }, 268 | { 269 | "selected": false, 270 | "text": "1s", 271 | "value": "1s" 272 | }, 273 | { 274 | "selected": false, 275 | "text": "5s", 276 | "value": "5s" 277 | }, 278 | { 279 | "selected": false, 280 | "text": "1m", 281 | "value": "1m" 282 | }, 283 | { 284 | "selected": false, 285 | "text": "5m", 286 | "value": "5m" 287 | }, 288 | { 289 | "selected": false, 290 | "text": "1h", 291 | "value": "1h" 292 | }, 293 | { 294 | "selected": false, 295 | "text": "6h", 296 | "value": "6h" 297 | }, 298 | { 299 | "selected": false, 300 | "text": "1d", 301 | "value": "1d" 302 | } 303 | ], 304 | "query": "1s,5s,1m,5m,1h,6h,1d", 305 | "refresh": 0, 306 | "type": "interval" 307 | }, 308 | { 309 | "allFormat": "glob", 310 | "datasource": "Prometheus", 311 | "hide": 0, 312 | "includeAll": false, 313 | "label": "Host", 314 | "multi": false, 315 | "multiFormat": "glob", 316 | "name": "host", 317 | "query": "label_values(alias)", 318 | "refresh": 1, 319 | "type": "query" 320 | } 321 | ] 322 | }, 323 | "time": { 324 | "from": "now-12h", 325 | "to": "now" 326 | }, 327 | "timepicker": { 328 | "collapse": false, 329 | "enable": true, 330 | "notice": false, 331 | "now": true, 332 | "refresh_intervals": [ 333 | "5s", 334 | "10s", 335 | "30s", 336 | "1m", 337 | "5m", 338 | "15m", 339 | "30m", 340 | "1h", 341 | "2h", 342 | "1d" 343 | ], 344 | "status": "Stable", 345 | "time_options": [ 346 | "5m", 347 | "15m", 348 | "1h", 349 | "6h", 350 | "12h", 351 | "24h", 352 | "2d", 353 | "7d", 354 | "30d" 355 | ], 356 | "type": "timepicker" 357 | }, 358 | "timezone": "browser", 359 | "title": "MySQL Query Response Time | Percona App", 360 | "version": 0 361 | } -------------------------------------------------------------------------------- /src/dashboards/MySQL_User_Statistics.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [] 4 | }, 5 | "editable": true, 6 | "hideControls": false, 7 | "id": null, 8 | "links": [], 9 | "originalTitle": "MySQL User Statistics", 10 | "refresh": false, 11 | "rows": [ 12 | { 13 | "collapse": false, 14 | "editable": true, 15 | "height": "250px", 16 | "panels": [ 17 | { 18 | "content": "These graphs require additional options to be enabled for mysqld_exporter: `-collect.info_schema.userstats=true`\n\nAlso `userstat` should be enabled on MySQL.", 19 | "datasource": "Prometheus", 20 | "editable": true, 21 | "error": false, 22 | "height": "50px", 23 | "id": 36, 24 | "links": [], 25 | "mode": "markdown", 26 | "span": 12, 27 | "style": {}, 28 | "title": "", 29 | "transparent": true, 30 | "type": "text" 31 | }, 32 | { 33 | "aliasColors": {}, 34 | "bars": false, 35 | "datasource": "Prometheus", 36 | "decimals": 2, 37 | "editable": true, 38 | "error": false, 39 | "fill": 2, 40 | "grid": { 41 | "threshold1": null, 42 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 43 | "threshold2": null, 44 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 45 | }, 46 | "id": 25, 47 | "legend": { 48 | "alignAsTable": false, 49 | "avg": false, 50 | "current": false, 51 | "hideEmpty": false, 52 | "max": false, 53 | "min": false, 54 | "rightSide": false, 55 | "show": true, 56 | "total": false, 57 | "values": false 58 | }, 59 | "lines": true, 60 | "linewidth": 2, 61 | "links": [], 62 | "nullPointMode": "null", 63 | "percentage": false, 64 | "pointradius": 5, 65 | "points": false, 66 | "renderer": "flot", 67 | "seriesOverrides": [], 68 | "span": 6, 69 | "stack": false, 70 | "steppedLine": false, 71 | "targets": [ 72 | { 73 | "calculatedInterval": "2m", 74 | "datasourceErrors": {}, 75 | "errors": {}, 76 | "expr": "topk(5, (rate(mysql_info_schema_user_statistics_total_ssl_connections_total{alias=\"$host\"}[$interval]) + rate(mysql_info_schema_user_statistics_total_connections{alias=\"$host\"}[$interval]))>0) or topk(5, (irate(mysql_info_schema_user_statistics_total_ssl_connections_total{alias=\"$host\"}[5m]) + irate(mysql_info_schema_user_statistics_total_connections{alias=\"$host\"}[5m]))>0)", 77 | "interval": "$interval", 78 | "intervalFactor": 1, 79 | "legendFormat": "{{ user }}", 80 | "metric": "", 81 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 82 | "refId": "A", 83 | "step": 300 84 | } 85 | ], 86 | "timeFrom": null, 87 | "timeShift": null, 88 | "title": "Top Users by Connections", 89 | "tooltip": { 90 | "msResolution": false, 91 | "shared": true, 92 | "value_type": "individual" 93 | }, 94 | "type": "graph", 95 | "xaxis": { 96 | "show": true 97 | }, 98 | "yaxes": [ 99 | { 100 | "format": "short", 101 | "logBase": 1, 102 | "max": null, 103 | "min": 0, 104 | "show": true 105 | }, 106 | { 107 | "format": "short", 108 | "logBase": 1, 109 | "max": null, 110 | "min": 0, 111 | "show": true 112 | } 113 | ] 114 | }, 115 | { 116 | "aliasColors": {}, 117 | "bars": false, 118 | "datasource": "Prometheus", 119 | "decimals": 2, 120 | "editable": true, 121 | "error": false, 122 | "fill": 2, 123 | "grid": { 124 | "threshold1": null, 125 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 126 | "threshold2": null, 127 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 128 | }, 129 | "id": 39, 130 | "legend": { 131 | "alignAsTable": false, 132 | "avg": false, 133 | "current": false, 134 | "hideEmpty": false, 135 | "max": false, 136 | "min": false, 137 | "rightSide": false, 138 | "show": true, 139 | "total": false, 140 | "values": false 141 | }, 142 | "lines": true, 143 | "linewidth": 2, 144 | "links": [], 145 | "nullPointMode": "null", 146 | "percentage": false, 147 | "pointradius": 5, 148 | "points": false, 149 | "renderer": "flot", 150 | "seriesOverrides": [], 151 | "span": 6, 152 | "stack": false, 153 | "steppedLine": false, 154 | "targets": [ 155 | { 156 | "calculatedInterval": "2m", 157 | "datasourceErrors": {}, 158 | "errors": {}, 159 | "expr": "topk(5, (rate(mysql_info_schema_user_statistics_bytes_sent_total{alias=\"$host\"}[$interval]) + rate(mysql_info_schema_user_statistics_bytes_received_total{alias=\"$host\"}[$interval]))>0) or topk(5, (irate(mysql_info_schema_user_statistics_bytes_sent_total{alias=\"$host\"}[5m]) + irate(mysql_info_schema_user_statistics_bytes_received_total{alias=\"$host\"}[5m]))>0)", 160 | "interval": "$interval", 161 | "intervalFactor": 1, 162 | "legendFormat": "{{ user }}", 163 | "metric": "", 164 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 165 | "refId": "A", 166 | "step": 300 167 | } 168 | ], 169 | "timeFrom": null, 170 | "timeShift": null, 171 | "title": "Top Users by Traffic", 172 | "tooltip": { 173 | "msResolution": false, 174 | "shared": true, 175 | "value_type": "individual" 176 | }, 177 | "type": "graph", 178 | "xaxis": { 179 | "show": true 180 | }, 181 | "yaxes": [ 182 | { 183 | "format": "bytes", 184 | "logBase": 1, 185 | "max": null, 186 | "min": 0, 187 | "show": true 188 | }, 189 | { 190 | "format": "short", 191 | "logBase": 1, 192 | "max": null, 193 | "min": 0, 194 | "show": true 195 | } 196 | ] 197 | }, 198 | { 199 | "aliasColors": {}, 200 | "bars": false, 201 | "datasource": "Prometheus", 202 | "decimals": 2, 203 | "editable": true, 204 | "error": false, 205 | "fill": 2, 206 | "grid": { 207 | "threshold1": null, 208 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 209 | "threshold2": null, 210 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 211 | }, 212 | "id": 37, 213 | "legend": { 214 | "alignAsTable": false, 215 | "avg": false, 216 | "current": false, 217 | "hideEmpty": false, 218 | "max": false, 219 | "min": false, 220 | "rightSide": false, 221 | "show": true, 222 | "total": false, 223 | "values": false 224 | }, 225 | "lines": true, 226 | "linewidth": 2, 227 | "links": [], 228 | "nullPointMode": "null", 229 | "percentage": false, 230 | "pointradius": 5, 231 | "points": false, 232 | "renderer": "flot", 233 | "seriesOverrides": [], 234 | "span": 6, 235 | "stack": false, 236 | "steppedLine": false, 237 | "targets": [ 238 | { 239 | "calculatedInterval": "2m", 240 | "datasourceErrors": {}, 241 | "errors": {}, 242 | "expr": "topk(5, rate(mysql_info_schema_user_statistics_rows_fetched_total{alias=\"$host\"}[$interval])>0) or topk(5, irate(mysql_info_schema_user_statistics_rows_fetched_total{alias=\"$host\"}[5m])>0)", 243 | "interval": "$interval", 244 | "intervalFactor": 1, 245 | "legendFormat": "{{ user }}", 246 | "metric": "", 247 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 248 | "refId": "A", 249 | "step": 300 250 | } 251 | ], 252 | "timeFrom": null, 253 | "timeShift": null, 254 | "title": "Top Users by Rows Fetched", 255 | "tooltip": { 256 | "msResolution": false, 257 | "shared": true, 258 | "value_type": "individual" 259 | }, 260 | "type": "graph", 261 | "xaxis": { 262 | "show": true 263 | }, 264 | "yaxes": [ 265 | { 266 | "format": "short", 267 | "logBase": 1, 268 | "max": null, 269 | "min": 0, 270 | "show": true 271 | }, 272 | { 273 | "format": "short", 274 | "logBase": 1, 275 | "max": null, 276 | "min": 0, 277 | "show": true 278 | } 279 | ] 280 | }, 281 | { 282 | "aliasColors": {}, 283 | "bars": false, 284 | "datasource": "Prometheus", 285 | "decimals": 2, 286 | "editable": true, 287 | "error": false, 288 | "fill": 2, 289 | "grid": { 290 | "threshold1": null, 291 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 292 | "threshold2": null, 293 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 294 | }, 295 | "id": 38, 296 | "legend": { 297 | "alignAsTable": false, 298 | "avg": false, 299 | "current": false, 300 | "hideEmpty": false, 301 | "max": false, 302 | "min": false, 303 | "rightSide": false, 304 | "show": true, 305 | "total": false, 306 | "values": false 307 | }, 308 | "lines": true, 309 | "linewidth": 2, 310 | "links": [], 311 | "nullPointMode": "null", 312 | "percentage": false, 313 | "pointradius": 5, 314 | "points": false, 315 | "renderer": "flot", 316 | "seriesOverrides": [], 317 | "span": 6, 318 | "stack": false, 319 | "steppedLine": false, 320 | "targets": [ 321 | { 322 | "calculatedInterval": "2m", 323 | "datasourceErrors": {}, 324 | "errors": {}, 325 | "expr": "topk(5, rate(mysql_info_schema_user_statistics_rows_updated_total{alias=\"$host\"}[$interval])>0) or topk(5, irate(mysql_info_schema_user_statistics_rows_updated_total{alias=\"$host\"}[5m])>0)", 326 | "interval": "$interval", 327 | "intervalFactor": 1, 328 | "legendFormat": "{{ user }}", 329 | "metric": "", 330 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 331 | "refId": "A", 332 | "step": 300 333 | } 334 | ], 335 | "timeFrom": null, 336 | "timeShift": null, 337 | "title": "Top Users by Rows Updated", 338 | "tooltip": { 339 | "msResolution": false, 340 | "shared": true, 341 | "value_type": "individual" 342 | }, 343 | "type": "graph", 344 | "xaxis": { 345 | "show": true 346 | }, 347 | "yaxes": [ 348 | { 349 | "format": "short", 350 | "logBase": 1, 351 | "max": null, 352 | "min": 0, 353 | "show": true 354 | }, 355 | { 356 | "format": "short", 357 | "logBase": 1, 358 | "max": null, 359 | "min": 0, 360 | "show": true 361 | } 362 | ] 363 | }, 364 | { 365 | "aliasColors": {}, 366 | "bars": false, 367 | "datasource": "Prometheus", 368 | "decimals": 2, 369 | "editable": true, 370 | "error": false, 371 | "fill": 2, 372 | "grid": { 373 | "threshold1": null, 374 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 375 | "threshold2": null, 376 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 377 | }, 378 | "id": 40, 379 | "legend": { 380 | "alignAsTable": false, 381 | "avg": false, 382 | "current": false, 383 | "hideEmpty": false, 384 | "max": false, 385 | "min": false, 386 | "rightSide": false, 387 | "show": true, 388 | "total": false, 389 | "values": false 390 | }, 391 | "lines": true, 392 | "linewidth": 2, 393 | "links": [], 394 | "nullPointMode": "null", 395 | "percentage": false, 396 | "pointradius": 5, 397 | "points": false, 398 | "renderer": "flot", 399 | "seriesOverrides": [], 400 | "span": 6, 401 | "stack": false, 402 | "steppedLine": false, 403 | "targets": [ 404 | { 405 | "calculatedInterval": "2m", 406 | "datasourceErrors": {}, 407 | "errors": {}, 408 | "expr": "topk(5, rate(mysql_info_schema_user_statistics_busy_seconds_total{alias=\"$host\"}[$interval])>0) or topk(5, irate(mysql_info_schema_user_statistics_busy_seconds_total{alias=\"$host\"}[5m])>0)", 409 | "interval": "$interval", 410 | "intervalFactor": 1, 411 | "legendFormat": "{{ user }}", 412 | "metric": "", 413 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 414 | "refId": "A", 415 | "step": 300 416 | } 417 | ], 418 | "timeFrom": null, 419 | "timeShift": null, 420 | "title": "Top Users by Busy Time", 421 | "tooltip": { 422 | "msResolution": false, 423 | "shared": true, 424 | "value_type": "individual" 425 | }, 426 | "type": "graph", 427 | "xaxis": { 428 | "show": true 429 | }, 430 | "yaxes": [ 431 | { 432 | "format": "s", 433 | "logBase": 1, 434 | "max": null, 435 | "min": 0, 436 | "show": true 437 | }, 438 | { 439 | "format": "short", 440 | "logBase": 1, 441 | "max": null, 442 | "min": 0, 443 | "show": true 444 | } 445 | ] 446 | }, 447 | { 448 | "aliasColors": {}, 449 | "bars": false, 450 | "datasource": "Prometheus", 451 | "decimals": 2, 452 | "editable": true, 453 | "error": false, 454 | "fill": 2, 455 | "grid": { 456 | "threshold1": null, 457 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 458 | "threshold2": null, 459 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 460 | }, 461 | "id": 41, 462 | "legend": { 463 | "alignAsTable": false, 464 | "avg": false, 465 | "current": false, 466 | "hideEmpty": false, 467 | "max": false, 468 | "min": false, 469 | "rightSide": false, 470 | "show": true, 471 | "total": false, 472 | "values": false 473 | }, 474 | "lines": true, 475 | "linewidth": 2, 476 | "links": [], 477 | "nullPointMode": "null", 478 | "percentage": false, 479 | "pointradius": 5, 480 | "points": false, 481 | "renderer": "flot", 482 | "seriesOverrides": [], 483 | "span": 6, 484 | "stack": false, 485 | "steppedLine": false, 486 | "targets": [ 487 | { 488 | "calculatedInterval": "2m", 489 | "datasourceErrors": {}, 490 | "errors": {}, 491 | "expr": "topk(5, rate(mysql_info_schema_user_statistics_cpu_time_seconds_total{alias=\"$host\"}[$interval])>0) or topk(5, irate(mysql_info_schema_user_statistics_cpu_time_seconds_total{alias=\"$host\"}[5m])>0)", 492 | "interval": "$interval", 493 | "intervalFactor": 1, 494 | "legendFormat": "{{ user }}", 495 | "metric": "", 496 | "prometheusLink": "/api/datasources/proxy/1/graph#%5B%7B%22expr%22%3A%22topk(5%2C%20rate(mysql_info_schema_user_statistics_total_connections%7Balias%3D%5C%22%24host%5C%22%7D%5B%24interval%5D))%22%2C%22range_input%22%3A%2243200s%22%2C%22end_input%22%3A%222015-10-6%208%3A19%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 497 | "refId": "A", 498 | "step": 300 499 | } 500 | ], 501 | "timeFrom": null, 502 | "timeShift": null, 503 | "title": "Top Users by CPU Time", 504 | "tooltip": { 505 | "msResolution": false, 506 | "shared": true, 507 | "value_type": "individual" 508 | }, 509 | "type": "graph", 510 | "xaxis": { 511 | "show": true 512 | }, 513 | "yaxes": [ 514 | { 515 | "format": "s", 516 | "logBase": 1, 517 | "max": null, 518 | "min": 0, 519 | "show": true 520 | }, 521 | { 522 | "format": "short", 523 | "logBase": 1, 524 | "max": null, 525 | "min": 0, 526 | "show": true 527 | } 528 | ] 529 | } 530 | ], 531 | "showTitle": false, 532 | "title": "User Stats" 533 | } 534 | ], 535 | "schemaVersion": 12, 536 | "sharedCrosshair": true, 537 | "style": "dark", 538 | "tags": [ 539 | "MySQL", 540 | "Percona" 541 | ], 542 | "templating": { 543 | "list": [ 544 | { 545 | "allFormat": "glob", 546 | "auto": true, 547 | "auto_count": 200, 548 | "auto_min": "1s", 549 | "current": { 550 | "text": "auto", 551 | "value": "$__auto_interval" 552 | }, 553 | "datasource": "Prometheus", 554 | "hide": 0, 555 | "includeAll": false, 556 | "label": "Interval", 557 | "multi": false, 558 | "multiFormat": "glob", 559 | "name": "interval", 560 | "options": [ 561 | { 562 | "selected": true, 563 | "text": "auto", 564 | "value": "$__auto_interval" 565 | }, 566 | { 567 | "selected": false, 568 | "text": "1s", 569 | "value": "1s" 570 | }, 571 | { 572 | "selected": false, 573 | "text": "5s", 574 | "value": "5s" 575 | }, 576 | { 577 | "selected": false, 578 | "text": "1m", 579 | "value": "1m" 580 | }, 581 | { 582 | "selected": false, 583 | "text": "5m", 584 | "value": "5m" 585 | }, 586 | { 587 | "selected": false, 588 | "text": "1h", 589 | "value": "1h" 590 | }, 591 | { 592 | "selected": false, 593 | "text": "6h", 594 | "value": "6h" 595 | }, 596 | { 597 | "selected": false, 598 | "text": "1d", 599 | "value": "1d" 600 | } 601 | ], 602 | "query": "1s,5s,1m,5m,1h,6h,1d", 603 | "refresh": 0, 604 | "type": "interval" 605 | }, 606 | { 607 | "allFormat": "glob", 608 | "datasource": "Prometheus", 609 | "hide": 0, 610 | "includeAll": false, 611 | "label": "Host", 612 | "multi": false, 613 | "multiFormat": "regex values", 614 | "name": "host", 615 | "query": "label_values(alias)", 616 | "refresh": 1, 617 | "refresh_on_load": false, 618 | "regex": "", 619 | "type": "query" 620 | } 621 | ] 622 | }, 623 | "time": { 624 | "from": "now-12h", 625 | "to": "now" 626 | }, 627 | "timepicker": { 628 | "collapse": false, 629 | "enable": true, 630 | "notice": false, 631 | "now": true, 632 | "refresh_intervals": [ 633 | "5s", 634 | "10s", 635 | "30s", 636 | "1m", 637 | "5m", 638 | "15m", 639 | "30m", 640 | "1h", 641 | "2h", 642 | "1d" 643 | ], 644 | "status": "Stable", 645 | "time_options": [ 646 | "5m", 647 | "15m", 648 | "1h", 649 | "6h", 650 | "12h", 651 | "24h", 652 | "2d", 653 | "7d", 654 | "30d" 655 | ], 656 | "type": "timepicker" 657 | }, 658 | "timezone": "browser", 659 | "title": "MySQL User Statistics | Percona App", 660 | "version": 0 661 | } -------------------------------------------------------------------------------- /src/img/percona_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/grafana-app/e42fbf6bf3c15fa745bd13d9ca75dd1a101268aa/src/img/percona_large.png -------------------------------------------------------------------------------- /src/img/percona_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/percona/grafana-app/e42fbf6bf3c15fa745bd13d9ca75dd1a101268aa/src/img/percona_small.png -------------------------------------------------------------------------------- /src/module.js: -------------------------------------------------------------------------------- 1 | import {PerconaAppConfigCtrl} from './components/config'; 2 | 3 | export { 4 | PerconaAppConfigCtrl as ConfigCtrl 5 | }; 6 | --------------------------------------------------------------------------------