├── .env.example ├── .gitignore ├── .infragenie └── infrastructure_model.png ├── LICENSE ├── README.md ├── config.example.mainnet.json ├── config.example.testnet.json ├── data ├── alertmanagerConfig │ └── alertmanager.yml ├── grafanaConfig │ ├── dashboards │ │ ├── Alertmanager.json │ │ ├── Container-Logs.json │ │ ├── Container-Stats.json │ │ ├── Host-Stats-Extended.json │ │ ├── Host-Stats.json │ │ └── Prometheus.json │ └── grafana │ │ ├── grafana.ini │ │ └── provisioning │ │ ├── dashboards │ │ └── dashboards.yaml │ │ └── datasources │ │ └── datasources.yaml ├── lokiConfig │ └── config.yml ├── prometheusConfig │ ├── alert.rules.host │ ├── alert.rules.prod │ └── prometheus.yml ├── promtailConfig │ ├── config-rootless.yml │ └── config.yml └── signerConfig │ └── config.yaml ├── docker-compose-rootless.yml ├── docker-compose.yml └── key.example.yaml /.env.example: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # General configuration 3 | # Get router version from either https://github.com/connext/nxtp/pkgs/container/router-publisher or #amarok-routers channel in Discord 4 | ROUTER_VERSION=sha-041e32c 5 | 6 | ROUTER_EXTERNAL_PORT=8880 7 | GRAFANA_EXTERNAL_PORT=3000 8 | PROMETHEUS_EXTERNAL_PORT=9090 9 | ALERTMANAGER_EXTERNAL_PORT=9093 10 | 11 | GRAFANA_PASSWORD="mySup3rS$curePwd!" 12 | 13 | ################################################################################ 14 | # Monitoring configuration 15 | 16 | LOGDNA_KEY="Get_me_from_mezmo.com" 17 | LOGDNA_TAG="" 18 | 19 | ################################################################################ 20 | # Graph configuration to support decentralized subgraphs 21 | # You will need to create an account at https://thegraph.com/studio/apikeys/ 22 | # Deposit some GRAPH tokens create a API key and set it here 23 | 24 | GRAPH_API_KEY="YOUR_API_KEY_FROM_SUBGRAPH_STUDIO" 25 | 26 | ################################################################################ 27 | # Docker rootless only 28 | USERID=1001 29 | 30 | ################################################################################ 31 | # Docker containers configuration 32 | # You can try to set to the latest or update from Github tested version numbers 33 | WEB3SIGNER_VERSION=23.1-jdk11 34 | RABBITMQ_VERSION=3.11.6-alpine 35 | REDIS_VERSION=7.0.7 36 | LOGDNA_VERSION=v1.2.0 37 | PROMETHEUS_VERSION=v2.41.0 38 | ALERTAMANGER_VERSION=v0.25.0 39 | GRAFANA_VERSION=9.3.2 40 | LOKI_VERSION=2.6.1 41 | PROMTAIL_VERSION=2.6.1 42 | NODE_EXPORTER_VERSION=v1.5.0 43 | CADVISOR_VERSION=v0.47.0 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | config.json 3 | key.yaml -------------------------------------------------------------------------------- /.infragenie/infrastructure_model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/connext/router-docker-compose/26362ba1811a025a9e08c76187f9dd75bbfbe894/.infragenie/infrastructure_model.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Router Docker Compose 2 | 3 | Production-ready docker-compose for Connext routers. 4 | 5 | ## Router Setup Using docker-compose 6 | 7 | ### Requirements 8 | 9 | - [ Docker CE (Community Edition) ](https://docs.docker.com/install/) version 20.10.5 or higher 10 | - [ Docker Compose ](https://docs.docker.com/compose/install/) version 1.27.4 or higher 11 | 12 | ### Run docker-compose Stack 13 | 14 | 1. Clone repo 15 | 16 | ``` 17 | cd ~ 18 | git clone https://github.com/connext/router-docker-compose.git 19 | cd ~/router-docker-compose 20 | ``` 21 | 22 | 2. Rename file `.env.example` to `.env` and modify it. You need to set the following environment variables: 23 | 24 | - `ROUTER_VERSION` - version to use, get router version from either https://github.com/connext/nxtp/pkgs/container/router-publisher or `#amarok-routers` channel in [Discord](https://discord.gg/connext) 25 | - `GRAFANA_PASSWORD` - your password for Grafana 26 | - `LOGDNA_KEY` - LogDNA key, you need to register in [Mezmo App](https://app.mezmo.com/account/signin) and get it from there. You can optionally set `LOGDNA_TAG` as well 27 | - `USERID` - if you use docker rootless, then it should be ID of your user e.g. 1001. 28 | - `*_VERSION` - you can optionally set docker container versions of other apps 29 | 30 | 3. Modify `data/alertmanagerConfig/alertmanager.yml` file and set alert notifications to Mail, Slack, Discord, Telegram, Pagerduty, Opsgenie, etc. Additional configuration might be required. 31 | 32 | 4. Create NXTP configuration file `~/router-docker-compose/config.json`, it will be mounted into router container. See [Connext Configuration docs](https://docs.connext.network/routers/Reference/configuration) for configuration description. You can use `config.example.mainnet.json` or `config.example.testnet.json` as an example. 33 | 34 | 5. (Optional) Create external [Redis](https://redis.io/) instance and insert URL into `redisUrl` in config. (currently the docker-compose file includes redis container as well). If you want to use highly available RabbitMQ service - you can spin up it as well and update `config.json` as well. 35 | 36 | 6. (Optional) Follow security best practices from [Connext Security docs](https://docs.connext.network/routers/Guides/security) 37 | 38 | 7. (Optional) Use docker rootless configuration for better security. Just use `docker-compose-rootless.yml` instead of `docker-compose.yml` and follow [Docker Rootless Guide](https://docs.docker.com/engine/security/rootless/) to enable it. 39 | 40 | 8. (Optional) Edit `docker-compose.yml` to enable port forwarding for Router services and/or Prometheus/Alertmanager. It's disabled by default for security reasons. Do NOT expose these port to public networks, otherwise use proven authentication methods. 41 | 42 | 9. Rename file `key.example.yaml` to `key.yaml` and modify it. Web3Signer yaml key file `~/router-docker-compose/key.yaml` will be mounted into the signer container. This example file uses raw unencrypted files method. See [Web3Signer docs](https://docs.web3signer.consensys.net/en/latest/HowTo/Use-Signing-Keys/). 43 | And for more custom commands of web3signer, edit `~/router-docker-compose/data/signerConfig/config.yaml`. Refer [Web3Signer Command docs](https://docs.web3signer.consensys.net/en/latest/Reference/CLI/CLI-Syntax/) 44 | 45 | 46 | 47 | 10. Create docker-compose services, volumes and network. 48 | 49 | ``` 50 | docker-compose create 51 | ``` 52 | 53 | 11. Run docker-compose stack. 54 | 55 | ``` 56 | docker-compose up -d 57 | ``` 58 | 59 | 12. Check the status. 60 | 61 | ``` 62 | docker-compose ps 63 | OR 64 | docker ps -a 65 | ``` 66 | 67 | 13. Check logs to ensure router started successfully 68 | 69 | ``` 70 | docker-compose logs router-publisher | tail -n 200| grep 'Router publisher boot complete!' 71 | docker-compose logs router-subscriber | tail -n 200| grep 'Router subscriber boot complete!' 72 | ``` 73 | 74 | 14. Check the full logs if needed 75 | 76 | ``` 77 | docker-compose logs 78 | OR 79 | docker-compose logs router-publisher 80 | docker-compose logs router-subscriber 81 | ``` 82 | 83 | You can also use these commands. 84 | 85 | ``` 86 | docker logs router-publisher 87 | docker logs router-subscriber 88 | ``` 89 | 90 | 91 | ## Other Tasks 92 | 93 | ### Stop and delete containers. 94 | 95 | ``` 96 | docker-compose down 97 | ``` 98 | 99 | ### Delete data 100 | 101 | ``` 102 | docker-compose down -v 103 | ``` 104 | 105 | ### Restart Stack 106 | 107 | ``` 108 | docker-compose restart 109 | ``` 110 | 111 | ### Update Version 112 | 113 | 1. Modify `.env` to change `ROUTER_VERSION` 114 | 2. Update stack 115 | 116 | ``` 117 | docker-compose pull 118 | docker-compose up -d 119 | ``` 120 | 121 | 122 | ### Infrastructure model 123 | 124 | ![Infrastructure model](.infragenie/infrastructure_model.png) 125 | -------------------------------------------------------------------------------- /config.example.mainnet.json: -------------------------------------------------------------------------------- 1 | { 2 | "environment": "production", 3 | "logLevel": "debug", 4 | "network": "mainnet", 5 | "web3SignerUrl": "http://signer:9000", 6 | "messageQueue": { 7 | "uri": "amqp://guest:guest@rabbitmq:5672" 8 | }, 9 | "redis": { 10 | "host": "redis", 11 | "port": 6379 12 | }, 13 | "server": { 14 | "adminToken": "MySecretTokenUnknown", 15 | "port": 8080 16 | }, 17 | "chains": { 18 | "6648936": { 19 | "providers": [ "https://rpc.ankr.com/eth" ] 20 | }, 21 | "1634886255": { 22 | "providers": [ "https://rpc.ankr.com/arbitrum" ] 23 | }, 24 | "1869640809": { 25 | "providers": [ "https://rpc.ankr.com/optimism" ] 26 | }, 27 | "1886350457": { 28 | "providers": [ "https://rpc.ankr.com/polygon" ] 29 | }, 30 | "6450786": { 31 | "providers": [ "https://bsc-dataseed.binance.org/" ] 32 | }, 33 | "6778479": { 34 | "providers": [ "https://rpc.gnosischain.com", "https://rpc.ankr.com/gnosis" ] 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /config.example.testnet.json: -------------------------------------------------------------------------------- 1 | { "environment": "staging", 2 | "logLevel": "debug", 3 | "network": "testnet", 4 | "web3SignerUrl": "http://signer:9000", 5 | "messageQueue": { 6 | "uri": "amqp://guest:guest@rabbitmq:5672" 7 | }, 8 | "redis": { 9 | "host": "redis", 10 | "port": 6379 11 | }, 12 | "server": { 13 | "adminToken": "asdfasdf2", 14 | "port": 8080 15 | }, 16 | "chains": { 17 | "1735356532": { 18 | "providers": [ "https://goerli.optimism.io" ] 19 | }, 20 | "1735353714": { 21 | "providers": [ "https://rpc.ankr.com/eth_goerli" ] 22 | }, 23 | "9991": { 24 | "providers": [ "https://rpc.ankr.com/polygon_mumbai" ] 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /data/alertmanagerConfig/alertmanager.yml: -------------------------------------------------------------------------------- 1 | global: 2 | resolve_timeout: 1m 3 | # slack_api_url: 'https://hooks.slack.com/services/your_hook' 4 | # telegram_api_url: 'https://api.telegram.org' 5 | # pagerduty_url: 'https://events.pagerduty.com/v2/enqueue' 6 | 7 | 8 | route: 9 | receiver: 'mail' 10 | # receiver: 'slack-notifications' 11 | # receiver: 'telegram-notifications' 12 | # receiver: 'telegram-notifications' 13 | repeat_interval: 4h 14 | group_by: [ alertname ] 15 | 16 | 17 | receivers: 18 | - name: 'mail' 19 | email_configs: 20 | - smarthost: 'smtp.gmail.com:465' 21 | auth_username: 'your_mail@gmail.com' 22 | auth_identity: 'your_mail@gmail.com' 23 | auth_password: '' 24 | from: 'your_mail@gmail.com' 25 | to: 'some_mail@gmail.com' 26 | send_resolved: true 27 | 28 | ### Slack configuration 29 | # - name: 'slack-notifications' 30 | # slack_configs: 31 | # - channel: '#monitoring-instances' 32 | # send_resolved: true 33 | 34 | ### Discord configuration 35 | ### Check out https://github.com/benjojo/alertmanager-discord - you need to run a separate docker container 36 | 37 | ### Telegram configuration 38 | # - name: 'telegram-notifications' 39 | # telegram_configs: 40 | # - send_resolved: | default = true ] 41 | # bot_token: '' 42 | # chat_id: 1111223 43 | # message: '{{ template "telegram.default.message" .}}' 44 | # disable_notifications: false 45 | # parse_mode: "MarkdownV2" 46 | 47 | ### Pagerduty configuration 48 | # - name: 'pagerduty-notifications' 49 | # pagerduty-configs: 50 | # - send_resolved: | default = true ] 51 | # # The following two options are mutually exclusive. 52 | # # The PagerDuty integration key (when using PagerDuty integration type `Events API v2`). 53 | # routing_key: 54 | # # The PagerDuty integration key (when using PagerDuty integration type `Prometheus`). 55 | # service_key: 56 | -------------------------------------------------------------------------------- /data/grafanaConfig/dashboards/Container-Logs.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [ 4 | { 5 | "builtIn": 1, 6 | "datasource": "-- Grafana --", 7 | "enable": true, 8 | "hide": true, 9 | "iconColor": "rgba(0, 211, 255, 1)", 10 | "name": "Annotations & Alerts", 11 | "type": "dashboard" 12 | } 13 | ] 14 | }, 15 | "editable": true, 16 | "gnetId": null, 17 | "graphTooltip": 0, 18 | "id": null, 19 | "iteration": 1638203608247, 20 | "links": [], 21 | "panels": [ 22 | { 23 | "collapsed": false, 24 | "datasource": null, 25 | "gridPos": { 26 | "h": 1, 27 | "w": 24, 28 | "x": 0, 29 | "y": 0 30 | }, 31 | "id": 2, 32 | "panels": [], 33 | "repeat": "container", 34 | "scopedVars": { 35 | "container": { 36 | "selected": false, 37 | "text": "web3signer:develop", 38 | "value": "web3signer:develop" 39 | } 40 | }, 41 | "title": "$container", 42 | "type": "row" 43 | }, 44 | { 45 | "datasource": "loki", 46 | "fieldConfig": { 47 | "defaults": { 48 | "custom": {} 49 | }, 50 | "overrides": [] 51 | }, 52 | "gridPos": { 53 | "h": 11, 54 | "w": 24, 55 | "x": 0, 56 | "y": 1 57 | }, 58 | "id": 6, 59 | "options": { 60 | "showLabels": false, 61 | "showTime": false, 62 | "sortOrder": "Descending", 63 | "wrapLogMessage": false 64 | }, 65 | "pluginVersion": "7.3.5", 66 | "scopedVars": { 67 | "container": { 68 | "selected": false, 69 | "text": "web3signer:develop", 70 | "value": "web3signer:develop" 71 | } 72 | }, 73 | "targets": [ 74 | { 75 | "expr": "{job=\"containerlogs\", container_name=~\".*/$container\"}", 76 | "legendFormat": "", 77 | "queryType": "randomWalk", 78 | "refId": "A" 79 | } 80 | ], 81 | "timeFrom": null, 82 | "timeShift": null, 83 | "title": "Full Logs", 84 | "type": "logs" 85 | }, 86 | { 87 | "collapsed": false, 88 | "datasource": null, 89 | "gridPos": { 90 | "h": 1, 91 | "w": 24, 92 | "x": 0, 93 | "y": 12 94 | }, 95 | "id": 7, 96 | "panels": [], 97 | "repeatIteration": 1638203608247, 98 | "repeatPanelId": 2, 99 | "scopedVars": { 100 | "container": { 101 | "selected": false, 102 | "text": "nxtp-router:latest", 103 | "value": "nxtp-router:latest" 104 | } 105 | }, 106 | "title": "$container", 107 | "type": "row" 108 | }, 109 | { 110 | "datasource": "loki", 111 | "fieldConfig": { 112 | "defaults": { 113 | "custom": {} 114 | }, 115 | "overrides": [] 116 | }, 117 | "gridPos": { 118 | "h": 11, 119 | "w": 24, 120 | "x": 0, 121 | "y": 13 122 | }, 123 | "id": 8, 124 | "options": { 125 | "showLabels": false, 126 | "showTime": false, 127 | "sortOrder": "Descending", 128 | "wrapLogMessage": false 129 | }, 130 | "pluginVersion": "7.3.5", 131 | "repeatIteration": 1638203608247, 132 | "repeatPanelId": 6, 133 | "repeatedByRow": true, 134 | "scopedVars": { 135 | "container": { 136 | "selected": false, 137 | "text": "nxtp-router:latest", 138 | "value": "nxtp-router:latest" 139 | } 140 | }, 141 | "targets": [ 142 | { 143 | "expr": "{job=\"containerlogs\", container_name=~\".*/$container\"}", 144 | "legendFormat": "", 145 | "queryType": "randomWalk", 146 | "refId": "A" 147 | } 148 | ], 149 | "timeFrom": null, 150 | "timeShift": null, 151 | "title": "Full Logs", 152 | "type": "logs" 153 | }, 154 | { 155 | "collapsed": false, 156 | "datasource": null, 157 | "gridPos": { 158 | "h": 1, 159 | "w": 24, 160 | "x": 0, 161 | "y": 24 162 | }, 163 | "id": 9, 164 | "panels": [], 165 | "repeatIteration": 1638203608247, 166 | "repeatPanelId": 2, 167 | "scopedVars": { 168 | "container": { 169 | "selected": false, 170 | "text": "logspout:v1.2.0", 171 | "value": "logspout:v1.2.0" 172 | } 173 | }, 174 | "title": "$container", 175 | "type": "row" 176 | }, 177 | { 178 | "datasource": "loki", 179 | "fieldConfig": { 180 | "defaults": { 181 | "custom": {} 182 | }, 183 | "overrides": [] 184 | }, 185 | "gridPos": { 186 | "h": 11, 187 | "w": 24, 188 | "x": 0, 189 | "y": 25 190 | }, 191 | "id": 10, 192 | "options": { 193 | "showLabels": false, 194 | "showTime": false, 195 | "sortOrder": "Descending", 196 | "wrapLogMessage": false 197 | }, 198 | "pluginVersion": "7.3.5", 199 | "repeatIteration": 1638203608247, 200 | "repeatPanelId": 6, 201 | "repeatedByRow": true, 202 | "scopedVars": { 203 | "container": { 204 | "selected": false, 205 | "text": "logspout:v1.2.0", 206 | "value": "logspout:v1.2.0" 207 | } 208 | }, 209 | "targets": [ 210 | { 211 | "expr": "{job=\"containerlogs\", container_name=~\".*/$container\"}", 212 | "legendFormat": "", 213 | "queryType": "randomWalk", 214 | "refId": "A" 215 | } 216 | ], 217 | "timeFrom": null, 218 | "timeShift": null, 219 | "title": "Full Logs", 220 | "type": "logs" 221 | } 222 | ], 223 | "schemaVersion": 26, 224 | "style": "dark", 225 | "tags": [ 226 | "Logs" 227 | ], 228 | "templating": { 229 | "list": [ 230 | { 231 | "allValue": null, 232 | "current": { 233 | "selected": true, 234 | "tags": [], 235 | "text": [ 236 | "All" 237 | ], 238 | "value": [ 239 | "$__all" 240 | ] 241 | }, 242 | "datasource": "loki", 243 | "definition": "label_values(container_name)", 244 | "error": null, 245 | "hide": 0, 246 | "includeAll": true, 247 | "label": null, 248 | "multi": true, 249 | "name": "container", 250 | "options": [ 251 | { 252 | "selected": true, 253 | "text": "All", 254 | "value": "$__all" 255 | }, 256 | { 257 | "selected": false, 258 | "text": "web3signer:develop", 259 | "value": "web3signer:develop" 260 | }, 261 | { 262 | "selected": false, 263 | "text": "nxtp-router:latest", 264 | "value": "nxtp-router:latest" 265 | }, 266 | { 267 | "selected": false, 268 | "text": "logspout:v1.2.0", 269 | "value": "logspout:v1.2.0" 270 | } 271 | ], 272 | "query": "label_values(container_name)", 273 | "refresh": 0, 274 | "regex": ".*/(.*)", 275 | "skipUrlSync": false, 276 | "sort": 0, 277 | "tagValuesQuery": "", 278 | "tags": [], 279 | "tagsQuery": "", 280 | "type": "query", 281 | "useTags": false 282 | } 283 | ] 284 | }, 285 | "time": { 286 | "from": "now-6h", 287 | "to": "now" 288 | }, 289 | "timepicker": {}, 290 | "timezone": "", 291 | "title": "Containers Logs", 292 | "uid": null, 293 | "version": 0 294 | } 295 | -------------------------------------------------------------------------------- /data/grafanaConfig/dashboards/Container-Stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [ 4 | { 5 | "$$hashKey": "object:23", 6 | "builtIn": 1, 7 | "datasource": { 8 | "type": "datasource", 9 | "uid": "grafana" 10 | }, 11 | "enable": true, 12 | "hide": true, 13 | "iconColor": "rgba(0, 211, 255, 1)", 14 | "name": "Annotations & Alerts", 15 | "target": { 16 | "limit": 100, 17 | "matchAny": false, 18 | "tags": [], 19 | "type": "dashboard" 20 | }, 21 | "type": "dashboard" 22 | } 23 | ] 24 | }, 25 | "description": "A simple overview of the most important Docker host and container metrics. (cAdvisor/Prometheus)", 26 | "editable": true, 27 | "fiscalYearStartMonth": 0, 28 | "gnetId": 893, 29 | "graphTooltip": 1, 30 | "links": [], 31 | "liveNow": false, 32 | "panels": [ 33 | { 34 | "datasource": { 35 | "type": "prometheus", 36 | "uid": "PBFA97CFB590B2093" 37 | }, 38 | "fieldConfig": { 39 | "defaults": { 40 | "color": { 41 | "mode": "thresholds" 42 | }, 43 | "mappings": [ 44 | { 45 | "options": { 46 | "match": "null", 47 | "result": { 48 | "text": "N/A" 49 | } 50 | }, 51 | "type": "special" 52 | } 53 | ], 54 | "thresholds": { 55 | "mode": "absolute", 56 | "steps": [ 57 | { 58 | "color": "green", 59 | "value": null 60 | }, 61 | { 62 | "color": "red", 63 | "value": 80 64 | } 65 | ] 66 | }, 67 | "unit": "none" 68 | }, 69 | "overrides": [] 70 | }, 71 | "gridPos": { 72 | "h": 4, 73 | "w": 2, 74 | "x": 0, 75 | "y": 0 76 | }, 77 | "id": 31, 78 | "links": [], 79 | "maxDataPoints": 100, 80 | "options": { 81 | "colorMode": "background", 82 | "graphMode": "none", 83 | "justifyMode": "auto", 84 | "orientation": "horizontal", 85 | "reduceOptions": { 86 | "calcs": [ 87 | "lastNotNull" 88 | ], 89 | "fields": "", 90 | "values": false 91 | }, 92 | "textMode": "auto" 93 | }, 94 | "pluginVersion": "9.0.4", 95 | "targets": [ 96 | { 97 | "datasource": { 98 | "type": "prometheus", 99 | "uid": "PBFA97CFB590B2093" 100 | }, 101 | "expr": "count(rate(container_last_seen{name=~\".+\",id=~\".*docker.*\"}[$__rate_interval]))", 102 | "format": "time_series", 103 | "hide": false, 104 | "interval": "", 105 | "intervalFactor": 2, 106 | "legendFormat": "", 107 | "refId": "A", 108 | "step": 1800 109 | }, 110 | { 111 | "datasource": { 112 | "type": "prometheus", 113 | "uid": "PBFA97CFB590B2093" 114 | }, 115 | "expr": "count(rate(container_last_seen{name=~\".+\",id=~\"/docker/.*\"}[$__rate_interval]))", 116 | "format": "time_series", 117 | "hide": true, 118 | "intervalFactor": 1, 119 | "refId": "B", 120 | "step": 1800 121 | } 122 | ], 123 | "title": "Containers", 124 | "type": "stat" 125 | }, 126 | { 127 | "datasource": { 128 | "type": "prometheus", 129 | "uid": "PBFA97CFB590B2093" 130 | }, 131 | "fieldConfig": { 132 | "defaults": { 133 | "color": { 134 | "mode": "thresholds" 135 | }, 136 | "decimals": 0, 137 | "mappings": [ 138 | { 139 | "options": { 140 | "match": "null", 141 | "result": { 142 | "text": "N/A" 143 | } 144 | }, 145 | "type": "special" 146 | } 147 | ], 148 | "thresholds": { 149 | "mode": "absolute", 150 | "steps": [ 151 | { 152 | "color": "rgba(245, 54, 54, 0.9)", 153 | "value": null 154 | }, 155 | { 156 | "color": "rgba(237, 129, 40, 0.89)", 157 | "value": 0 158 | }, 159 | { 160 | "color": "#FA6400", 161 | "value": 1 162 | } 163 | ] 164 | }, 165 | "unit": "none" 166 | }, 167 | "overrides": [] 168 | }, 169 | "gridPos": { 170 | "h": 4, 171 | "w": 2, 172 | "x": 2, 173 | "y": 0 174 | }, 175 | "id": 38, 176 | "links": [], 177 | "maxDataPoints": 100, 178 | "options": { 179 | "colorMode": "background", 180 | "graphMode": "none", 181 | "justifyMode": "auto", 182 | "orientation": "horizontal", 183 | "reduceOptions": { 184 | "calcs": [ 185 | "mean" 186 | ], 187 | "fields": "", 188 | "values": false 189 | }, 190 | "textMode": "auto" 191 | }, 192 | "pluginVersion": "9.0.4", 193 | "targets": [ 194 | { 195 | "datasource": { 196 | "type": "prometheus", 197 | "uid": "PBFA97CFB590B2093" 198 | }, 199 | "expr": "sum(up)", 200 | "format": "time_series", 201 | "hide": false, 202 | "intervalFactor": 1, 203 | "legendFormat": "", 204 | "refId": "A", 205 | "step": 1800 206 | } 207 | ], 208 | "title": "Targets Online", 209 | "type": "stat" 210 | }, 211 | { 212 | "datasource": { 213 | "type": "prometheus", 214 | "uid": "PBFA97CFB590B2093" 215 | }, 216 | "fieldConfig": { 217 | "defaults": { 218 | "color": { 219 | "mode": "thresholds" 220 | }, 221 | "decimals": 0, 222 | "mappings": [ 223 | { 224 | "options": { 225 | "match": "null", 226 | "result": { 227 | "text": "N/A" 228 | } 229 | }, 230 | "type": "special" 231 | } 232 | ], 233 | "max": 1, 234 | "min": 0, 235 | "thresholds": { 236 | "mode": "absolute", 237 | "steps": [ 238 | { 239 | "color": "rgba(50, 172, 45, 0.97)", 240 | "value": null 241 | }, 242 | { 243 | "color": "rgba(237, 129, 40, 0.89)", 244 | "value": 0.85 245 | }, 246 | { 247 | "color": "rgba(245, 54, 54, 0.9)", 248 | "value": 0.95 249 | } 250 | ] 251 | }, 252 | "unit": "percentunit" 253 | }, 254 | "overrides": [] 255 | }, 256 | "gridPos": { 257 | "h": 4, 258 | "w": 4, 259 | "x": 4, 260 | "y": 0 261 | }, 262 | "id": 27, 263 | "links": [], 264 | "maxDataPoints": 100, 265 | "options": { 266 | "orientation": "horizontal", 267 | "reduceOptions": { 268 | "calcs": [ 269 | "mean" 270 | ], 271 | "fields": "", 272 | "values": false 273 | }, 274 | "showThresholdLabels": false, 275 | "showThresholdMarkers": true 276 | }, 277 | "pluginVersion": "9.0.4", 278 | "targets": [ 279 | { 280 | "datasource": { 281 | "type": "prometheus", 282 | "uid": "PBFA97CFB590B2093" 283 | }, 284 | "expr": "node_load1 / ON(alias) count(node_cpu_seconds_total{mode=\"system\"}) BY (alias)", 285 | "format": "time_series", 286 | "interval": "", 287 | "intervalFactor": 1, 288 | "legendFormat": "", 289 | "refId": "F" 290 | } 291 | ], 292 | "title": "Load", 293 | "type": "gauge" 294 | }, 295 | { 296 | "datasource": { 297 | "type": "prometheus", 298 | "uid": "PBFA97CFB590B2093" 299 | }, 300 | "fieldConfig": { 301 | "defaults": { 302 | "color": { 303 | "mode": "thresholds" 304 | }, 305 | "decimals": 0, 306 | "mappings": [ 307 | { 308 | "options": { 309 | "match": "null", 310 | "result": { 311 | "text": "N/A" 312 | } 313 | }, 314 | "type": "special" 315 | } 316 | ], 317 | "max": 100, 318 | "min": 0, 319 | "thresholds": { 320 | "mode": "absolute", 321 | "steps": [ 322 | { 323 | "color": "rgba(50, 172, 45, 0.97)", 324 | "value": null 325 | }, 326 | { 327 | "color": "rgba(237, 129, 40, 0.89)", 328 | "value": 70 329 | }, 330 | { 331 | "color": "rgba(245, 54, 54, 0.9)", 332 | "value": 90 333 | } 334 | ] 335 | }, 336 | "unit": "percent" 337 | }, 338 | "overrides": [] 339 | }, 340 | "gridPos": { 341 | "h": 4, 342 | "w": 4, 343 | "x": 8, 344 | "y": 0 345 | }, 346 | "id": 25, 347 | "links": [], 348 | "maxDataPoints": 100, 349 | "options": { 350 | "orientation": "horizontal", 351 | "reduceOptions": { 352 | "calcs": [ 353 | "lastNotNull" 354 | ], 355 | "fields": "", 356 | "values": false 357 | }, 358 | "showThresholdLabels": false, 359 | "showThresholdMarkers": true 360 | }, 361 | "pluginVersion": "9.0.4", 362 | "targets": [ 363 | { 364 | "datasource": { 365 | "type": "prometheus", 366 | "uid": "PBFA97CFB590B2093" 367 | }, 368 | "expr": "((node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes) * 100", 369 | "format": "time_series", 370 | "interval": "", 371 | "intervalFactor": 1, 372 | "legendFormat": "", 373 | "refId": "A", 374 | "step": 1800 375 | } 376 | ], 377 | "title": "Memory", 378 | "type": "gauge" 379 | }, 380 | { 381 | "datasource": { 382 | "type": "prometheus", 383 | "uid": "PBFA97CFB590B2093" 384 | }, 385 | "fieldConfig": { 386 | "defaults": { 387 | "color": { 388 | "mode": "thresholds" 389 | }, 390 | "decimals": 1, 391 | "mappings": [ 392 | { 393 | "options": { 394 | "match": "null", 395 | "result": { 396 | "text": "N/A" 397 | } 398 | }, 399 | "type": "special" 400 | } 401 | ], 402 | "max": 1, 403 | "min": 0, 404 | "thresholds": { 405 | "mode": "absolute", 406 | "steps": [ 407 | { 408 | "color": "rgba(50, 172, 45, 0.97)", 409 | "value": null 410 | }, 411 | { 412 | "color": "rgba(237, 129, 40, 0.89)", 413 | "value": 0.75 414 | }, 415 | { 416 | "color": "rgba(245, 54, 54, 0.9)", 417 | "value": 0.9 418 | } 419 | ] 420 | }, 421 | "unit": "percentunit" 422 | }, 423 | "overrides": [] 424 | }, 425 | "gridPos": { 426 | "h": 4, 427 | "w": 4, 428 | "x": 12, 429 | "y": 0 430 | }, 431 | "id": 26, 432 | "links": [], 433 | "maxDataPoints": 100, 434 | "options": { 435 | "orientation": "horizontal", 436 | "reduceOptions": { 437 | "calcs": [ 438 | "lastNotNull" 439 | ], 440 | "fields": "", 441 | "values": false 442 | }, 443 | "showThresholdLabels": false, 444 | "showThresholdMarkers": true 445 | }, 446 | "pluginVersion": "9.0.4", 447 | "targets": [ 448 | { 449 | "datasource": { 450 | "type": "prometheus", 451 | "uid": "PBFA97CFB590B2093" 452 | }, 453 | "expr": "min((node_filesystem_size_bytes{fstype=~\"xfs|ext4\"} - node_filesystem_free_bytes{fstype=~\"xfs|ext4\"} )/ node_filesystem_size_bytes{fstype=~\"xfs|ext4\"})", 454 | "format": "time_series", 455 | "hide": false, 456 | "interval": "", 457 | "intervalFactor": 1, 458 | "legendFormat": "", 459 | "refId": "A", 460 | "step": 1800 461 | } 462 | ], 463 | "title": "Disk space", 464 | "type": "gauge" 465 | }, 466 | { 467 | "datasource": { 468 | "type": "prometheus", 469 | "uid": "PBFA97CFB590B2093" 470 | }, 471 | "fieldConfig": { 472 | "defaults": { 473 | "color": { 474 | "mode": "thresholds" 475 | }, 476 | "decimals": 0, 477 | "mappings": [ 478 | { 479 | "options": { 480 | "match": "null", 481 | "result": { 482 | "text": "N/A" 483 | } 484 | }, 485 | "type": "special" 486 | } 487 | ], 488 | "max": 500000000, 489 | "min": 0, 490 | "thresholds": { 491 | "mode": "absolute", 492 | "steps": [ 493 | { 494 | "color": "rgba(50, 172, 45, 0.97)", 495 | "value": null 496 | }, 497 | { 498 | "color": "rgba(237, 129, 40, 0.89)", 499 | "value": 400000000 500 | }, 501 | { 502 | "color": "rgba(245, 54, 54, 0.9)" 503 | } 504 | ] 505 | }, 506 | "unit": "decbytes" 507 | }, 508 | "overrides": [] 509 | }, 510 | "gridPos": { 511 | "h": 4, 512 | "w": 4, 513 | "x": 16, 514 | "y": 0 515 | }, 516 | "id": 30, 517 | "links": [], 518 | "maxDataPoints": 100, 519 | "options": { 520 | "orientation": "horizontal", 521 | "reduceOptions": { 522 | "calcs": [ 523 | "lastNotNull" 524 | ], 525 | "fields": "", 526 | "values": false 527 | }, 528 | "showThresholdLabels": false, 529 | "showThresholdMarkers": true 530 | }, 531 | "pluginVersion": "9.0.4", 532 | "targets": [ 533 | { 534 | "datasource": { 535 | "type": "prometheus", 536 | "uid": "PBFA97CFB590B2093" 537 | }, 538 | "expr": "(node_memory_SwapTotal_bytes - node_memory_SwapFree_bytes)", 539 | "interval": "", 540 | "intervalFactor": 1, 541 | "legendFormat": "", 542 | "refId": "A", 543 | "step": 1800 544 | } 545 | ], 546 | "title": "Swap", 547 | "type": "gauge" 548 | }, 549 | { 550 | "datasource": { 551 | "type": "prometheus", 552 | "uid": "PBFA97CFB590B2093" 553 | }, 554 | "fieldConfig": { 555 | "defaults": { 556 | "color": { 557 | "mode": "thresholds" 558 | }, 559 | "decimals": 0, 560 | "mappings": [ 561 | { 562 | "options": { 563 | "match": "null", 564 | "result": { 565 | "text": "N/A" 566 | } 567 | }, 568 | "type": "special" 569 | } 570 | ], 571 | "thresholds": { 572 | "mode": "absolute", 573 | "steps": [ 574 | { 575 | "color": "green", 576 | "value": null 577 | }, 578 | { 579 | "color": "red", 580 | "value": 80 581 | } 582 | ] 583 | }, 584 | "unit": "s" 585 | }, 586 | "overrides": [] 587 | }, 588 | "gridPos": { 589 | "h": 4, 590 | "w": 4, 591 | "x": 20, 592 | "y": 0 593 | }, 594 | "id": 36, 595 | "links": [], 596 | "maxDataPoints": 100, 597 | "options": { 598 | "colorMode": "none", 599 | "graphMode": "none", 600 | "justifyMode": "auto", 601 | "orientation": "horizontal", 602 | "reduceOptions": { 603 | "calcs": [ 604 | "lastNotNull" 605 | ], 606 | "fields": "", 607 | "values": false 608 | }, 609 | "textMode": "auto" 610 | }, 611 | "pluginVersion": "9.0.4", 612 | "targets": [ 613 | { 614 | "datasource": { 615 | "type": "prometheus", 616 | "uid": "PBFA97CFB590B2093" 617 | }, 618 | "expr": "time() - node_boot_time_seconds", 619 | "format": "time_series", 620 | "hide": false, 621 | "interval": "", 622 | "intervalFactor": 1, 623 | "legendFormat": "", 624 | "refId": "A", 625 | "step": 1800 626 | } 627 | ], 628 | "title": "Uptime", 629 | "type": "stat" 630 | }, 631 | { 632 | "aliasColors": { 633 | "{id=\"/\",instance=\"cadvisor:8080\",job=\"prometheus\"}": "#BA43A9" 634 | }, 635 | "bars": false, 636 | "dashLength": 10, 637 | "dashes": false, 638 | "datasource": { 639 | "type": "prometheus", 640 | "uid": "PBFA97CFB590B2093" 641 | }, 642 | "editable": true, 643 | "error": false, 644 | "fieldConfig": { 645 | "defaults": { 646 | "links": [] 647 | }, 648 | "overrides": [] 649 | }, 650 | "fill": 1, 651 | "fillGradient": 0, 652 | "grid": {}, 653 | "gridPos": { 654 | "h": 6, 655 | "w": 4, 656 | "x": 0, 657 | "y": 4 658 | }, 659 | "hiddenSeries": false, 660 | "id": 5, 661 | "legend": { 662 | "avg": false, 663 | "current": false, 664 | "max": false, 665 | "min": false, 666 | "show": false, 667 | "total": false, 668 | "values": false 669 | }, 670 | "lines": true, 671 | "linewidth": 1, 672 | "links": [], 673 | "nullPointMode": "null as zero", 674 | "options": { 675 | "alertThreshold": true 676 | }, 677 | "percentage": false, 678 | "pluginVersion": "9.0.4", 679 | "pointradius": 5, 680 | "points": false, 681 | "renderer": "flot", 682 | "seriesOverrides": [], 683 | "spaceLength": 10, 684 | "stack": true, 685 | "steppedLine": false, 686 | "targets": [ 687 | { 688 | "datasource": { 689 | "type": "prometheus", 690 | "uid": "PBFA97CFB590B2093" 691 | }, 692 | "expr": "sum(avg by (instance) (irate(process_cpu_seconds_total[$__rate_interval]))) * 100", 693 | "format": "time_series", 694 | "hide": true, 695 | "interval": "", 696 | "intervalFactor": 2, 697 | "legendFormat": "host", 698 | "metric": "", 699 | "refId": "A", 700 | "step": 600 701 | }, 702 | { 703 | "datasource": { 704 | "type": "prometheus", 705 | "uid": "PBFA97CFB590B2093" 706 | }, 707 | "expr": "100 - (avg by (instance) (irate(node_cpu_seconds_total{mode=\"idle\"}[$__rate_interval])) * 100)", 708 | "format": "time_series", 709 | "hide": false, 710 | "interval": "", 711 | "intervalFactor": 1, 712 | "legendFormat": "host", 713 | "refId": "B" 714 | } 715 | ], 716 | "thresholds": [], 717 | "timeRegions": [], 718 | "title": "CPU Usage", 719 | "tooltip": { 720 | "msResolution": true, 721 | "shared": true, 722 | "sort": 0, 723 | "value_type": "cumulative" 724 | }, 725 | "type": "graph", 726 | "xaxis": { 727 | "mode": "time", 728 | "show": false, 729 | "values": [] 730 | }, 731 | "yaxes": [ 732 | { 733 | "format": "percent", 734 | "label": "", 735 | "logBase": 1, 736 | "show": true 737 | }, 738 | { 739 | "format": "short", 740 | "logBase": 1, 741 | "show": false 742 | } 743 | ], 744 | "yaxis": { 745 | "align": false 746 | } 747 | }, 748 | { 749 | "aliasColors": {}, 750 | "bars": false, 751 | "dashLength": 10, 752 | "dashes": false, 753 | "datasource": { 754 | "type": "prometheus", 755 | "uid": "PBFA97CFB590B2093" 756 | }, 757 | "decimals": 0, 758 | "editable": true, 759 | "error": false, 760 | "fieldConfig": { 761 | "defaults": { 762 | "links": [] 763 | }, 764 | "overrides": [] 765 | }, 766 | "fill": 3, 767 | "fillGradient": 0, 768 | "gridPos": { 769 | "h": 6, 770 | "w": 4, 771 | "x": 4, 772 | "y": 4 773 | }, 774 | "hiddenSeries": false, 775 | "id": 28, 776 | "legend": { 777 | "avg": false, 778 | "current": false, 779 | "max": false, 780 | "min": false, 781 | "show": false, 782 | "total": false, 783 | "values": false 784 | }, 785 | "lines": true, 786 | "linewidth": 1, 787 | "links": [], 788 | "nullPointMode": "connected", 789 | "options": { 790 | "alertThreshold": true 791 | }, 792 | "percentage": false, 793 | "pluginVersion": "9.0.4", 794 | "pointradius": 5, 795 | "points": false, 796 | "renderer": "flot", 797 | "seriesOverrides": [], 798 | "spaceLength": 10, 799 | "stack": false, 800 | "steppedLine": false, 801 | "targets": [ 802 | { 803 | "datasource": { 804 | "type": "prometheus", 805 | "uid": "PBFA97CFB590B2093" 806 | }, 807 | "expr": "node_load1 / ON(alias) count(node_cpu_seconds_total{mode=\"system\"}) BY (alias)", 808 | "format": "time_series", 809 | "interval": "", 810 | "intervalFactor": 1, 811 | "legendFormat": "load", 812 | "refId": "B" 813 | }, 814 | { 815 | "datasource": { 816 | "type": "prometheus", 817 | "uid": "PBFA97CFB590B2093" 818 | }, 819 | "expr": "node_load1 / count(count(node_cpu_seconds_total) by (cpu) )", 820 | "format": "time_series", 821 | "hide": true, 822 | "interval": "", 823 | "intervalFactor": 2, 824 | "legendFormat": "", 825 | "refId": "A", 826 | "step": 600 827 | } 828 | ], 829 | "thresholds": [], 830 | "timeRegions": [], 831 | "title": "Load", 832 | "tooltip": { 833 | "msResolution": false, 834 | "shared": true, 835 | "sort": 0, 836 | "value_type": "individual" 837 | }, 838 | "type": "graph", 839 | "xaxis": { 840 | "mode": "time", 841 | "show": false, 842 | "values": [] 843 | }, 844 | "yaxes": [ 845 | { 846 | "format": "percentunit", 847 | "logBase": 1, 848 | "max": "1.50", 849 | "show": true 850 | }, 851 | { 852 | "format": "short", 853 | "logBase": 1, 854 | "show": false 855 | } 856 | ], 857 | "yaxis": { 858 | "align": false 859 | } 860 | }, 861 | { 862 | "aliasColors": { 863 | "Available Memory": "#7EB26D", 864 | "Unavailable Memory": "#7EB26D" 865 | }, 866 | "bars": false, 867 | "dashLength": 10, 868 | "dashes": false, 869 | "datasource": { 870 | "type": "prometheus", 871 | "uid": "PBFA97CFB590B2093" 872 | }, 873 | "editable": true, 874 | "error": false, 875 | "fieldConfig": { 876 | "defaults": { 877 | "links": [] 878 | }, 879 | "overrides": [] 880 | }, 881 | "fill": 3, 882 | "fillGradient": 0, 883 | "grid": {}, 884 | "gridPos": { 885 | "h": 6, 886 | "w": 4, 887 | "x": 8, 888 | "y": 4 889 | }, 890 | "hiddenSeries": false, 891 | "id": 20, 892 | "legend": { 893 | "alignAsTable": false, 894 | "avg": false, 895 | "current": false, 896 | "hideEmpty": false, 897 | "hideZero": false, 898 | "max": false, 899 | "min": false, 900 | "rightSide": false, 901 | "show": false, 902 | "total": false, 903 | "values": false 904 | }, 905 | "lines": true, 906 | "linewidth": 1, 907 | "links": [], 908 | "nullPointMode": "null", 909 | "options": { 910 | "alertThreshold": true 911 | }, 912 | "percentage": false, 913 | "pluginVersion": "9.0.4", 914 | "pointradius": 5, 915 | "points": false, 916 | "renderer": "flot", 917 | "seriesOverrides": [ 918 | { 919 | "alias": "/.*Memory Used*./", 920 | "stack": false 921 | } 922 | ], 923 | "spaceLength": 10, 924 | "stack": true, 925 | "steppedLine": false, 926 | "targets": [ 927 | { 928 | "datasource": { 929 | "type": "prometheus", 930 | "uid": "PBFA97CFB590B2093" 931 | }, 932 | "expr": "node_memory_MemTotal_bytes", 933 | "format": "time_series", 934 | "hide": false, 935 | "interval": "15s", 936 | "intervalFactor": 1, 937 | "legendFormat": "Memory Total", 938 | "refId": "Q" 939 | }, 940 | { 941 | "datasource": { 942 | "type": "prometheus", 943 | "uid": "PBFA97CFB590B2093" 944 | }, 945 | "expr": "node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes", 946 | "format": "time_series", 947 | "hide": false, 948 | "interval": "15s", 949 | "intervalFactor": 1, 950 | "legendFormat": "Memory Used", 951 | "refId": "G", 952 | "step": 600 953 | }, 954 | { 955 | "datasource": { 956 | "type": "prometheus", 957 | "uid": "PBFA97CFB590B2093" 958 | }, 959 | "expr": "container_memory_rss{name=~\".+\"}", 960 | "format": "time_series", 961 | "hide": true, 962 | "interval": "", 963 | "intervalFactor": 2, 964 | "legendFormat": "{{__name__}}", 965 | "refId": "D", 966 | "step": 20 967 | }, 968 | { 969 | "datasource": { 970 | "type": "prometheus", 971 | "uid": "PBFA97CFB590B2093" 972 | }, 973 | "expr": "sum(container_memory_rss{name=~\".+\"})", 974 | "format": "time_series", 975 | "hide": true, 976 | "interval": "", 977 | "intervalFactor": 2, 978 | "legendFormat": "{{__name__}}", 979 | "refId": "A", 980 | "step": 20 981 | }, 982 | { 983 | "datasource": { 984 | "type": "prometheus", 985 | "uid": "PBFA97CFB590B2093" 986 | }, 987 | "expr": "container_memory_rss{id=\"/\"\"}", 988 | "format": "time_series", 989 | "hide": true, 990 | "interval": "", 991 | "intervalFactor": 2, 992 | "legendFormat": "{{__name__}}", 993 | "refId": "C", 994 | "step": 20 995 | }, 996 | { 997 | "datasource": { 998 | "type": "prometheus", 999 | "uid": "PBFA97CFB590B2093" 1000 | }, 1001 | "expr": "sum(container_memory_rss)", 1002 | "format": "time_series", 1003 | "hide": true, 1004 | "interval": "", 1005 | "intervalFactor": 2, 1006 | "legendFormat": "{{__name__}}", 1007 | "refId": "E", 1008 | "step": 20 1009 | }, 1010 | { 1011 | "datasource": { 1012 | "type": "prometheus", 1013 | "uid": "PBFA97CFB590B2093" 1014 | }, 1015 | "expr": "node_memory_Buffers", 1016 | "format": "time_series", 1017 | "hide": true, 1018 | "interval": "", 1019 | "intervalFactor": 2, 1020 | "legendFormat": "node_memory_Dirty", 1021 | "refId": "N", 1022 | "step": 30 1023 | }, 1024 | { 1025 | "datasource": { 1026 | "type": "prometheus", 1027 | "uid": "PBFA97CFB590B2093" 1028 | }, 1029 | "expr": "node_memory_MemFree", 1030 | "format": "time_series", 1031 | "hide": true, 1032 | "interval": "", 1033 | "intervalFactor": 2, 1034 | "legendFormat": "{{__name__}}", 1035 | "refId": "F", 1036 | "step": 20 1037 | }, 1038 | { 1039 | "datasource": { 1040 | "type": "prometheus", 1041 | "uid": "PBFA97CFB590B2093" 1042 | }, 1043 | "expr": "node_memory_MemAvailable", 1044 | "format": "time_series", 1045 | "hide": true, 1046 | "interval": "15s", 1047 | "intervalFactor": 2, 1048 | "legendFormat": "Available Memory", 1049 | "refId": "H", 1050 | "step": 20 1051 | }, 1052 | { 1053 | "datasource": { 1054 | "type": "prometheus", 1055 | "uid": "PBFA97CFB590B2093" 1056 | }, 1057 | "expr": "node_memory_Inactive", 1058 | "format": "time_series", 1059 | "hide": true, 1060 | "interval": "", 1061 | "intervalFactor": 2, 1062 | "legendFormat": "{{__name__}}", 1063 | "refId": "I", 1064 | "step": 30 1065 | }, 1066 | { 1067 | "datasource": { 1068 | "type": "prometheus", 1069 | "uid": "PBFA97CFB590B2093" 1070 | }, 1071 | "expr": "node_memory_KernelStack", 1072 | "format": "time_series", 1073 | "hide": true, 1074 | "interval": "", 1075 | "intervalFactor": 2, 1076 | "legendFormat": "{{__name__}}", 1077 | "refId": "J", 1078 | "step": 30 1079 | }, 1080 | { 1081 | "datasource": { 1082 | "type": "prometheus", 1083 | "uid": "PBFA97CFB590B2093" 1084 | }, 1085 | "expr": "node_memory_Active", 1086 | "format": "time_series", 1087 | "hide": true, 1088 | "interval": "", 1089 | "intervalFactor": 2, 1090 | "legendFormat": "{{__name__}}", 1091 | "refId": "K", 1092 | "step": 30 1093 | }, 1094 | { 1095 | "datasource": { 1096 | "type": "prometheus", 1097 | "uid": "PBFA97CFB590B2093" 1098 | }, 1099 | "expr": "node_memory_MemTotal - (node_memory_Active + node_memory_MemFree + node_memory_Inactive)", 1100 | "format": "time_series", 1101 | "hide": true, 1102 | "interval": "", 1103 | "intervalFactor": 2, 1104 | "legendFormat": "Unknown", 1105 | "refId": "L", 1106 | "step": 40 1107 | }, 1108 | { 1109 | "datasource": { 1110 | "type": "prometheus", 1111 | "uid": "PBFA97CFB590B2093" 1112 | }, 1113 | "expr": "node_memory_MemFree + node_memory_Inactive", 1114 | "format": "time_series", 1115 | "hide": true, 1116 | "interval": "", 1117 | "intervalFactor": 2, 1118 | "legendFormat": "{{__name__}}", 1119 | "refId": "M", 1120 | "step": 30 1121 | }, 1122 | { 1123 | "datasource": { 1124 | "type": "prometheus", 1125 | "uid": "PBFA97CFB590B2093" 1126 | }, 1127 | "expr": "container_memory_rss", 1128 | "format": "time_series", 1129 | "hide": true, 1130 | "interval": "", 1131 | "intervalFactor": 2, 1132 | "legendFormat": "{{__name__}}", 1133 | "refId": "O", 1134 | "step": 30 1135 | }, 1136 | { 1137 | "datasource": { 1138 | "type": "prometheus", 1139 | "uid": "PBFA97CFB590B2093" 1140 | }, 1141 | "expr": "container_memory_usage_bytes{name=~\".+\"}", 1142 | "format": "time_series", 1143 | "hide": true, 1144 | "interval": "", 1145 | "intervalFactor": 2, 1146 | "legendFormat": "{{name}}", 1147 | "refId": "B", 1148 | "step": 20 1149 | }, 1150 | { 1151 | "datasource": { 1152 | "type": "prometheus", 1153 | "uid": "PBFA97CFB590B2093" 1154 | }, 1155 | "expr": "node_memory_Inactive + node_memory_MemFree + node_memory_MemAvailable", 1156 | "format": "time_series", 1157 | "hide": true, 1158 | "interval": "", 1159 | "intervalFactor": 2, 1160 | "legendFormat": "", 1161 | "refId": "P", 1162 | "step": 40 1163 | } 1164 | ], 1165 | "thresholds": [], 1166 | "timeRegions": [], 1167 | "title": "Available Memory", 1168 | "tooltip": { 1169 | "msResolution": true, 1170 | "shared": true, 1171 | "sort": 0, 1172 | "value_type": "cumulative" 1173 | }, 1174 | "type": "graph", 1175 | "xaxis": { 1176 | "mode": "time", 1177 | "show": true, 1178 | "values": [] 1179 | }, 1180 | "yaxes": [ 1181 | { 1182 | "format": "bytes", 1183 | "label": "", 1184 | "logBase": 1, 1185 | "min": 0, 1186 | "show": true 1187 | }, 1188 | { 1189 | "format": "short", 1190 | "logBase": 1, 1191 | "show": false 1192 | } 1193 | ], 1194 | "yaxis": { 1195 | "align": false 1196 | } 1197 | }, 1198 | { 1199 | "aliasColors": { 1200 | "Belegete Festplatte": "#BF1B00", 1201 | "Free Disk Space": "#7EB26D", 1202 | "Used Disk Space": "#7EB26D", 1203 | "{}": "#BF1B00" 1204 | }, 1205 | "bars": false, 1206 | "dashLength": 10, 1207 | "dashes": false, 1208 | "datasource": { 1209 | "type": "prometheus", 1210 | "uid": "PBFA97CFB590B2093" 1211 | }, 1212 | "editable": true, 1213 | "error": false, 1214 | "fieldConfig": { 1215 | "defaults": { 1216 | "links": [] 1217 | }, 1218 | "overrides": [] 1219 | }, 1220 | "fill": 3, 1221 | "fillGradient": 0, 1222 | "grid": {}, 1223 | "gridPos": { 1224 | "h": 6, 1225 | "w": 4, 1226 | "x": 12, 1227 | "y": 4 1228 | }, 1229 | "hiddenSeries": false, 1230 | "hideTimeOverride": false, 1231 | "id": 13, 1232 | "legend": { 1233 | "alignAsTable": false, 1234 | "avg": false, 1235 | "current": false, 1236 | "max": false, 1237 | "min": false, 1238 | "rightSide": false, 1239 | "show": false, 1240 | "total": false, 1241 | "values": false 1242 | }, 1243 | "lines": true, 1244 | "linewidth": 1, 1245 | "links": [], 1246 | "nullPointMode": "null", 1247 | "options": { 1248 | "alertThreshold": true 1249 | }, 1250 | "percentage": false, 1251 | "pluginVersion": "9.0.4", 1252 | "pointradius": 5, 1253 | "points": false, 1254 | "renderer": "flot", 1255 | "repeatDirection": "h", 1256 | "seriesOverrides": [ 1257 | { 1258 | "alias": "Used Disk Space", 1259 | "yaxis": 1 1260 | } 1261 | ], 1262 | "spaceLength": 10, 1263 | "stack": false, 1264 | "steppedLine": false, 1265 | "targets": [ 1266 | { 1267 | "datasource": { 1268 | "type": "prometheus", 1269 | "uid": "PBFA97CFB590B2093" 1270 | }, 1271 | "expr": "node_filesystem_size_bytes{fstype=~\"xfs|ext4\",mountpoint=\"/\"}", 1272 | "format": "time_series", 1273 | "interval": "", 1274 | "intervalFactor": 1, 1275 | "legendFormat": "Total Disk Space", 1276 | "refId": "D" 1277 | }, 1278 | { 1279 | "datasource": { 1280 | "type": "prometheus", 1281 | "uid": "PBFA97CFB590B2093" 1282 | }, 1283 | "expr": "node_filesystem_size_bytes{fstype=~\"xfs|ext4\",mountpoint=\"/\"} - node_filesystem_free_bytes{fstype=~\"xfs|ext4\",mountpoint=\"/\"}", 1284 | "format": "time_series", 1285 | "hide": false, 1286 | "interval": "", 1287 | "intervalFactor": 1, 1288 | "legendFormat": "Used Disk Space", 1289 | "refId": "A", 1290 | "step": 600 1291 | } 1292 | ], 1293 | "thresholds": [], 1294 | "timeRegions": [], 1295 | "title": "Disk Space", 1296 | "tooltip": { 1297 | "msResolution": true, 1298 | "shared": true, 1299 | "sort": 0, 1300 | "value_type": "cumulative" 1301 | }, 1302 | "type": "graph", 1303 | "xaxis": { 1304 | "mode": "time", 1305 | "show": false, 1306 | "values": [] 1307 | }, 1308 | "yaxes": [ 1309 | { 1310 | "format": "bytes", 1311 | "label": "", 1312 | "logBase": 1, 1313 | "min": 0, 1314 | "show": true 1315 | }, 1316 | { 1317 | "format": "short", 1318 | "logBase": 1, 1319 | "show": false 1320 | } 1321 | ], 1322 | "yaxis": { 1323 | "align": false 1324 | } 1325 | }, 1326 | { 1327 | "aliasColors": { 1328 | "IN on /sda": "#7EB26D", 1329 | "OUT on /sda": "#890F02" 1330 | }, 1331 | "bars": false, 1332 | "dashLength": 10, 1333 | "dashes": false, 1334 | "datasource": { 1335 | "type": "prometheus", 1336 | "uid": "PBFA97CFB590B2093" 1337 | }, 1338 | "editable": true, 1339 | "error": false, 1340 | "fieldConfig": { 1341 | "defaults": { 1342 | "links": [] 1343 | }, 1344 | "overrides": [] 1345 | }, 1346 | "fill": 1, 1347 | "fillGradient": 0, 1348 | "grid": {}, 1349 | "gridPos": { 1350 | "h": 6, 1351 | "w": 4, 1352 | "x": 16, 1353 | "y": 4 1354 | }, 1355 | "hiddenSeries": false, 1356 | "id": 3, 1357 | "legend": { 1358 | "avg": false, 1359 | "current": false, 1360 | "max": false, 1361 | "min": false, 1362 | "show": false, 1363 | "total": false, 1364 | "values": false 1365 | }, 1366 | "lines": true, 1367 | "linewidth": 1, 1368 | "links": [], 1369 | "nullPointMode": "null as zero", 1370 | "options": { 1371 | "alertThreshold": true 1372 | }, 1373 | "percentage": false, 1374 | "pluginVersion": "9.0.4", 1375 | "pointradius": 5, 1376 | "points": false, 1377 | "renderer": "flot", 1378 | "seriesOverrides": [], 1379 | "spaceLength": 10, 1380 | "stack": false, 1381 | "steppedLine": false, 1382 | "targets": [ 1383 | { 1384 | "datasource": { 1385 | "type": "prometheus", 1386 | "uid": "PBFA97CFB590B2093" 1387 | }, 1388 | "expr": "sum(rate(node_disk_read_bytes_total[$__rate_interval])) by (device)", 1389 | "format": "time_series", 1390 | "hide": false, 1391 | "interval": "", 1392 | "intervalFactor": 1, 1393 | "legendFormat": "OUT on /{{device}}", 1394 | "metric": "node_disk_bytes_read", 1395 | "refId": "A", 1396 | "step": 600 1397 | }, 1398 | { 1399 | "datasource": { 1400 | "type": "prometheus", 1401 | "uid": "PBFA97CFB590B2093" 1402 | }, 1403 | "expr": "sum(rate(node_disk_written_bytes_total[$__rate_interval])) by (device)", 1404 | "format": "time_series", 1405 | "interval": "", 1406 | "intervalFactor": 1, 1407 | "legendFormat": "IN on /{{device}}", 1408 | "metric": "", 1409 | "refId": "B", 1410 | "step": 600 1411 | } 1412 | ], 1413 | "thresholds": [], 1414 | "timeRegions": [], 1415 | "title": "Disk I/O", 1416 | "tooltip": { 1417 | "msResolution": true, 1418 | "shared": true, 1419 | "sort": 0, 1420 | "value_type": "cumulative" 1421 | }, 1422 | "type": "graph", 1423 | "xaxis": { 1424 | "mode": "time", 1425 | "show": false, 1426 | "values": [] 1427 | }, 1428 | "yaxes": [ 1429 | { 1430 | "format": "Bps", 1431 | "logBase": 1, 1432 | "show": true 1433 | }, 1434 | { 1435 | "format": "short", 1436 | "logBase": 1, 1437 | "show": false 1438 | } 1439 | ], 1440 | "yaxis": { 1441 | "align": false 1442 | } 1443 | }, 1444 | { 1445 | "aliasColors": { 1446 | "SENT": "#BF1B00" 1447 | }, 1448 | "bars": false, 1449 | "dashLength": 10, 1450 | "dashes": false, 1451 | "datasource": { 1452 | "type": "prometheus", 1453 | "uid": "PBFA97CFB590B2093" 1454 | }, 1455 | "editable": true, 1456 | "error": false, 1457 | "fieldConfig": { 1458 | "defaults": { 1459 | "links": [] 1460 | }, 1461 | "overrides": [] 1462 | }, 1463 | "fill": 1, 1464 | "fillGradient": 0, 1465 | "grid": {}, 1466 | "gridPos": { 1467 | "h": 6, 1468 | "w": 4, 1469 | "x": 20, 1470 | "y": 4 1471 | }, 1472 | "hiddenSeries": false, 1473 | "id": 19, 1474 | "legend": { 1475 | "avg": false, 1476 | "current": false, 1477 | "max": false, 1478 | "min": false, 1479 | "show": false, 1480 | "total": false, 1481 | "values": false 1482 | }, 1483 | "lines": true, 1484 | "linewidth": 1, 1485 | "links": [], 1486 | "nullPointMode": "null as zero", 1487 | "options": { 1488 | "alertThreshold": true 1489 | }, 1490 | "percentage": false, 1491 | "pluginVersion": "9.0.4", 1492 | "pointradius": 1, 1493 | "points": false, 1494 | "renderer": "flot", 1495 | "seriesOverrides": [], 1496 | "spaceLength": 10, 1497 | "stack": false, 1498 | "steppedLine": false, 1499 | "targets": [ 1500 | { 1501 | "datasource": { 1502 | "type": "prometheus", 1503 | "uid": "PBFA97CFB590B2093" 1504 | }, 1505 | "expr": "sum(rate(container_network_receive_bytes_total{id=\"/\"}[$__rate_interval])) by (id)", 1506 | "format": "time_series", 1507 | "hide": false, 1508 | "interval": "", 1509 | "intervalFactor": 2, 1510 | "legendFormat": "RECEIVED", 1511 | "refId": "A", 1512 | "step": 600 1513 | }, 1514 | { 1515 | "datasource": { 1516 | "type": "prometheus", 1517 | "uid": "PBFA97CFB590B2093" 1518 | }, 1519 | "expr": "- sum(rate(container_network_transmit_bytes_total{id=\"/\"}[$__rate_interval])) by (id)", 1520 | "format": "time_series", 1521 | "hide": false, 1522 | "interval": "", 1523 | "intervalFactor": 2, 1524 | "legendFormat": "SENT", 1525 | "refId": "B", 1526 | "step": 600 1527 | } 1528 | ], 1529 | "thresholds": [], 1530 | "timeRegions": [], 1531 | "title": "Network Traffic", 1532 | "tooltip": { 1533 | "msResolution": true, 1534 | "shared": true, 1535 | "sort": 0, 1536 | "value_type": "cumulative" 1537 | }, 1538 | "type": "graph", 1539 | "xaxis": { 1540 | "mode": "time", 1541 | "show": false, 1542 | "values": [] 1543 | }, 1544 | "yaxes": [ 1545 | { 1546 | "format": "bytes", 1547 | "logBase": 1, 1548 | "show": true 1549 | }, 1550 | { 1551 | "format": "short", 1552 | "logBase": 1, 1553 | "show": false 1554 | } 1555 | ], 1556 | "yaxis": { 1557 | "align": false 1558 | } 1559 | }, 1560 | { 1561 | "datasource": { 1562 | "type": "prometheus", 1563 | "uid": "PBFA97CFB590B2093" 1564 | }, 1565 | "fieldConfig": { 1566 | "defaults": { 1567 | "color": { 1568 | "mode": "palette-classic" 1569 | }, 1570 | "custom": { 1571 | "axisLabel": "", 1572 | "axisPlacement": "auto", 1573 | "barAlignment": 0, 1574 | "drawStyle": "line", 1575 | "fillOpacity": 50, 1576 | "gradientMode": "none", 1577 | "hideFrom": { 1578 | "legend": false, 1579 | "tooltip": false, 1580 | "viz": false 1581 | }, 1582 | "lineInterpolation": "linear", 1583 | "lineWidth": 1, 1584 | "pointSize": 5, 1585 | "scaleDistribution": { 1586 | "type": "linear" 1587 | }, 1588 | "showPoints": "never", 1589 | "spanNulls": false, 1590 | "stacking": { 1591 | "group": "A", 1592 | "mode": "normal" 1593 | }, 1594 | "thresholdsStyle": { 1595 | "mode": "off" 1596 | } 1597 | }, 1598 | "links": [], 1599 | "mappings": [], 1600 | "thresholds": { 1601 | "mode": "absolute", 1602 | "steps": [ 1603 | { 1604 | "color": "green", 1605 | "value": null 1606 | }, 1607 | { 1608 | "color": "red", 1609 | "value": 80 1610 | } 1611 | ] 1612 | }, 1613 | "unit": "percent" 1614 | }, 1615 | "overrides": [] 1616 | }, 1617 | "gridPos": { 1618 | "h": 14, 1619 | "w": 12, 1620 | "x": 0, 1621 | "y": 10 1622 | }, 1623 | "id": 1, 1624 | "links": [], 1625 | "options": { 1626 | "legend": { 1627 | "calcs": [], 1628 | "displayMode": "table", 1629 | "placement": "right" 1630 | }, 1631 | "tooltip": { 1632 | "mode": "multi", 1633 | "sort": "desc" 1634 | } 1635 | }, 1636 | "pluginVersion": "9.0.4", 1637 | "targets": [ 1638 | { 1639 | "datasource": { 1640 | "type": "prometheus", 1641 | "uid": "PBFA97CFB590B2093" 1642 | }, 1643 | "expr": "sum(rate(container_cpu_usage_seconds_total{name=~\".+\"}[$__rate_interval])) by (name) * 100", 1644 | "format": "time_series", 1645 | "hide": false, 1646 | "interval": "", 1647 | "intervalFactor": 2, 1648 | "legendFormat": "{{name}}", 1649 | "metric": "", 1650 | "refId": "F", 1651 | "step": 240 1652 | } 1653 | ], 1654 | "title": "CPU Usage per Container", 1655 | "type": "timeseries" 1656 | }, 1657 | { 1658 | "datasource": { 1659 | "type": "prometheus", 1660 | "uid": "PBFA97CFB590B2093" 1661 | }, 1662 | "fieldConfig": { 1663 | "defaults": { 1664 | "color": { 1665 | "mode": "palette-classic" 1666 | }, 1667 | "custom": { 1668 | "axisLabel": "", 1669 | "axisPlacement": "auto", 1670 | "barAlignment": 0, 1671 | "drawStyle": "line", 1672 | "fillOpacity": 30, 1673 | "gradientMode": "none", 1674 | "hideFrom": { 1675 | "legend": false, 1676 | "tooltip": false, 1677 | "viz": false 1678 | }, 1679 | "lineInterpolation": "linear", 1680 | "lineWidth": 2, 1681 | "pointSize": 5, 1682 | "scaleDistribution": { 1683 | "type": "linear" 1684 | }, 1685 | "showPoints": "never", 1686 | "spanNulls": false, 1687 | "stacking": { 1688 | "group": "A", 1689 | "mode": "normal" 1690 | }, 1691 | "thresholdsStyle": { 1692 | "mode": "off" 1693 | } 1694 | }, 1695 | "links": [], 1696 | "mappings": [], 1697 | "thresholds": { 1698 | "mode": "absolute", 1699 | "steps": [ 1700 | { 1701 | "color": "green", 1702 | "value": null 1703 | }, 1704 | { 1705 | "color": "red", 1706 | "value": 80 1707 | } 1708 | ] 1709 | }, 1710 | "unit": "bytes" 1711 | }, 1712 | "overrides": [] 1713 | }, 1714 | "gridPos": { 1715 | "h": 14, 1716 | "w": 12, 1717 | "x": 12, 1718 | "y": 10 1719 | }, 1720 | "id": 10, 1721 | "links": [], 1722 | "options": { 1723 | "legend": { 1724 | "calcs": [], 1725 | "displayMode": "table", 1726 | "placement": "right" 1727 | }, 1728 | "tooltip": { 1729 | "mode": "multi", 1730 | "sort": "desc" 1731 | } 1732 | }, 1733 | "pluginVersion": "9.0.4", 1734 | "targets": [ 1735 | { 1736 | "datasource": { 1737 | "type": "prometheus", 1738 | "uid": "PBFA97CFB590B2093" 1739 | }, 1740 | "expr": "sum(container_memory_rss{name=~\".+\"}) by (name)", 1741 | "format": "time_series", 1742 | "hide": false, 1743 | "interval": "", 1744 | "intervalFactor": 2, 1745 | "legendFormat": "{{name}}", 1746 | "refId": "A", 1747 | "step": 240 1748 | } 1749 | ], 1750 | "title": "Memory Usage per Container", 1751 | "type": "timeseries" 1752 | }, 1753 | { 1754 | "datasource": { 1755 | "type": "prometheus", 1756 | "uid": "PBFA97CFB590B2093" 1757 | }, 1758 | "fieldConfig": { 1759 | "defaults": { 1760 | "color": { 1761 | "mode": "palette-classic" 1762 | }, 1763 | "custom": { 1764 | "axisLabel": "", 1765 | "axisPlacement": "auto", 1766 | "barAlignment": 0, 1767 | "drawStyle": "line", 1768 | "fillOpacity": 10, 1769 | "gradientMode": "none", 1770 | "hideFrom": { 1771 | "legend": false, 1772 | "tooltip": false, 1773 | "viz": false 1774 | }, 1775 | "lineInterpolation": "linear", 1776 | "lineWidth": 2, 1777 | "pointSize": 5, 1778 | "scaleDistribution": { 1779 | "type": "linear" 1780 | }, 1781 | "showPoints": "never", 1782 | "spanNulls": false, 1783 | "stacking": { 1784 | "group": "A", 1785 | "mode": "normal" 1786 | }, 1787 | "thresholdsStyle": { 1788 | "mode": "off" 1789 | } 1790 | }, 1791 | "links": [], 1792 | "mappings": [], 1793 | "thresholds": { 1794 | "mode": "absolute", 1795 | "steps": [ 1796 | { 1797 | "color": "green", 1798 | "value": null 1799 | }, 1800 | { 1801 | "color": "red", 1802 | "value": 80 1803 | } 1804 | ] 1805 | }, 1806 | "unit": "Bps" 1807 | }, 1808 | "overrides": [] 1809 | }, 1810 | "gridPos": { 1811 | "h": 7, 1812 | "w": 12, 1813 | "x": 0, 1814 | "y": 24 1815 | }, 1816 | "id": 8, 1817 | "links": [], 1818 | "options": { 1819 | "legend": { 1820 | "calcs": [], 1821 | "displayMode": "table", 1822 | "placement": "right" 1823 | }, 1824 | "tooltip": { 1825 | "mode": "multi", 1826 | "sort": "desc" 1827 | } 1828 | }, 1829 | "pluginVersion": "9.0.4", 1830 | "targets": [ 1831 | { 1832 | "datasource": { 1833 | "type": "prometheus", 1834 | "uid": "PBFA97CFB590B2093" 1835 | }, 1836 | "expr": "sum(rate(container_network_receive_bytes_total{name=~\".+\"}[$__rate_interval])) by (name)", 1837 | "format": "time_series", 1838 | "hide": true, 1839 | "interval": "", 1840 | "intervalFactor": 2, 1841 | "legendFormat": "{{name}}", 1842 | "refId": "A", 1843 | "step": 240 1844 | }, 1845 | { 1846 | "datasource": { 1847 | "type": "prometheus", 1848 | "uid": "PBFA97CFB590B2093" 1849 | }, 1850 | "expr": "rate(container_network_receive_bytes_total{name=~\".+\"}[$__rate_interval])", 1851 | "format": "time_series", 1852 | "hide": false, 1853 | "interval": "", 1854 | "intervalFactor": 2, 1855 | "legendFormat": "{{name}}", 1856 | "refId": "B", 1857 | "step": 10 1858 | }, 1859 | { 1860 | "datasource": { 1861 | "type": "prometheus", 1862 | "uid": "PBFA97CFB590B2093" 1863 | }, 1864 | "expr": "sum(rate(container_network_receive_bytes_total{name=~\".+\"}[$__rate_interval])) by (name)", 1865 | "hide": true, 1866 | "intervalFactor": 1, 1867 | "legendFormat": "{{name}}", 1868 | "refId": "C" 1869 | } 1870 | ], 1871 | "title": "Received Network Traffic per Container", 1872 | "type": "timeseries" 1873 | }, 1874 | { 1875 | "datasource": { 1876 | "type": "prometheus", 1877 | "uid": "PBFA97CFB590B2093" 1878 | }, 1879 | "fieldConfig": { 1880 | "defaults": { 1881 | "color": { 1882 | "mode": "palette-classic" 1883 | }, 1884 | "custom": { 1885 | "axisLabel": "", 1886 | "axisPlacement": "auto", 1887 | "barAlignment": 0, 1888 | "drawStyle": "line", 1889 | "fillOpacity": 10, 1890 | "gradientMode": "none", 1891 | "hideFrom": { 1892 | "legend": false, 1893 | "tooltip": false, 1894 | "viz": false 1895 | }, 1896 | "lineInterpolation": "linear", 1897 | "lineWidth": 2, 1898 | "pointSize": 5, 1899 | "scaleDistribution": { 1900 | "type": "linear" 1901 | }, 1902 | "showPoints": "never", 1903 | "spanNulls": false, 1904 | "stacking": { 1905 | "group": "A", 1906 | "mode": "normal" 1907 | }, 1908 | "thresholdsStyle": { 1909 | "mode": "off" 1910 | } 1911 | }, 1912 | "links": [], 1913 | "mappings": [], 1914 | "thresholds": { 1915 | "mode": "absolute", 1916 | "steps": [ 1917 | { 1918 | "color": "green", 1919 | "value": null 1920 | }, 1921 | { 1922 | "color": "red", 1923 | "value": 80 1924 | } 1925 | ] 1926 | }, 1927 | "unit": "Bps" 1928 | }, 1929 | "overrides": [] 1930 | }, 1931 | "gridPos": { 1932 | "h": 7, 1933 | "w": 12, 1934 | "x": 12, 1935 | "y": 24 1936 | }, 1937 | "id": 9, 1938 | "links": [], 1939 | "options": { 1940 | "legend": { 1941 | "calcs": [], 1942 | "displayMode": "table", 1943 | "placement": "right" 1944 | }, 1945 | "tooltip": { 1946 | "mode": "multi", 1947 | "sort": "desc" 1948 | } 1949 | }, 1950 | "pluginVersion": "9.0.4", 1951 | "targets": [ 1952 | { 1953 | "datasource": { 1954 | "type": "prometheus", 1955 | "uid": "PBFA97CFB590B2093" 1956 | }, 1957 | "expr": "sum(rate(container_network_transmit_bytes_total{name=~\".+\"}[$__rate_interval])) by (name)", 1958 | "format": "time_series", 1959 | "hide": false, 1960 | "interval": "", 1961 | "intervalFactor": 2, 1962 | "legendFormat": "{{name}}", 1963 | "refId": "A", 1964 | "step": 240 1965 | }, 1966 | { 1967 | "datasource": { 1968 | "type": "prometheus", 1969 | "uid": "PBFA97CFB590B2093" 1970 | }, 1971 | "expr": "rate(container_network_transmit_bytes_total{id=\"/\"}[$__rate_interval])", 1972 | "format": "time_series", 1973 | "hide": true, 1974 | "interval": "", 1975 | "intervalFactor": 2, 1976 | "legendFormat": "", 1977 | "refId": "B", 1978 | "step": 10 1979 | }, 1980 | { 1981 | "datasource": { 1982 | "type": "prometheus", 1983 | "uid": "PBFA97CFB590B2093" 1984 | }, 1985 | "expr": "sum(rate(container_network_transmit_bytes_total{name=~\".+\"}[$__rate_interval])) by (name)", 1986 | "hide": true, 1987 | "legendFormat": "{{name}}", 1988 | "refId": "C" 1989 | } 1990 | ], 1991 | "title": "Sent Network Traffic per Container", 1992 | "type": "timeseries" 1993 | }, 1994 | { 1995 | "aliasColors": {}, 1996 | "bars": false, 1997 | "dashLength": 10, 1998 | "dashes": false, 1999 | "datasource": { 2000 | "type": "prometheus", 2001 | "uid": "PBFA97CFB590B2093" 2002 | }, 2003 | "editable": true, 2004 | "error": false, 2005 | "fieldConfig": { 2006 | "defaults": { 2007 | "links": [] 2008 | }, 2009 | "overrides": [] 2010 | }, 2011 | "fill": 3, 2012 | "fillGradient": 0, 2013 | "grid": {}, 2014 | "gridPos": { 2015 | "h": 7, 2016 | "w": 24, 2017 | "x": 0, 2018 | "y": 31 2019 | }, 2020 | "hiddenSeries": false, 2021 | "id": 34, 2022 | "legend": { 2023 | "alignAsTable": true, 2024 | "avg": false, 2025 | "current": false, 2026 | "max": false, 2027 | "min": false, 2028 | "rightSide": true, 2029 | "show": true, 2030 | "total": false, 2031 | "values": false 2032 | }, 2033 | "lines": true, 2034 | "linewidth": 2, 2035 | "links": [], 2036 | "nullPointMode": "null as zero", 2037 | "options": { 2038 | "alertThreshold": true 2039 | }, 2040 | "percentage": false, 2041 | "pluginVersion": "9.0.4", 2042 | "pointradius": 5, 2043 | "points": false, 2044 | "renderer": "flot", 2045 | "seriesOverrides": [], 2046 | "spaceLength": 10, 2047 | "stack": true, 2048 | "steppedLine": false, 2049 | "targets": [ 2050 | { 2051 | "datasource": { 2052 | "type": "prometheus", 2053 | "uid": "PBFA97CFB590B2093" 2054 | }, 2055 | "expr": "sum(container_memory_swap{name=~\".+\"}) by (name)", 2056 | "format": "time_series", 2057 | "hide": false, 2058 | "interval": "", 2059 | "intervalFactor": 2, 2060 | "legendFormat": "{{name}}", 2061 | "refId": "A", 2062 | "step": 240 2063 | }, 2064 | { 2065 | "datasource": { 2066 | "type": "prometheus", 2067 | "uid": "PBFA97CFB590B2093" 2068 | }, 2069 | "expr": "container_memory_usage_bytes{name=~\".+\"}", 2070 | "format": "time_series", 2071 | "hide": true, 2072 | "interval": "", 2073 | "intervalFactor": 2, 2074 | "legendFormat": "{{name}}", 2075 | "refId": "B", 2076 | "step": 240 2077 | }, 2078 | { 2079 | "datasource": { 2080 | "type": "prometheus", 2081 | "uid": "PBFA97CFB590B2093" 2082 | }, 2083 | "expr": "sum(container_memory_swap{name=~\".+\"}) by (name)", 2084 | "hide": true, 2085 | "legendFormat": "{{name}}", 2086 | "refId": "C" 2087 | } 2088 | ], 2089 | "thresholds": [], 2090 | "timeRegions": [], 2091 | "title": "Memory Swap per Container", 2092 | "tooltip": { 2093 | "msResolution": true, 2094 | "shared": true, 2095 | "sort": 0, 2096 | "value_type": "individual" 2097 | }, 2098 | "type": "graph", 2099 | "xaxis": { 2100 | "mode": "time", 2101 | "show": true, 2102 | "values": [] 2103 | }, 2104 | "yaxes": [ 2105 | { 2106 | "format": "bytes", 2107 | "label": "", 2108 | "logBase": 1, 2109 | "show": true 2110 | }, 2111 | { 2112 | "format": "short", 2113 | "logBase": 1, 2114 | "show": true 2115 | } 2116 | ], 2117 | "yaxis": { 2118 | "align": false 2119 | } 2120 | } 2121 | ], 2122 | "refresh": "5s", 2123 | "schemaVersion": 36, 2124 | "style": "dark", 2125 | "tags": [ 2126 | "Containers", 2127 | "Services", 2128 | "Docker" 2129 | ], 2130 | "templating": { 2131 | "list": [ 2132 | { 2133 | "current": { 2134 | "selected": false, 2135 | "text": "node-exporter", 2136 | "value": "node-exporter" 2137 | }, 2138 | "datasource": { 2139 | "type": "prometheus", 2140 | "uid": "PBFA97CFB590B2093" 2141 | }, 2142 | "definition": "label_values(node_exporter_build_info,instance)", 2143 | "hide": 0, 2144 | "includeAll": false, 2145 | "multi": false, 2146 | "name": "datasource", 2147 | "options": [], 2148 | "query": { 2149 | "query": "label_values(node_exporter_build_info,instance)", 2150 | "refId": "Prometheus-server-Variable-Query" 2151 | }, 2152 | "refresh": 1, 2153 | "regex": "/([^:]+):.*/", 2154 | "skipUrlSync": false, 2155 | "sort": 1, 2156 | "tagValuesQuery": "", 2157 | "tagsQuery": "", 2158 | "type": "query", 2159 | "useTags": false 2160 | }, 2161 | { 2162 | "auto": true, 2163 | "auto_count": 50, 2164 | "auto_min": "50s", 2165 | "current": { 2166 | "selected": false, 2167 | "text": "auto", 2168 | "value": "$__auto_interval_interval" 2169 | }, 2170 | "hide": 0, 2171 | "includeAll": false, 2172 | "label": "Interval", 2173 | "multi": false, 2174 | "name": "interval", 2175 | "options": [ 2176 | { 2177 | "selected": true, 2178 | "text": "auto", 2179 | "value": "$__auto_interval_interval" 2180 | }, 2181 | { 2182 | "selected": false, 2183 | "text": "30s", 2184 | "value": "30s" 2185 | }, 2186 | { 2187 | "selected": false, 2188 | "text": "1m", 2189 | "value": "1m" 2190 | }, 2191 | { 2192 | "selected": false, 2193 | "text": "2m", 2194 | "value": "2m" 2195 | }, 2196 | { 2197 | "selected": false, 2198 | "text": "3m", 2199 | "value": "3m" 2200 | }, 2201 | { 2202 | "selected": false, 2203 | "text": "5m", 2204 | "value": "5m" 2205 | }, 2206 | { 2207 | "selected": false, 2208 | "text": "7m", 2209 | "value": "7m" 2210 | }, 2211 | { 2212 | "selected": false, 2213 | "text": "10m", 2214 | "value": "10m" 2215 | }, 2216 | { 2217 | "selected": false, 2218 | "text": "30m", 2219 | "value": "30m" 2220 | }, 2221 | { 2222 | "selected": false, 2223 | "text": "1h", 2224 | "value": "1h" 2225 | }, 2226 | { 2227 | "selected": false, 2228 | "text": "6h", 2229 | "value": "6h" 2230 | }, 2231 | { 2232 | "selected": false, 2233 | "text": "12h", 2234 | "value": "12h" 2235 | }, 2236 | { 2237 | "selected": false, 2238 | "text": "1d", 2239 | "value": "1d" 2240 | }, 2241 | { 2242 | "selected": false, 2243 | "text": "7d", 2244 | "value": "7d" 2245 | }, 2246 | { 2247 | "selected": false, 2248 | "text": "14d", 2249 | "value": "14d" 2250 | }, 2251 | { 2252 | "selected": false, 2253 | "text": "30d", 2254 | "value": "30d" 2255 | } 2256 | ], 2257 | "query": "30s,1m,2m,3m,5m,7m,10m,30m,1h,6h,12h,1d,7d,14d,30d", 2258 | "refresh": 2, 2259 | "skipUrlSync": false, 2260 | "type": "interval" 2261 | }, 2262 | { 2263 | "datasource": { 2264 | "type": "prometheus", 2265 | "uid": "PBFA97CFB590B2093" 2266 | }, 2267 | "filters": [ 2268 | { 2269 | "condition": "", 2270 | "key": "server", 2271 | "operator": "=", 2272 | "value": "PRODUCTION" 2273 | } 2274 | ], 2275 | "hide": 1, 2276 | "label": "", 2277 | "name": "Filters", 2278 | "skipUrlSync": false, 2279 | "type": "adhoc" 2280 | } 2281 | ] 2282 | }, 2283 | "time": { 2284 | "from": "now-1h", 2285 | "to": "now" 2286 | }, 2287 | "timepicker": { 2288 | "refresh_intervals": [ 2289 | "5s", 2290 | "10s", 2291 | "30s", 2292 | "1m", 2293 | "5m", 2294 | "15m", 2295 | "30m", 2296 | "1h", 2297 | "2h", 2298 | "1d" 2299 | ], 2300 | "time_options": [ 2301 | "5m", 2302 | "15m", 2303 | "1h", 2304 | "6h", 2305 | "12h", 2306 | "24h", 2307 | "2d", 2308 | "7d", 2309 | "30d" 2310 | ] 2311 | }, 2312 | "timezone": "browser", 2313 | "title": "Container Stats", 2314 | "uid": "000000014", 2315 | "version": 1, 2316 | "weekStart": "" 2317 | } 2318 | -------------------------------------------------------------------------------- /data/grafanaConfig/dashboards/Host-Stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "annotations": { 3 | "list": [ 4 | { 5 | "$$hashKey": "object:1273", 6 | "builtIn": 1, 7 | "datasource": { 8 | "type": "datasource", 9 | "uid": "grafana" 10 | }, 11 | "enable": true, 12 | "hide": true, 13 | "iconColor": "rgba(0, 211, 255, 1)", 14 | "name": "Annotations & Alerts", 15 | "target": { 16 | "limit": 100, 17 | "matchAny": false, 18 | "tags": [], 19 | "type": "dashboard" 20 | }, 21 | "type": "dashboard" 22 | } 23 | ] 24 | }, 25 | "editable": true, 26 | "fiscalYearStartMonth": 0, 27 | "graphTooltip": 0, 28 | "links": [], 29 | "liveNow": false, 30 | "panels": [ 31 | { 32 | "datasource": { 33 | "type": "datasource", 34 | "uid": "grafana" 35 | }, 36 | "editable": true, 37 | "error": false, 38 | "gridPos": { 39 | "h": 3, 40 | "w": 24, 41 | "x": 0, 42 | "y": 0 43 | }, 44 | "id": 26, 45 | "links": [], 46 | "options": { 47 | "content": "# Host Metrics \nThis dashboard shows host level metrics gathered from prometheus. Prometheus in turn scrapes the data from the node-exporter scripts deployed as part of the template. You should be able to dynamically adjust the scope of the graphs using the templating above.", 48 | "mode": "markdown" 49 | }, 50 | "pluginVersion": "9.0.4", 51 | "targets": [ 52 | { 53 | "datasource": { 54 | "type": "datasource", 55 | "uid": "grafana" 56 | }, 57 | "refId": "A" 58 | } 59 | ], 60 | "transparent": true, 61 | "type": "text" 62 | }, 63 | { 64 | "datasource": { 65 | "type": "prometheus", 66 | "uid": "PBFA97CFB590B2093" 67 | }, 68 | "fieldConfig": { 69 | "defaults": { 70 | "color": { 71 | "mode": "palette-classic" 72 | }, 73 | "custom": { 74 | "axisLabel": "", 75 | "axisPlacement": "auto", 76 | "barAlignment": 0, 77 | "drawStyle": "line", 78 | "fillOpacity": 40, 79 | "gradientMode": "none", 80 | "hideFrom": { 81 | "legend": false, 82 | "tooltip": false, 83 | "viz": false 84 | }, 85 | "lineInterpolation": "linear", 86 | "lineWidth": 2, 87 | "pointSize": 5, 88 | "scaleDistribution": { 89 | "type": "linear" 90 | }, 91 | "showPoints": "never", 92 | "spanNulls": true, 93 | "stacking": { 94 | "group": "A", 95 | "mode": "none" 96 | }, 97 | "thresholdsStyle": { 98 | "mode": "off" 99 | } 100 | }, 101 | "links": [], 102 | "mappings": [], 103 | "thresholds": { 104 | "mode": "absolute", 105 | "steps": [ 106 | { 107 | "color": "green", 108 | "value": null 109 | }, 110 | { 111 | "color": "red", 112 | "value": 80 113 | } 114 | ] 115 | }, 116 | "unit": "short" 117 | }, 118 | "overrides": [ 119 | { 120 | "matcher": { 121 | "id": "byName", 122 | "options": "10.196.94.100:9100" 123 | }, 124 | "properties": [ 125 | { 126 | "id": "color", 127 | "value": { 128 | "fixedColor": "#BA43A9", 129 | "mode": "fixed" 130 | } 131 | } 132 | ] 133 | }, 134 | { 135 | "matcher": { 136 | "id": "byName", 137 | "options": "10.196.94.36:9100" 138 | }, 139 | "properties": [ 140 | { 141 | "id": "color", 142 | "value": { 143 | "fixedColor": "#82B5D8", 144 | "mode": "fixed" 145 | } 146 | } 147 | ] 148 | }, 149 | { 150 | "matcher": { 151 | "id": "byName", 152 | "options": "10.196.94.38:9100" 153 | }, 154 | "properties": [ 155 | { 156 | "id": "color", 157 | "value": { 158 | "fixedColor": "#3F6833", 159 | "mode": "fixed" 160 | } 161 | } 162 | ] 163 | }, 164 | { 165 | "matcher": { 166 | "id": "byName", 167 | "options": "10.196.94.46:9100" 168 | }, 169 | "properties": [ 170 | { 171 | "id": "color", 172 | "value": { 173 | "fixedColor": "#0A437C", 174 | "mode": "fixed" 175 | } 176 | } 177 | ] 178 | }, 179 | { 180 | "matcher": { 181 | "id": "byName", 182 | "options": "10.196.94.48:9100" 183 | }, 184 | "properties": [ 185 | { 186 | "id": "color", 187 | "value": { 188 | "fixedColor": "#EAB839", 189 | "mode": "fixed" 190 | } 191 | } 192 | ] 193 | } 194 | ] 195 | }, 196 | "gridPos": { 197 | "h": 5, 198 | "w": 24, 199 | "x": 0, 200 | "y": 3 201 | }, 202 | "id": 14, 203 | "links": [], 204 | "options": { 205 | "legend": { 206 | "calcs": [ 207 | "lastNotNull" 208 | ], 209 | "displayMode": "list", 210 | "placement": "bottom" 211 | }, 212 | "tooltip": { 213 | "mode": "multi", 214 | "sort": "none" 215 | } 216 | }, 217 | "pluginVersion": "9.0.4", 218 | "targets": [ 219 | { 220 | "calculatedInterval": "2s", 221 | "datasource": { 222 | "type": "prometheus", 223 | "uid": "PBFA97CFB590B2093" 224 | }, 225 | "datasourceErrors": {}, 226 | "errors": {}, 227 | "expr": "node_load1{instance=~\"$node\"}", 228 | "intervalFactor": 10, 229 | "legendFormat": "{{instance}}", 230 | "metric": "", 231 | "prometheusLink": "http://10.196.94.101:9090/graph#%5B%7B%22expr%22%3A%22node_load1%22%2C%22range_input%22%3A%223601s%22%2C%22end_input%22%3A%222016-1-19%2020%3A15%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 232 | "refId": "A", 233 | "step": 20 234 | } 235 | ], 236 | "title": "Load average", 237 | "type": "timeseries" 238 | }, 239 | { 240 | "datasource": { 241 | "type": "prometheus", 242 | "uid": "PBFA97CFB590B2093" 243 | }, 244 | "fieldConfig": { 245 | "defaults": { 246 | "color": { 247 | "mode": "palette-classic" 248 | }, 249 | "custom": { 250 | "axisLabel": "", 251 | "axisPlacement": "auto", 252 | "barAlignment": 0, 253 | "drawStyle": "line", 254 | "fillOpacity": 20, 255 | "gradientMode": "none", 256 | "hideFrom": { 257 | "legend": false, 258 | "tooltip": false, 259 | "viz": false 260 | }, 261 | "lineInterpolation": "linear", 262 | "lineWidth": 2, 263 | "pointSize": 5, 264 | "scaleDistribution": { 265 | "type": "linear" 266 | }, 267 | "showPoints": "never", 268 | "spanNulls": true, 269 | "stacking": { 270 | "group": "A", 271 | "mode": "none" 272 | }, 273 | "thresholdsStyle": { 274 | "mode": "off" 275 | } 276 | }, 277 | "links": [], 278 | "mappings": [], 279 | "thresholds": { 280 | "mode": "absolute", 281 | "steps": [ 282 | { 283 | "color": "green", 284 | "value": null 285 | }, 286 | { 287 | "color": "red", 288 | "value": 80 289 | } 290 | ] 291 | }, 292 | "unit": "short" 293 | }, 294 | "overrides": [] 295 | }, 296 | "gridPos": { 297 | "h": 5, 298 | "w": 24, 299 | "x": 0, 300 | "y": 8 301 | }, 302 | "id": 11, 303 | "links": [], 304 | "options": { 305 | "legend": { 306 | "calcs": [ 307 | "lastNotNull" 308 | ], 309 | "displayMode": "list", 310 | "placement": "bottom" 311 | }, 312 | "tooltip": { 313 | "mode": "multi", 314 | "sort": "none" 315 | } 316 | }, 317 | "pluginVersion": "9.0.4", 318 | "targets": [ 319 | { 320 | "calculatedInterval": "2s", 321 | "datasource": { 322 | "type": "prometheus", 323 | "uid": "PBFA97CFB590B2093" 324 | }, 325 | "datasourceErrors": {}, 326 | "errors": {}, 327 | "expr": "node_procs_blocked{instance=~\"$node\"}", 328 | "intervalFactor": 2, 329 | "legendFormat": "Blocked - {{instance}}", 330 | "metric": "", 331 | "prometheusLink": "http://10.196.94.100:9090/graph#%5B%7B%22expr%22%3A%22sum(rate(node_cpu%7Binstance%3D%5C%2210.196.94.38%3A9100%5C%22%2Cmode!%3D%5C%22idle%5C%22%7D%5B1m%5D)%20*%20100)%20by%20(node_cpu)%20%2F8%22%2C%22range_input%22%3A%223600s%22%2C%22end_input%22%3A%222016-1-16%207%3A10%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 332 | "refId": "A", 333 | "step": 4 334 | }, 335 | { 336 | "datasource": { 337 | "type": "prometheus", 338 | "uid": "PBFA97CFB590B2093" 339 | }, 340 | "expr": "node_procs_running{instance=~\"$node\"}", 341 | "intervalFactor": 2, 342 | "legendFormat": "Running - {{instance}}", 343 | "refId": "B", 344 | "step": 4 345 | } 346 | ], 347 | "title": "Node Procs", 348 | "type": "timeseries" 349 | }, 350 | { 351 | "datasource": { 352 | "type": "prometheus", 353 | "uid": "PBFA97CFB590B2093" 354 | }, 355 | "fieldConfig": { 356 | "defaults": { 357 | "color": { 358 | "mode": "palette-classic" 359 | }, 360 | "custom": { 361 | "axisLabel": "", 362 | "axisPlacement": "auto", 363 | "barAlignment": 0, 364 | "drawStyle": "line", 365 | "fillOpacity": 40, 366 | "gradientMode": "none", 367 | "hideFrom": { 368 | "legend": false, 369 | "tooltip": false, 370 | "viz": false 371 | }, 372 | "lineInterpolation": "linear", 373 | "lineWidth": 2, 374 | "pointSize": 5, 375 | "scaleDistribution": { 376 | "type": "linear" 377 | }, 378 | "showPoints": "never", 379 | "spanNulls": true, 380 | "stacking": { 381 | "group": "A", 382 | "mode": "normal" 383 | }, 384 | "thresholdsStyle": { 385 | "mode": "off" 386 | } 387 | }, 388 | "links": [], 389 | "mappings": [], 390 | "thresholds": { 391 | "mode": "absolute", 392 | "steps": [ 393 | { 394 | "color": "green", 395 | "value": null 396 | }, 397 | { 398 | "color": "red", 399 | "value": 80 400 | } 401 | ] 402 | }, 403 | "unit": "short" 404 | }, 405 | "overrides": [] 406 | }, 407 | "gridPos": { 408 | "h": 7, 409 | "w": 12, 410 | "x": 0, 411 | "y": 13 412 | }, 413 | "id": 13, 414 | "links": [], 415 | "options": { 416 | "legend": { 417 | "calcs": [ 418 | "lastNotNull" 419 | ], 420 | "displayMode": "list", 421 | "placement": "bottom" 422 | }, 423 | "tooltip": { 424 | "mode": "multi", 425 | "sort": "none" 426 | } 427 | }, 428 | "pluginVersion": "9.0.4", 429 | "targets": [ 430 | { 431 | "calculatedInterval": "2s", 432 | "datasource": { 433 | "type": "prometheus", 434 | "uid": "PBFA97CFB590B2093" 435 | }, 436 | "datasourceErrors": {}, 437 | "errors": {}, 438 | "expr": "node_memory_MemAvailable_bytes{instance=~\"$node\"} / 1048576", 439 | "intervalFactor": 2, 440 | "legendFormat": "{{instance}}", 441 | "metric": "", 442 | "prometheusLink": "http://10.196.94.100:9090/graph#%5B%7B%22expr%22%3A%22node_memory_MemAvailable%7Binstance%3D%5C%2210.196.94.100%3A9100%5C%22%7D%20%2F%201048576%22%2C%22range_input%22%3A%223600s%22%2C%22end_input%22%3A%222016-1-16%207%3A11%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 443 | "refId": "A", 444 | "step": 10 445 | } 446 | ], 447 | "title": "Available Memory", 448 | "type": "timeseries" 449 | }, 450 | { 451 | "datasource": { 452 | "type": "prometheus", 453 | "uid": "PBFA97CFB590B2093" 454 | }, 455 | "fieldConfig": { 456 | "defaults": { 457 | "color": { 458 | "mode": "palette-classic" 459 | }, 460 | "custom": { 461 | "axisLabel": "", 462 | "axisPlacement": "auto", 463 | "barAlignment": 0, 464 | "drawStyle": "line", 465 | "fillOpacity": 40, 466 | "gradientMode": "none", 467 | "hideFrom": { 468 | "legend": false, 469 | "tooltip": false, 470 | "viz": false 471 | }, 472 | "lineInterpolation": "linear", 473 | "lineWidth": 2, 474 | "pointSize": 5, 475 | "scaleDistribution": { 476 | "type": "linear" 477 | }, 478 | "showPoints": "never", 479 | "spanNulls": true, 480 | "stacking": { 481 | "group": "A", 482 | "mode": "normal" 483 | }, 484 | "thresholdsStyle": { 485 | "mode": "off" 486 | } 487 | }, 488 | "links": [], 489 | "mappings": [], 490 | "thresholds": { 491 | "mode": "absolute", 492 | "steps": [ 493 | { 494 | "color": "green", 495 | "value": null 496 | }, 497 | { 498 | "color": "red", 499 | "value": 80 500 | } 501 | ] 502 | }, 503 | "unit": "short" 504 | }, 505 | "overrides": [] 506 | }, 507 | "gridPos": { 508 | "h": 7, 509 | "w": 12, 510 | "x": 12, 511 | "y": 13 512 | }, 513 | "id": 17, 514 | "links": [], 515 | "options": { 516 | "legend": { 517 | "calcs": [ 518 | "lastNotNull" 519 | ], 520 | "displayMode": "list", 521 | "placement": "bottom" 522 | }, 523 | "tooltip": { 524 | "mode": "multi", 525 | "sort": "none" 526 | } 527 | }, 528 | "pluginVersion": "9.0.4", 529 | "targets": [ 530 | { 531 | "calculatedInterval": "2s", 532 | "datasource": { 533 | "type": "prometheus", 534 | "uid": "PBFA97CFB590B2093" 535 | }, 536 | "datasourceErrors": {}, 537 | "errors": {}, 538 | "expr": "node_memory_Committed_AS_bytes{instance=~\"$node\"} / 1048576", 539 | "intervalFactor": 2, 540 | "legendFormat": "{{instance}}", 541 | "metric": "", 542 | "prometheusLink": "http://10.196.94.100:9090/graph#%5B%7B%22expr%22%3A%22node_memory_Committed_AS%7Binstance%3D%5C%2210.196.94.38%3A9100%5C%22%7D%20%2F%201048576%22%2C%22range_input%22%3A%223601s%22%2C%22end_input%22%3A%222016-1-16%207%3A13%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 543 | "refId": "A", 544 | "step": 10, 545 | "target": "" 546 | } 547 | ], 548 | "title": "Comitted Memory", 549 | "type": "timeseries" 550 | }, 551 | { 552 | "datasource": { 553 | "type": "prometheus", 554 | "uid": "PBFA97CFB590B2093" 555 | }, 556 | "fieldConfig": { 557 | "defaults": { 558 | "color": { 559 | "fixedColor": "rgb(31, 120, 193)", 560 | "mode": "fixed" 561 | }, 562 | "mappings": [ 563 | { 564 | "options": { 565 | "match": "null", 566 | "result": { 567 | "text": "N/A" 568 | } 569 | }, 570 | "type": "special" 571 | } 572 | ], 573 | "thresholds": { 574 | "mode": "absolute", 575 | "steps": [ 576 | { 577 | "color": "green", 578 | "value": null 579 | }, 580 | { 581 | "color": "red", 582 | "value": 80 583 | } 584 | ] 585 | }, 586 | "unit": "bytes" 587 | }, 588 | "overrides": [] 589 | }, 590 | "gridPos": { 591 | "h": 3, 592 | "w": 8, 593 | "x": 0, 594 | "y": 20 595 | }, 596 | "id": 23, 597 | "links": [], 598 | "maxDataPoints": 100, 599 | "options": { 600 | "colorMode": "none", 601 | "graphMode": "area", 602 | "justifyMode": "auto", 603 | "orientation": "horizontal", 604 | "reduceOptions": { 605 | "calcs": [ 606 | "mean" 607 | ], 608 | "fields": "", 609 | "values": false 610 | }, 611 | "textMode": "auto" 612 | }, 613 | "pluginVersion": "9.0.4", 614 | "targets": [ 615 | { 616 | "datasource": { 617 | "type": "prometheus", 618 | "uid": "PBFA97CFB590B2093" 619 | }, 620 | "expr": "sum(node_memory_MemTotal_bytes{instance=~\"$node\"})", 621 | "intervalFactor": 2, 622 | "legendFormat": "", 623 | "refId": "A", 624 | "step": 60 625 | } 626 | ], 627 | "title": "Total Memory", 628 | "type": "stat" 629 | }, 630 | { 631 | "datasource": { 632 | "type": "prometheus", 633 | "uid": "PBFA97CFB590B2093" 634 | }, 635 | "fieldConfig": { 636 | "defaults": { 637 | "color": { 638 | "fixedColor": "rgb(31, 120, 193)", 639 | "mode": "fixed" 640 | }, 641 | "mappings": [ 642 | { 643 | "options": { 644 | "match": "null", 645 | "result": { 646 | "text": "N/A" 647 | } 648 | }, 649 | "type": "special" 650 | } 651 | ], 652 | "thresholds": { 653 | "mode": "absolute", 654 | "steps": [ 655 | { 656 | "color": "green", 657 | "value": null 658 | }, 659 | { 660 | "color": "red", 661 | "value": 80 662 | } 663 | ] 664 | }, 665 | "unit": "bytes" 666 | }, 667 | "overrides": [] 668 | }, 669 | "gridPos": { 670 | "h": 3, 671 | "w": 8, 672 | "x": 8, 673 | "y": 20 674 | }, 675 | "id": 24, 676 | "links": [], 677 | "maxDataPoints": 100, 678 | "options": { 679 | "colorMode": "none", 680 | "graphMode": "area", 681 | "justifyMode": "auto", 682 | "orientation": "horizontal", 683 | "reduceOptions": { 684 | "calcs": [ 685 | "mean" 686 | ], 687 | "fields": "", 688 | "values": false 689 | }, 690 | "textMode": "auto" 691 | }, 692 | "pluginVersion": "9.0.4", 693 | "targets": [ 694 | { 695 | "datasource": { 696 | "type": "prometheus", 697 | "uid": "PBFA97CFB590B2093" 698 | }, 699 | "expr": "sum(node_memory_MemFree_bytes{instance=~\"$node\"})", 700 | "intervalFactor": 2, 701 | "legendFormat": "", 702 | "refId": "A", 703 | "step": 60 704 | } 705 | ], 706 | "title": "Total Memory Free", 707 | "type": "stat" 708 | }, 709 | { 710 | "datasource": { 711 | "type": "prometheus", 712 | "uid": "PBFA97CFB590B2093" 713 | }, 714 | "fieldConfig": { 715 | "defaults": { 716 | "color": { 717 | "fixedColor": "rgb(31, 120, 193)", 718 | "mode": "fixed" 719 | }, 720 | "mappings": [ 721 | { 722 | "options": { 723 | "match": "null", 724 | "result": { 725 | "text": "N/A" 726 | } 727 | }, 728 | "type": "special" 729 | } 730 | ], 731 | "thresholds": { 732 | "mode": "absolute", 733 | "steps": [ 734 | { 735 | "color": "green", 736 | "value": null 737 | }, 738 | { 739 | "color": "red", 740 | "value": 80 741 | } 742 | ] 743 | }, 744 | "unit": "bytes" 745 | }, 746 | "overrides": [] 747 | }, 748 | "gridPos": { 749 | "h": 3, 750 | "w": 8, 751 | "x": 16, 752 | "y": 20 753 | }, 754 | "id": 25, 755 | "links": [], 756 | "maxDataPoints": 100, 757 | "options": { 758 | "colorMode": "none", 759 | "graphMode": "area", 760 | "justifyMode": "auto", 761 | "orientation": "horizontal", 762 | "reduceOptions": { 763 | "calcs": [ 764 | "mean" 765 | ], 766 | "fields": "", 767 | "values": false 768 | }, 769 | "textMode": "auto" 770 | }, 771 | "pluginVersion": "9.0.4", 772 | "targets": [ 773 | { 774 | "datasource": { 775 | "type": "prometheus", 776 | "uid": "PBFA97CFB590B2093" 777 | }, 778 | "expr": "sum(node_memory_MemAvailable_bytes{instance=~\"$node\"})", 779 | "intervalFactor": 2, 780 | "legendFormat": "", 781 | "refId": "A", 782 | "step": 60 783 | } 784 | ], 785 | "title": "Total Memory Available", 786 | "type": "stat" 787 | }, 788 | { 789 | "datasource": { 790 | "type": "prometheus", 791 | "uid": "PBFA97CFB590B2093" 792 | }, 793 | "fieldConfig": { 794 | "defaults": { 795 | "color": { 796 | "mode": "palette-classic" 797 | }, 798 | "custom": { 799 | "axisLabel": "", 800 | "axisPlacement": "auto", 801 | "barAlignment": 0, 802 | "drawStyle": "line", 803 | "fillOpacity": 10, 804 | "gradientMode": "none", 805 | "hideFrom": { 806 | "legend": false, 807 | "tooltip": false, 808 | "viz": false 809 | }, 810 | "lineInterpolation": "linear", 811 | "lineWidth": 2, 812 | "pointSize": 5, 813 | "scaleDistribution": { 814 | "type": "linear" 815 | }, 816 | "showPoints": "never", 817 | "spanNulls": true, 818 | "stacking": { 819 | "group": "A", 820 | "mode": "none" 821 | }, 822 | "thresholdsStyle": { 823 | "mode": "off" 824 | } 825 | }, 826 | "links": [], 827 | "mappings": [], 828 | "thresholds": { 829 | "mode": "absolute", 830 | "steps": [ 831 | { 832 | "color": "green", 833 | "value": null 834 | }, 835 | { 836 | "color": "red", 837 | "value": 80 838 | } 839 | ] 840 | }, 841 | "unit": "short" 842 | }, 843 | "overrides": [] 844 | }, 845 | "gridPos": { 846 | "h": 7, 847 | "w": 12, 848 | "x": 0, 849 | "y": 23 850 | }, 851 | "id": 12, 852 | "links": [], 853 | "options": { 854 | "legend": { 855 | "calcs": [ 856 | "lastNotNull" 857 | ], 858 | "displayMode": "list", 859 | "placement": "bottom" 860 | }, 861 | "tooltip": { 862 | "mode": "multi", 863 | "sort": "none" 864 | } 865 | }, 866 | "pluginVersion": "9.0.4", 867 | "targets": [ 868 | { 869 | "calculatedInterval": "2m", 870 | "datasource": { 871 | "type": "prometheus", 872 | "uid": "PBFA97CFB590B2093" 873 | }, 874 | "datasourceErrors": {}, 875 | "errors": {}, 876 | "expr": "sum(rate(node_disk_read_time_seconds_total{instance=~\"$node\"}[30s])) by (instance)", 877 | "hide": false, 878 | "intervalFactor": 2, 879 | "legendFormat": "{{instance}}", 880 | "metric": "", 881 | "prometheusLink": "http://10.196.94.100:9090/graph#%5B%7B%22expr%22%3A%22rate(node_disk_read_time_ms%7Binstance%3D%5C%2210.196.94.100%3A9100%5C%22%2Cdevice!%3D%5C%22sr0%5C%22%7D%5B30s%5D)%22%2C%22range_input%22%3A%2286400s%22%2C%22end_input%22%3A%222016-1-7%2014%3A58%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 882 | "refId": "A", 883 | "step": 10 884 | } 885 | ], 886 | "title": "Disk Time", 887 | "type": "timeseries" 888 | }, 889 | { 890 | "datasource": { 891 | "type": "prometheus", 892 | "uid": "PBFA97CFB590B2093" 893 | }, 894 | "fieldConfig": { 895 | "defaults": { 896 | "color": { 897 | "mode": "palette-classic" 898 | }, 899 | "custom": { 900 | "axisLabel": "", 901 | "axisPlacement": "auto", 902 | "barAlignment": 0, 903 | "drawStyle": "line", 904 | "fillOpacity": 40, 905 | "gradientMode": "none", 906 | "hideFrom": { 907 | "legend": false, 908 | "tooltip": false, 909 | "viz": false 910 | }, 911 | "lineInterpolation": "linear", 912 | "lineWidth": 2, 913 | "pointSize": 5, 914 | "scaleDistribution": { 915 | "type": "linear" 916 | }, 917 | "showPoints": "never", 918 | "spanNulls": true, 919 | "stacking": { 920 | "group": "A", 921 | "mode": "normal" 922 | }, 923 | "thresholdsStyle": { 924 | "mode": "off" 925 | } 926 | }, 927 | "links": [], 928 | "mappings": [], 929 | "thresholds": { 930 | "mode": "absolute", 931 | "steps": [ 932 | { 933 | "color": "green", 934 | "value": null 935 | }, 936 | { 937 | "color": "red", 938 | "value": 80 939 | } 940 | ] 941 | }, 942 | "unit": "short" 943 | }, 944 | "overrides": [] 945 | }, 946 | "gridPos": { 947 | "h": 7, 948 | "w": 12, 949 | "x": 12, 950 | "y": 23 951 | }, 952 | "id": 16, 953 | "links": [], 954 | "options": { 955 | "legend": { 956 | "calcs": [], 957 | "displayMode": "hidden", 958 | "placement": "bottom" 959 | }, 960 | "tooltip": { 961 | "mode": "multi", 962 | "sort": "none" 963 | } 964 | }, 965 | "pluginVersion": "9.0.4", 966 | "targets": [ 967 | { 968 | "calculatedInterval": "2m", 969 | "datasource": { 970 | "type": "prometheus", 971 | "uid": "PBFA97CFB590B2093" 972 | }, 973 | "datasourceErrors": {}, 974 | "errors": {}, 975 | "expr": "node_filesystem_free_bytes{instance=~\"$node\",mountpoint=\"/\"}", 976 | "intervalFactor": 2, 977 | "metric": "", 978 | "prometheusLink": "http://10.196.94.100:9090/graph#%5B%7B%22expr%22%3A%22node_filesystem_free%7Binstance%3D%5C%2210.196.94.100%3A9100%5C%22%2Cmountpoint%3D%5C%22%2F%5C%22%7D%22%2C%22range_input%22%3A%2286400s%22%2C%22end_input%22%3A%222016-1-7%2014%3A58%22%2C%22step_input%22%3A%22%22%2C%22stacked%22%3Afalse%2C%22tab%22%3A0%7D%5D", 979 | "refId": "A", 980 | "step": 10 981 | } 982 | ], 983 | "title": "Free Disk", 984 | "type": "timeseries" 985 | }, 986 | { 987 | "datasource": { 988 | "type": "prometheus", 989 | "uid": "PBFA97CFB590B2093" 990 | }, 991 | "fieldConfig": { 992 | "defaults": { 993 | "color": { 994 | "mode": "palette-classic" 995 | }, 996 | "custom": { 997 | "axisLabel": "", 998 | "axisPlacement": "auto", 999 | "barAlignment": 0, 1000 | "drawStyle": "line", 1001 | "fillOpacity": 10, 1002 | "gradientMode": "none", 1003 | "hideFrom": { 1004 | "legend": false, 1005 | "tooltip": false, 1006 | "viz": false 1007 | }, 1008 | "lineInterpolation": "linear", 1009 | "lineWidth": 3, 1010 | "pointSize": 5, 1011 | "scaleDistribution": { 1012 | "type": "linear" 1013 | }, 1014 | "showPoints": "never", 1015 | "spanNulls": true, 1016 | "stacking": { 1017 | "group": "A", 1018 | "mode": "none" 1019 | }, 1020 | "thresholdsStyle": { 1021 | "mode": "off" 1022 | } 1023 | }, 1024 | "links": [], 1025 | "mappings": [], 1026 | "thresholds": { 1027 | "mode": "absolute", 1028 | "steps": [ 1029 | { 1030 | "color": "green", 1031 | "value": null 1032 | }, 1033 | { 1034 | "color": "red", 1035 | "value": 80 1036 | } 1037 | ] 1038 | }, 1039 | "unit": "short" 1040 | }, 1041 | "overrides": [] 1042 | }, 1043 | "gridPos": { 1044 | "h": 7, 1045 | "w": 24, 1046 | "x": 0, 1047 | "y": 30 1048 | }, 1049 | "id": 20, 1050 | "links": [], 1051 | "options": { 1052 | "legend": { 1053 | "calcs": [ 1054 | "sum" 1055 | ], 1056 | "displayMode": "table", 1057 | "placement": "right" 1058 | }, 1059 | "tooltip": { 1060 | "mode": "multi", 1061 | "sort": "none" 1062 | } 1063 | }, 1064 | "pluginVersion": "9.0.4", 1065 | "targets": [ 1066 | { 1067 | "datasource": { 1068 | "type": "prometheus", 1069 | "uid": "PBFA97CFB590B2093" 1070 | }, 1071 | "expr": "rate(node_netstat_IpExt_InOctets{instance=~\"$node\"}[$__rate_interval])", 1072 | "intervalFactor": 2, 1073 | "legendFormat": "In - Discards", 1074 | "refId": "A", 1075 | "step": 4 1076 | }, 1077 | { 1078 | "datasource": { 1079 | "type": "prometheus", 1080 | "uid": "PBFA97CFB590B2093" 1081 | }, 1082 | "expr": "rate(node_netstat_IpExt_OutOctets{instance=~\"$node\"}[$__rate_interval])", 1083 | "intervalFactor": 2, 1084 | "legendFormat": "Out - Discards", 1085 | "refId": "B", 1086 | "step": 4 1087 | }, 1088 | { 1089 | "datasource": { 1090 | "type": "prometheus", 1091 | "uid": "PBFA97CFB590B2093" 1092 | }, 1093 | "expr": "rate(node_network_receive_drop_total{device=\"eth0\", instance=~\"$node\"}[$__rate_interval])", 1094 | "intervalFactor": 2, 1095 | "legendFormat": "Eth0 Receive Drops", 1096 | "refId": "C", 1097 | "step": 4 1098 | } 1099 | ], 1100 | "title": "Network Stats", 1101 | "type": "timeseries" 1102 | } 1103 | ], 1104 | "refresh": "5s", 1105 | "schemaVersion": 36, 1106 | "style": "dark", 1107 | "tags": [ 1108 | "Node-Exporter" 1109 | ], 1110 | "templating": { 1111 | "list": [ 1112 | { 1113 | "current": { 1114 | "selected": false, 1115 | "text": "node-exporter:9100", 1116 | "value": "node-exporter:9100" 1117 | }, 1118 | "datasource": { 1119 | "type": "prometheus", 1120 | "uid": "PBFA97CFB590B2093" 1121 | }, 1122 | "definition": "label_values(node_exporter_build_info,instance)", 1123 | "hide": 0, 1124 | "includeAll": false, 1125 | "label": "Host", 1126 | "multi": false, 1127 | "name": "node", 1128 | "options": [], 1129 | "query": { 1130 | "query": "label_values(node_exporter_build_info,instance)", 1131 | "refId": "Prometheus-node-Variable-Query" 1132 | }, 1133 | "refresh": 1, 1134 | "regex": "/:.*/", 1135 | "skipUrlSync": false, 1136 | "sort": 1, 1137 | "tagValuesQuery": "", 1138 | "tagsQuery": "", 1139 | "type": "query", 1140 | "useTags": false 1141 | } 1142 | ] 1143 | }, 1144 | "time": { 1145 | "from": "now-1h", 1146 | "to": "now" 1147 | }, 1148 | "timepicker": { 1149 | "collapse": false, 1150 | "enable": true, 1151 | "notice": false, 1152 | "now": true, 1153 | "refresh_intervals": [ 1154 | "5s", 1155 | "10s", 1156 | "30s", 1157 | "1m", 1158 | "5m", 1159 | "15m", 1160 | "30m", 1161 | "1h", 1162 | "2h", 1163 | "1d" 1164 | ], 1165 | "status": "Stable", 1166 | "time_options": [ 1167 | "5m", 1168 | "15m", 1169 | "1h", 1170 | "6h", 1171 | "12h", 1172 | "24h", 1173 | "2d", 1174 | "7d", 1175 | "30d" 1176 | ], 1177 | "type": "timepicker" 1178 | }, 1179 | "timezone": "browser", 1180 | "title": "Host Stats", 1181 | "uid": "000000010", 1182 | "version": 1, 1183 | "weekStart": "" 1184 | } -------------------------------------------------------------------------------- /data/grafanaConfig/grafana/grafana.ini: -------------------------------------------------------------------------------- 1 | ##################### Grafana Configuration Example ##################### 2 | # 3 | # Everything has defaults so you only need to uncomment things you want to 4 | # change 5 | 6 | # possible values : production, development 7 | ;app_mode = production 8 | 9 | # instance name, defaults to HOSTNAME environment variable value or hostname if HOSTNAME var is empty 10 | ;instance_name = ${HOSTNAME} 11 | 12 | #################################### Paths #################################### 13 | [paths] 14 | # Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used) 15 | ;data = /var/lib/grafana 16 | 17 | # Temporary files in `data` directory older than given duration will be removed 18 | ;temp_data_lifetime = 24h 19 | 20 | # Directory where grafana can store logs 21 | ;logs = /var/log/grafana 22 | 23 | # Directory where grafana will automatically scan and look for plugins 24 | ;plugins = /var/lib/grafana/plugins 25 | 26 | # folder that contains provisioning config files that grafana will apply on startup and while running. 27 | ;provisioning = conf/provisioning 28 | 29 | #################################### Server #################################### 30 | [server] 31 | # Protocol (http, https, h2, socket) 32 | ;protocol = http 33 | 34 | # The ip address to bind to, empty will bind to all interfaces 35 | ;http_addr = 36 | 37 | # The http port to use 38 | ;http_port = 3000 39 | 40 | # The public facing domain name used to access grafana from a browser 41 | ;domain = localhost 42 | 43 | # Redirect to correct domain if host header does not match domain 44 | # Prevents DNS rebinding attacks 45 | ;enforce_domain = false 46 | 47 | # The full public facing url you use in browser, used for redirects and emails 48 | # If you use reverse proxy and sub path specify full url (with sub path) 49 | ;root_url = %(protocol)s://%(domain)s:%(http_port)s/ 50 | 51 | # Serve Grafana from subpath specified in `root_url` setting. By default it is set to `false` for compatibility reasons. 52 | ;serve_from_sub_path = false 53 | 54 | # Log web requests 55 | ;router_logging = false 56 | 57 | # the path relative working path 58 | ;static_root_path = public 59 | 60 | # enable gzip 61 | ;enable_gzip = false 62 | 63 | # https certs & key file 64 | ;cert_file = 65 | ;cert_key = 66 | 67 | # Unix socket path 68 | ;socket = 69 | 70 | #################################### Database #################################### 71 | [database] 72 | # You can configure the database connection by specifying type, host, name, user and password 73 | # as separate properties or as on string using the url properties. 74 | 75 | # Either "mysql", "postgres" or "sqlite3", it's your choice 76 | ;type = sqlite3 77 | ;host = 127.0.0.1:3306 78 | ;name = grafana 79 | ;user = root 80 | # If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;""" 81 | ;password = 82 | 83 | # Use either URL or the previous fields to configure the database 84 | # Example: mysql://user:secret@host:port/database 85 | ;url = 86 | 87 | # For "postgres" only, either "disable", "require" or "verify-full" 88 | ;ssl_mode = disable 89 | 90 | ;ca_cert_path = 91 | ;client_key_path = 92 | ;client_cert_path = 93 | ;server_cert_name = 94 | 95 | # For "sqlite3" only, path relative to data_path setting 96 | ;path = grafana.db 97 | 98 | # Max idle conn setting default is 2 99 | ;max_idle_conn = 2 100 | 101 | # Max conn setting default is 0 (mean not set) 102 | ;max_open_conn = 103 | 104 | # Connection Max Lifetime default is 14400 (means 14400 seconds or 4 hours) 105 | ;conn_max_lifetime = 14400 106 | 107 | # Set to true to log the sql calls and execution times. 108 | ;log_queries = 109 | 110 | # For "sqlite3" only. cache mode setting used for connecting to the database. (private, shared) 111 | ;cache_mode = private 112 | 113 | #################################### Cache server ############################# 114 | [remote_cache] 115 | # Either "redis", "memcached" or "database" default is "database" 116 | ;type = database 117 | 118 | # cache connectionstring options 119 | # database: will use Grafana primary database. 120 | # redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false`. Only addr is required. ssl may be 'true', 'false', or 'insecure'. 121 | # memcache: 127.0.0.1:11211 122 | ;connstr = 123 | 124 | #################################### Data proxy ########################### 125 | [dataproxy] 126 | 127 | # This enables data proxy logging, default is false 128 | ;logging = false 129 | 130 | # How long the data proxy waits before timing out, default is 30 seconds. 131 | # This setting also applies to core backend HTTP data sources where query requests use an HTTP client with timeout set. 132 | ;timeout = 30 133 | 134 | # If enabled and user is not anonymous, data proxy will add X-Grafana-User header with username into the request, default is false. 135 | ;send_user_header = false 136 | 137 | #################################### Analytics #################################### 138 | [analytics] 139 | # Server reporting, sends usage counters to stats.grafana.org every 24 hours. 140 | # No ip addresses are being tracked, only simple counters to track 141 | # running instances, dashboard and error counts. It is very helpful to us. 142 | # Change this option to false to disable reporting. 143 | reporting_enabled = false 144 | 145 | # Set to false to disable all checks to https://grafana.net 146 | # for new versions (grafana itself and plugins), check is used 147 | # in some UI views to notify that grafana or plugin update exists 148 | # This option does not cause any auto updates, nor send any information 149 | # only a GET request to http://grafana.com to get latest versions 150 | ;check_for_updates = true 151 | 152 | # Google Analytics universal tracking code, only enabled if you specify an id here 153 | ;google_analytics_ua_id = 154 | 155 | # Google Tag Manager ID, only enabled if you specify an id here 156 | ;google_tag_manager_id = 157 | 158 | #################################### Security #################################### 159 | [security] 160 | # disable creation of admin user on first start of grafana 161 | ;disable_initial_admin_creation = false 162 | 163 | # default admin user, created on startup 164 | ;admin_user = admin 165 | 166 | # default admin password, can be changed before first start of grafana, or in profile settings 167 | admin_password = ${GRAFANA_PASSWORD} 168 | 169 | # used for signing 170 | ;secret_key = SW2YcwTIb9zpOOhoPsMm 171 | 172 | # disable gravatar profile images 173 | ;disable_gravatar = false 174 | 175 | # data source proxy whitelist (ip_or_domain:port separated by spaces) 176 | ;data_source_proxy_whitelist = 177 | 178 | # disable protection against brute force login attempts 179 | ;disable_brute_force_login_protection = false 180 | 181 | # set to true if you host Grafana behind HTTPS. default is false. 182 | ;cookie_secure = false 183 | 184 | # set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict", "none" and "disabled" 185 | ;cookie_samesite = lax 186 | 187 | # set to true if you want to allow browsers to render Grafana in a ,