├── README.md └── node-exporter-server-metrics ├── README.md ├── node-exporter-server-metrics.json └── node-exporter-test ├── README.md ├── docker-compose.yml ├── grafana-dashboards.yml ├── grafana-prometheus-datasource.yml ├── prometheus.yml └── run.sh /README.md: -------------------------------------------------------------------------------- 1 | Grafana dashboards. 2 | 3 | node-exporter-system-metrics, see: https://grafana.net/dashboards/405 4 | -------------------------------------------------------------------------------- /node-exporter-server-metrics/README.md: -------------------------------------------------------------------------------- 1 | Node exporter server metrics. 2 | 3 | https://grafana.com/dashboards/405. 4 | 5 | This a dashboard to give a quick overview of multiple servers. More than 6 will make the dashboard seem messy, but it will work. 6 | 7 | There is effort in trying to make the dashboard work for older versions of node exporter as well as newer. 8 | 9 | At the moment we're trying to maintain support for node exporter 0.13, which is the version available through Debian Jessie. Keep this in mind when creating Pull Requests. 10 | -------------------------------------------------------------------------------- /node-exporter-server-metrics/node-exporter-server-metrics.json: -------------------------------------------------------------------------------- 1 | { 2 | "__inputs": [ 3 | { 4 | "name": "DS_PROMETHEUS", 5 | "label": "Prometheus", 6 | "description": "", 7 | "type": "datasource", 8 | "pluginId": "prometheus", 9 | "pluginName": "Prometheus" 10 | } 11 | ], 12 | "__requires": [ 13 | { 14 | "type": "panel", 15 | "id": "graph", 16 | "name": "Graph", 17 | "version": "" 18 | }, 19 | { 20 | "type": "grafana", 21 | "id": "grafana", 22 | "name": "Grafana", 23 | "version": "3.1.0" 24 | }, 25 | { 26 | "type": "datasource", 27 | "id": "prometheus", 28 | "name": "Prometheus", 29 | "version": "1.0.0" 30 | } 31 | ], 32 | "id": null, 33 | "title": "Node Exporter Server Metrics", 34 | "description": "Dashboard to view multiple servers", 35 | "tags": [ 36 | "prometheus" 37 | ], 38 | "style": "dark", 39 | "timezone": "browser", 40 | "editable": true, 41 | "hideControls": false, 42 | "sharedCrosshair": false, 43 | "rows": [ 44 | { 45 | "collapse": false, 46 | "editable": true, 47 | "height": "25px", 48 | "panels": [ 49 | { 50 | "content": "", 51 | "editable": true, 52 | "error": false, 53 | "id": 11, 54 | "minSpan": 2, 55 | "mode": "html", 56 | "repeat": "node", 57 | "span": 12, 58 | "style": {}, 59 | "title": "$node", 60 | "type": "text" 61 | } 62 | ], 63 | "title": "Title" 64 | }, 65 | { 66 | "collapse": false, 67 | "editable": true, 68 | "height": "25px", 69 | "panels": [ 70 | { 71 | "cacheTimeout": null, 72 | "colorBackground": false, 73 | "colorValue": false, 74 | "colors": [ 75 | "rgba(245, 54, 54, 0.9)", 76 | "rgba(237, 129, 40, 0.89)", 77 | "rgba(50, 172, 45, 0.97)" 78 | ], 79 | "datasource": "${DS_PROMETHEUS}", 80 | "editable": true, 81 | "error": false, 82 | "format": "none", 83 | "gauge": { 84 | "maxValue": 100, 85 | "minValue": 0, 86 | "show": false, 87 | "thresholdLabels": false, 88 | "thresholdMarkers": true 89 | }, 90 | "id": 20, 91 | "interval": null, 92 | "links": [], 93 | "maxDataPoints": 100, 94 | "minSpan": 2, 95 | "nullPointMode": "connected", 96 | "nullText": null, 97 | "postfix": "", 98 | "postfixFontSize": "50%", 99 | "prefix": "", 100 | "prefixFontSize": "50%", 101 | "repeat": "node", 102 | "span": 12, 103 | "sparkline": { 104 | "fillColor": "rgba(31, 118, 189, 0.18)", 105 | "full": false, 106 | "lineColor": "rgb(31, 120, 193)", 107 | "show": false 108 | }, 109 | "targets": [ 110 | { 111 | "expr": "count(node_cpu_seconds_total{instance=~\"$node\", mode=\"system\"}) or count(node_cpu{instance=~\"$node\", mode=\"system\"})", 112 | "instant": true, 113 | "interval": "", 114 | "intervalFactor": 2, 115 | "legendFormat": "", 116 | "metric": "", 117 | "refId": "A", 118 | "step": 14400, 119 | "target": "" 120 | } 121 | ], 122 | "thresholds": "", 123 | "title": "CPU Cores", 124 | "type": "singlestat", 125 | "valueFontSize": "80%", 126 | "valueMaps": [ 127 | { 128 | "op": "=", 129 | "text": "N/A", 130 | "value": "null" 131 | } 132 | ], 133 | "valueName": "avg" 134 | } 135 | ], 136 | "title": "New row" 137 | }, 138 | { 139 | "collapse": false, 140 | "editable": true, 141 | "height": "250px", 142 | "panels": [ 143 | { 144 | "aliasColors": {}, 145 | "bars": false, 146 | "datasource": "${DS_PROMETHEUS}", 147 | "decimals": 3, 148 | "editable": true, 149 | "error": false, 150 | "fill": 10, 151 | "grid": { 152 | "threshold1": 0, 153 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 154 | "threshold2": null, 155 | "threshold2Color": "rgba(234, 112, 112, 0.22)", 156 | "thresholdLine": false 157 | }, 158 | "id": 7, 159 | "legend": { 160 | "alignAsTable": false, 161 | "avg": false, 162 | "current": false, 163 | "hideEmpty": false, 164 | "max": false, 165 | "min": false, 166 | "rightSide": false, 167 | "show": true, 168 | "total": false, 169 | "values": false 170 | }, 171 | "lines": true, 172 | "linewidth": 0, 173 | "links": [], 174 | "minSpan": 2, 175 | "nullPointMode": "connected", 176 | "percentage": true, 177 | "pointradius": 5, 178 | "points": false, 179 | "renderer": "flot", 180 | "repeat": "node", 181 | "seriesOverrides": [], 182 | "span": 12, 183 | "stack": true, 184 | "steppedLine": false, 185 | "targets": [ 186 | { 187 | "expr": "sum(irate(node_cpu_seconds_total{mode=\"system\",instance=~'$node'}[5m])) or sum(irate(node_cpu{mode=\"system\",instance=~'$node'}[5m]))", 188 | "interval": "", 189 | "intervalFactor": 2, 190 | "legendFormat": "system", 191 | "metric": "", 192 | "refId": "A", 193 | "step": 1200, 194 | "target": "" 195 | }, 196 | { 197 | "expr": "sum(irate(node_cpu_seconds_total{mode=\"user\",instance=~'$node'}[5m])) or sum(irate(node_cpu{mode=\"user\",instance=~'$node'}[5m]))", 198 | "interval": "", 199 | "intervalFactor": 2, 200 | "legendFormat": "user", 201 | "refId": "B", 202 | "step": 1200 203 | }, 204 | { 205 | "expr": "sum(irate(node_cpu_seconds_total{mode=\"nice\",instance=~'$node'}[5m])) or sum(irate(node_cpu{mode=\"nice\",instance=~'$node'}[5m]))", 206 | "interval": "", 207 | "intervalFactor": 2, 208 | "legendFormat": "nice", 209 | "refId": "C", 210 | "step": 1200 211 | }, 212 | { 213 | "expr": "sum(irate(node_cpu_seconds_total{mode=\"iowait\",instance=~'$node'}[5m])) or sum(irate(node_cpu{mode=\"iowait\",instance=~'$node'}[5m]))", 214 | "interval": "", 215 | "intervalFactor": 2, 216 | "legendFormat": "iowait", 217 | "refId": "E", 218 | "step": 1200 219 | }, 220 | { 221 | "expr": "sum(irate(node_cpu_seconds_total{mode=\"steal\",instance=~'$node'}[5m])) or sum(irate(node_cpu{mode=\"steal\",instance=~'$node'}[5m]))", 222 | "intervalFactor": 2, 223 | "legendFormat": "steal", 224 | "refId": "H", 225 | "step": 1200 226 | }, 227 | { 228 | "expr": "sum(irate(node_cpu_seconds_total{mode=\"idle\",instance=~'$node'}[5m])) or sum(irate(node_cpu{mode=\"idle\",instance=~'$node'}[5m]))", 229 | "interval": "", 230 | "intervalFactor": 2, 231 | "legendFormat": "idle", 232 | "refId": "D", 233 | "step": 1200 234 | }, 235 | { 236 | "expr": "sum(irate(node_cpu_seconds_total{mode=\"irq\",instance=~'$node'}[5m])) or sum(irate(node_cpu{mode=\"irq\",instance=~'$node'}[5m]))", 237 | "interval": "", 238 | "intervalFactor": 2, 239 | "legendFormat": "irq", 240 | "refId": "F", 241 | "step": 1200 242 | }, 243 | { 244 | "expr": "sum(irate(node_cpu_seconds_total{mode=\"softirq\",instance=~'$node'}[5m])) or sum(irate(node_cpu{mode=\"softirq\",instance=~'$node'}[5m]))", 245 | "interval": "", 246 | "intervalFactor": 2, 247 | "legendFormat": "softirq", 248 | "refId": "G", 249 | "step": 1200 250 | }, 251 | { 252 | "expr": "sum(irate(node_cpu_seconds_total{mode=\"guest\",instance=~'$node'}[5m])) or sum(irate(node_cpu{mode=\"guest\",instance=~'$node'}[5m]))", 253 | "interval": "", 254 | "intervalFactor": 2, 255 | "legendFormat": "guest", 256 | "refId": "I", 257 | "step": 1200 258 | } 259 | ], 260 | "timeFrom": null, 261 | "timeShift": null, 262 | "title": "CPU", 263 | "tooltip": { 264 | "msResolution": false, 265 | "shared": true, 266 | "value_type": "individual" 267 | }, 268 | "type": "graph", 269 | "xaxis": { 270 | "show": true 271 | }, 272 | "yaxes": [ 273 | { 274 | "format": "short", 275 | "label": "%", 276 | "logBase": 1, 277 | "max": 100, 278 | "min": 0, 279 | "show": true 280 | }, 281 | { 282 | "format": "short", 283 | "logBase": 1, 284 | "max": null, 285 | "min": null, 286 | "show": true 287 | } 288 | ] 289 | } 290 | ], 291 | "title": "CPU" 292 | }, 293 | { 294 | "collapse": false, 295 | "editable": true, 296 | "height": "250px", 297 | "panels": [ 298 | { 299 | "aliasColors": { 300 | "Slab": "#E5A8E2", 301 | "Swap": "#E24D42" 302 | }, 303 | "bars": false, 304 | "datasource": "${DS_PROMETHEUS}", 305 | "decimals": 2, 306 | "editable": true, 307 | "error": false, 308 | "fill": 1, 309 | "grid": { 310 | "threshold1": null, 311 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 312 | "threshold2": null, 313 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 314 | }, 315 | "id": 17, 316 | "legend": { 317 | "avg": false, 318 | "current": false, 319 | "max": false, 320 | "min": false, 321 | "show": true, 322 | "total": false, 323 | "values": false 324 | }, 325 | "lines": true, 326 | "linewidth": 2, 327 | "links": [], 328 | "minSpan": 2, 329 | "nullPointMode": "connected", 330 | "percentage": false, 331 | "pointradius": 5, 332 | "points": false, 333 | "renderer": "flot", 334 | "repeat": "node", 335 | "seriesOverrides": [ 336 | { 337 | "alias": "/Apps|Buffers|Cached|Free|Slab|SwapCached|PageTables|VmallocUsed/", 338 | "fill": 5, 339 | "stack": true 340 | }, 341 | { 342 | "alias": "Swap", 343 | "fill": 5, 344 | "stack": true 345 | } 346 | ], 347 | "span": 12, 348 | "stack": false, 349 | "steppedLine": false, 350 | "targets": [ 351 | { 352 | "expr": "( node_memory_MemTotal_bytes{instance=~'$node'} - node_memory_MemFree_bytes{instance=~'$node'} - node_memory_Buffers_bytes{instance=~'$node'} - node_memory_Cached_bytes{instance=~'$node'} - node_memory_SwapCached_bytes{instance=~'$node'} - node_memory_Slab_bytes{instance=~'$node'} - node_memory_PageTables_bytes{instance=~'$node'} - node_memory_VmallocUsed_bytes{instance=~'$node'} ) or ( node_memory_MemTotal{instance=~'$node'} - node_memory_MemFree{instance=~'$node'} - node_memory_Buffers{instance=~'$node'} - node_memory_Cached{instance=~'$node'} - node_memory_SwapCached{instance=~'$node'} - node_memory_Slab{instance=~'$node'} - node_memory_PageTables{instance=~'$node'} - node_memory_VmallocUsed{instance=~'$node'} )", 353 | "interval": "", 354 | "intervalFactor": 2, 355 | "legendFormat": "Apps", 356 | "metric": "", 357 | "refId": "A", 358 | "step": 1200, 359 | "target": "" 360 | }, 361 | { 362 | "expr": "node_memory_Buffers_bytes{instance=~'$node'} or node_memory_Buffers{instance=~'$node'}", 363 | "interval": "", 364 | "intervalFactor": 2, 365 | "legendFormat": "Buffers", 366 | "refId": "B", 367 | "step": 1200 368 | }, 369 | { 370 | "expr": "node_memory_Cached_bytes{instance=~'$node'} or node_memory_Cached{instance=~'$node'}", 371 | "interval": "", 372 | "intervalFactor": 2, 373 | "legendFormat": "Cached", 374 | "refId": "D", 375 | "step": 1200 376 | }, 377 | { 378 | "expr": "node_memory_MemFree_bytes{instance=~'$node'} or node_memory_MemFree{instance=~'$node'}", 379 | "hide": false, 380 | "interval": "", 381 | "intervalFactor": 2, 382 | "legendFormat": "Free", 383 | "refId": "E", 384 | "step": 1200 385 | }, 386 | { 387 | "expr": "node_memory_Slab_bytes{instance=~'$node'} or node_memory_Slab{instance=~'$node'}", 388 | "interval": "", 389 | "intervalFactor": 2, 390 | "legendFormat": "Slab", 391 | "refId": "F", 392 | "step": 1200 393 | }, 394 | { 395 | "expr": "node_memory_SwapCached_bytes{instance=~'$node'} or node_memory_SwapCached{instance=~'$node'}", 396 | "interval": "", 397 | "intervalFactor": 2, 398 | "legendFormat": "SwapCached", 399 | "refId": "G", 400 | "step": 1200 401 | }, 402 | { 403 | "expr": "node_memory_PageTables_bytes{instance=~'$node'} or node_memory_PageTables{instance=~'$node'}", 404 | "interval": "", 405 | "intervalFactor": 2, 406 | "legendFormat": "PageTables", 407 | "refId": "H", 408 | "step": 1200 409 | }, 410 | { 411 | "expr": "node_memory_VmallocUsed_bytes{instance=~'$node'} or node_memory_VmallocUsed{instance=~'$node'}", 412 | "interval": "", 413 | "intervalFactor": 2, 414 | "legendFormat": "VmallocUsed", 415 | "metric": "", 416 | "refId": "I", 417 | "step": 1200 418 | }, 419 | { 420 | "expr": "(node_memory_SwapTotal_bytes{instance=~'$node'} - node_memory_SwapFree{instance=~'$node'}) or (node_memory_SwapTotal{instance=~'$node'} - node_memory_SwapFree{instance=~'$node'})", 421 | "interval": "", 422 | "intervalFactor": 2, 423 | "legendFormat": "Swap", 424 | "metric": "", 425 | "refId": "C", 426 | "step": 1200 427 | }, 428 | { 429 | "expr": "node_memory_Committed_AS_bytes{instance=~'$node'} or node_memory_Committed_AS{instance=~'$node'}", 430 | "interval": "", 431 | "intervalFactor": 2, 432 | "legendFormat": "Committed", 433 | "metric": "", 434 | "refId": "J", 435 | "step": 1200 436 | }, 437 | { 438 | "expr": "node_memory_Mapped_bytes{instance=~'$node'} or node_memory_Mapped{instance=~'$node'}", 439 | "interval": "", 440 | "intervalFactor": 2, 441 | "legendFormat": "Mapped", 442 | "refId": "K", 443 | "step": 1200 444 | }, 445 | { 446 | "expr": "node_memory_Active_bytes{instance=~'$node'} or node_memory_Active{instance=~'$node'}", 447 | "interval": "", 448 | "intervalFactor": 2, 449 | "legendFormat": "Active", 450 | "metric": "", 451 | "refId": "L", 452 | "step": 1200 453 | }, 454 | { 455 | "expr": "node_memory_Inactive_bytes{instance=~'$node'} or node_memory_Inactive{instance=~'$node'}", 456 | "interval": "", 457 | "intervalFactor": 2, 458 | "legendFormat": "Inactive", 459 | "metric": "", 460 | "refId": "M", 461 | "step": 1200 462 | } 463 | ], 464 | "timeFrom": null, 465 | "timeShift": null, 466 | "title": "Memory", 467 | "tooltip": { 468 | "msResolution": false, 469 | "shared": true, 470 | "value_type": "individual" 471 | }, 472 | "type": "graph", 473 | "xaxis": { 474 | "show": true 475 | }, 476 | "yaxes": [ 477 | { 478 | "format": "bytes", 479 | "label": "GB", 480 | "logBase": 1, 481 | "max": null, 482 | "min": null, 483 | "show": true 484 | }, 485 | { 486 | "format": "short", 487 | "logBase": 1, 488 | "max": null, 489 | "min": null, 490 | "show": true 491 | } 492 | ] 493 | } 494 | ], 495 | "title": "Memory" 496 | }, 497 | { 498 | "collapse": false, 499 | "editable": true, 500 | "height": "250px", 501 | "panels": [ 502 | { 503 | "aliasColors": {}, 504 | "bars": false, 505 | "datasource": "${DS_PROMETHEUS}", 506 | "editable": true, 507 | "error": false, 508 | "fill": 1, 509 | "grid": { 510 | "threshold1": null, 511 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 512 | "threshold2": null, 513 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 514 | }, 515 | "id": 13, 516 | "legend": { 517 | "avg": false, 518 | "current": false, 519 | "max": false, 520 | "min": false, 521 | "show": true, 522 | "total": false, 523 | "values": false 524 | }, 525 | "lines": true, 526 | "linewidth": 2, 527 | "links": [], 528 | "minSpan": 2, 529 | "nullPointMode": "connected", 530 | "percentage": false, 531 | "pointradius": 5, 532 | "points": false, 533 | "renderer": "flot", 534 | "repeat": "node", 535 | "seriesOverrides": [], 536 | "span": 12, 537 | "stack": false, 538 | "steppedLine": false, 539 | "targets": [ 540 | { 541 | "expr": "node_load1{instance=~\"$node\"}", 542 | "interval": "", 543 | "intervalFactor": 2, 544 | "legendFormat": "load", 545 | "metric": "", 546 | "refId": "A", 547 | "step": 1200, 548 | "target": "" 549 | } 550 | ], 551 | "timeFrom": null, 552 | "timeShift": null, 553 | "title": "Load", 554 | "tooltip": { 555 | "msResolution": false, 556 | "shared": true, 557 | "value_type": "cumulative" 558 | }, 559 | "type": "graph", 560 | "xaxis": { 561 | "show": true 562 | }, 563 | "yaxes": [ 564 | { 565 | "format": "short", 566 | "logBase": 1, 567 | "max": null, 568 | "min": null, 569 | "show": true 570 | }, 571 | { 572 | "format": "short", 573 | "logBase": 1, 574 | "max": null, 575 | "min": null, 576 | "show": true 577 | } 578 | ] 579 | } 580 | ], 581 | "title": "Load" 582 | }, 583 | { 584 | "collapse": false, 585 | "editable": true, 586 | "height": "250px", 587 | "panels": [ 588 | { 589 | "aliasColors": {}, 590 | "bars": false, 591 | "datasource": "${DS_PROMETHEUS}", 592 | "decimals": 3, 593 | "editable": true, 594 | "error": false, 595 | "fill": 1, 596 | "grid": { 597 | "threshold1": null, 598 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 599 | "threshold2": null, 600 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 601 | }, 602 | "id": 9, 603 | "legend": { 604 | "avg": false, 605 | "current": false, 606 | "max": false, 607 | "min": false, 608 | "show": true, 609 | "total": false, 610 | "values": false 611 | }, 612 | "lines": true, 613 | "linewidth": 2, 614 | "links": [], 615 | "minSpan": 2, 616 | "nullPointMode": "connected", 617 | "percentage": false, 618 | "pointradius": 5, 619 | "points": false, 620 | "renderer": "flot", 621 | "repeat": "node", 622 | "seriesOverrides": [], 623 | "span": 12, 624 | "stack": false, 625 | "steppedLine": false, 626 | "targets": [ 627 | { 628 | "expr": "100.0 - 100 * (node_filesystem_avail_bytes{instance=~'$node',device !~'tmpfs',device!~'by-uuid'} / node_filesystem_size_bytes{instance=~'$node',device !~'tmpfs',device!~'by-uuid'}) or 100.0 - 100 * (node_filesystem_avail{instance=~'$node',device !~'tmpfs',device!~'by-uuid'} / node_filesystem_size{instance=~'$node',device !~'tmpfs',device!~'by-uuid'})", 629 | "interval": "", 630 | "intervalFactor": 2, 631 | "legendFormat": "{{mountpoint}}", 632 | "metric": "", 633 | "refId": "A", 634 | "step": 1200, 635 | "target": "" 636 | } 637 | ], 638 | "timeFrom": null, 639 | "timeShift": null, 640 | "title": "Disk Space Used", 641 | "tooltip": { 642 | "msResolution": true, 643 | "shared": true, 644 | "value_type": "cumulative" 645 | }, 646 | "type": "graph", 647 | "xaxis": { 648 | "show": true 649 | }, 650 | "yaxes": [ 651 | { 652 | "format": "percent", 653 | "logBase": 1, 654 | "max": 100, 655 | "min": 0, 656 | "show": true 657 | }, 658 | { 659 | "format": "short", 660 | "logBase": 1, 661 | "max": null, 662 | "min": null, 663 | "show": true 664 | } 665 | ] 666 | } 667 | ], 668 | "title": "Disk Used" 669 | }, 670 | { 671 | "collapse": false, 672 | "editable": true, 673 | "height": "250px", 674 | "panels": [ 675 | { 676 | "aliasColors": {}, 677 | "bars": false, 678 | "datasource": "${DS_PROMETHEUS}", 679 | "editable": true, 680 | "error": false, 681 | "fill": 1, 682 | "grid": { 683 | "threshold1": null, 684 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 685 | "threshold2": null, 686 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 687 | }, 688 | "id": 19, 689 | "legend": { 690 | "avg": false, 691 | "current": false, 692 | "max": false, 693 | "min": false, 694 | "show": true, 695 | "total": false, 696 | "values": false 697 | }, 698 | "lines": true, 699 | "linewidth": 2, 700 | "links": [], 701 | "minSpan": 2, 702 | "nullPointMode": "connected", 703 | "percentage": false, 704 | "pointradius": 5, 705 | "points": false, 706 | "renderer": "flot", 707 | "repeat": "node", 708 | "seriesOverrides": [], 709 | "span": 12, 710 | "stack": false, 711 | "steppedLine": false, 712 | "targets": [ 713 | { 714 | "expr": "irate(node_disk_io_time_seconds_total{instance=~\"$node\"}[5m])*100 or irate(node_disk_io_time_ms{instance=~\"$node\"}[5m])/10", 715 | "interval": "", 716 | "intervalFactor": 2, 717 | "legendFormat": "{{device}}", 718 | "metric": "", 719 | "refId": "A", 720 | "step": 1200, 721 | "target": "" 722 | } 723 | ], 724 | "timeFrom": null, 725 | "timeShift": null, 726 | "title": "Disk Utilization per Device", 727 | "tooltip": { 728 | "msResolution": false, 729 | "shared": false, 730 | "value_type": "cumulative" 731 | }, 732 | "type": "graph", 733 | "xaxis": { 734 | "show": true 735 | }, 736 | "yaxes": [ 737 | { 738 | "format": "percent", 739 | "logBase": 1, 740 | "max": 100, 741 | "min": null, 742 | "show": true 743 | }, 744 | { 745 | "format": "short", 746 | "logBase": 1, 747 | "max": null, 748 | "min": null, 749 | "show": true 750 | } 751 | ] 752 | } 753 | ], 754 | "title": "Disk Utilization" 755 | }, 756 | { 757 | "collapse": false, 758 | "editable": true, 759 | "height": "250px", 760 | "panels": [ 761 | { 762 | "aliasColors": {}, 763 | "bars": false, 764 | "datasource": "${DS_PROMETHEUS}", 765 | "editable": true, 766 | "error": false, 767 | "fill": 1, 768 | "grid": { 769 | "threshold1": null, 770 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 771 | "threshold2": null, 772 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 773 | }, 774 | "id": 14, 775 | "legend": { 776 | "avg": false, 777 | "current": false, 778 | "max": false, 779 | "min": false, 780 | "show": true, 781 | "total": false, 782 | "values": false 783 | }, 784 | "lines": true, 785 | "linewidth": 2, 786 | "links": [], 787 | "minSpan": 2, 788 | "nullPointMode": "connected", 789 | "percentage": false, 790 | "pointradius": 5, 791 | "points": false, 792 | "renderer": "flot", 793 | "repeat": "node", 794 | "seriesOverrides": [ 795 | { 796 | "alias": "/.*_read$/", 797 | "transform": "negative-Y" 798 | } 799 | ], 800 | "span": 12, 801 | "stack": false, 802 | "steppedLine": false, 803 | "targets": [ 804 | { 805 | "expr": "irate(node_disk_reads_completed_total{instance=~'$node'}[5m]) or irate(node_disk_reads_completed{instance=~'$node'}[5m])", 806 | "interval": "", 807 | "intervalFactor": 4, 808 | "legendFormat": "{{device}}_read", 809 | "metric": "", 810 | "refId": "A", 811 | "step": 2400, 812 | "target": "" 813 | }, 814 | { 815 | "expr": "irate(node_disk_writes_completed_total{instance=~'$node'}[5m]) or irate(node_disk_writes_completed{instance=~'$node'}[5m])", 816 | "intervalFactor": 2, 817 | "legendFormat": "{{device}}_write", 818 | "metric": "", 819 | "refId": "B", 820 | "step": 1200 821 | } 822 | ], 823 | "timeFrom": null, 824 | "timeShift": null, 825 | "title": "Disk IOs per Device", 826 | "tooltip": { 827 | "msResolution": false, 828 | "shared": false, 829 | "value_type": "cumulative" 830 | }, 831 | "type": "graph", 832 | "xaxis": { 833 | "show": true 834 | }, 835 | "yaxes": [ 836 | { 837 | "format": "short", 838 | "label": "IO/second read (-) / write (+)", 839 | "logBase": 1, 840 | "max": null, 841 | "min": null, 842 | "show": true 843 | }, 844 | { 845 | "format": "short", 846 | "logBase": 1, 847 | "max": null, 848 | "min": null, 849 | "show": true 850 | } 851 | ] 852 | } 853 | ], 854 | "title": "Disk IOs per device" 855 | }, 856 | { 857 | "collapse": false, 858 | "editable": true, 859 | "height": "250px", 860 | "panels": [ 861 | { 862 | "aliasColors": {}, 863 | "bars": false, 864 | "datasource": "${DS_PROMETHEUS}", 865 | "editable": true, 866 | "error": false, 867 | "fill": 1, 868 | "grid": { 869 | "threshold1": null, 870 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 871 | "threshold2": null, 872 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 873 | }, 874 | "id": 18, 875 | "legend": { 876 | "avg": false, 877 | "current": false, 878 | "max": false, 879 | "min": false, 880 | "show": true, 881 | "total": false, 882 | "values": false 883 | }, 884 | "lines": true, 885 | "linewidth": 2, 886 | "links": [], 887 | "minSpan": 2, 888 | "nullPointMode": "connected", 889 | "percentage": false, 890 | "pointradius": 5, 891 | "points": false, 892 | "renderer": "flot", 893 | "repeat": "node", 894 | "seriesOverrides": [ 895 | { 896 | "alias": "/.*_read/", 897 | "transform": "negative-Y" 898 | } 899 | ], 900 | "span": 12, 901 | "stack": false, 902 | "steppedLine": false, 903 | "targets": [ 904 | { 905 | "expr": "irate(node_disk_read_bytes_total{instance=~'$node'}[5m]) or irate(node_disk_sectors_read{instance=~'$node'}[5m]) * 512", 906 | "interval": "", 907 | "intervalFactor": 4, 908 | "legendFormat": "{{device}}_read", 909 | "refId": "B", 910 | "step": 2400 911 | }, 912 | { 913 | "expr": "irate(node_disk_written_bytes_total{instance=~'$node'}[5m]) or irate(node_disk_sectors_written{instance=~'$node'}[5m]) * 512", 914 | "interval": "", 915 | "intervalFactor": 4, 916 | "legendFormat": "{{device}}_write", 917 | "metric": "", 918 | "refId": "A", 919 | "step": 2400, 920 | "target": "" 921 | } 922 | ], 923 | "timeFrom": null, 924 | "timeShift": null, 925 | "title": "Disk Throughput per Device", 926 | "tooltip": { 927 | "msResolution": false, 928 | "shared": false, 929 | "value_type": "cumulative" 930 | }, 931 | "type": "graph", 932 | "xaxis": { 933 | "show": true 934 | }, 935 | "yaxes": [ 936 | { 937 | "format": "bytes", 938 | "label": "Bytes/second read (-) / write (+)", 939 | "logBase": 1, 940 | "max": null, 941 | "min": null, 942 | "show": true 943 | }, 944 | { 945 | "format": "short", 946 | "logBase": 1, 947 | "max": null, 948 | "min": null, 949 | "show": true 950 | } 951 | ] 952 | } 953 | ], 954 | "title": "Disk Throughput per device" 955 | }, 956 | { 957 | "collapse": false, 958 | "editable": true, 959 | "height": "250px", 960 | "panels": [ 961 | { 962 | "aliasColors": {}, 963 | "bars": false, 964 | "datasource": "${DS_PROMETHEUS}", 965 | "editable": true, 966 | "error": false, 967 | "fill": 1, 968 | "grid": { 969 | "threshold1": null, 970 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 971 | "threshold2": null, 972 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 973 | }, 974 | "id": 25, 975 | "legend": { 976 | "avg": false, 977 | "current": false, 978 | "max": false, 979 | "min": false, 980 | "show": true, 981 | "total": false, 982 | "values": false 983 | }, 984 | "lines": true, 985 | "linewidth": 2, 986 | "links": [], 987 | "minSpan": 2, 988 | "nullPointMode": "connected", 989 | "percentage": false, 990 | "pointradius": 5, 991 | "points": false, 992 | "renderer": "flot", 993 | "repeat": "node", 994 | "seriesOverrides": [], 995 | "span": 12, 996 | "stack": false, 997 | "steppedLine": false, 998 | "targets": [ 999 | { 1000 | "expr": "node_disk_io_now{instance=~\"$node\"}", 1001 | "interval": "", 1002 | "intervalFactor": 1, 1003 | "legendFormat": "{{device}}", 1004 | "metric": "", 1005 | "refId": "A", 1006 | "step": 1200, 1007 | "target": "" 1008 | } 1009 | ], 1010 | "timeFrom": null, 1011 | "timeShift": null, 1012 | "title": "Disk Queue Length", 1013 | "tooltip": { 1014 | "msResolution": false, 1015 | "shared": true, 1016 | "value_type": "cumulative" 1017 | }, 1018 | "type": "graph", 1019 | "xaxis": { 1020 | "show": true 1021 | }, 1022 | "yaxes": [ 1023 | { 1024 | "format": "short", 1025 | "logBase": 1, 1026 | "max": null, 1027 | "min": 0, 1028 | "show": true 1029 | }, 1030 | { 1031 | "format": "short", 1032 | "logBase": 1, 1033 | "max": null, 1034 | "min": null, 1035 | "show": true 1036 | } 1037 | ] 1038 | } 1039 | ], 1040 | "title": "Disk Queue Length" 1041 | }, 1042 | { 1043 | "collapse": false, 1044 | "editable": true, 1045 | "height": "250px", 1046 | "panels": [ 1047 | { 1048 | "aliasColors": {}, 1049 | "bars": false, 1050 | "datasource": "${DS_PROMETHEUS}", 1051 | "editable": true, 1052 | "error": false, 1053 | "fill": 1, 1054 | "grid": { 1055 | "threshold1": null, 1056 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 1057 | "threshold2": null, 1058 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 1059 | }, 1060 | "id": 22, 1061 | "legend": { 1062 | "avg": false, 1063 | "current": false, 1064 | "max": false, 1065 | "min": false, 1066 | "show": true, 1067 | "total": false, 1068 | "values": false 1069 | }, 1070 | "lines": true, 1071 | "linewidth": 2, 1072 | "links": [], 1073 | "minSpan": 2, 1074 | "nullPointMode": "connected", 1075 | "percentage": false, 1076 | "pointradius": 5, 1077 | "points": false, 1078 | "renderer": "flot", 1079 | "repeat": "node", 1080 | "seriesOverrides": [], 1081 | "span": 12, 1082 | "stack": false, 1083 | "steppedLine": false, 1084 | "targets": [ 1085 | { 1086 | "expr": "irate(node_context_switches_total{instance=~\"$node\"}[5m]) or irate(node_context_switches{instance=~\"$node\"}[5m])", 1087 | "interval": "", 1088 | "intervalFactor": 2, 1089 | "legendFormat": "context switches", 1090 | "metric": "", 1091 | "refId": "A", 1092 | "step": 1200, 1093 | "target": "" 1094 | } 1095 | ], 1096 | "timeFrom": null, 1097 | "timeShift": null, 1098 | "title": "Context Switches", 1099 | "tooltip": { 1100 | "msResolution": false, 1101 | "shared": true, 1102 | "value_type": "cumulative" 1103 | }, 1104 | "type": "graph", 1105 | "xaxis": { 1106 | "show": true 1107 | }, 1108 | "yaxes": [ 1109 | { 1110 | "format": "short", 1111 | "logBase": 1, 1112 | "max": null, 1113 | "min": null, 1114 | "show": true 1115 | }, 1116 | { 1117 | "format": "short", 1118 | "logBase": 1, 1119 | "max": null, 1120 | "min": null, 1121 | "show": true 1122 | } 1123 | ] 1124 | } 1125 | ], 1126 | "title": "Network Traffic" 1127 | }, 1128 | { 1129 | "collapse": false, 1130 | "editable": true, 1131 | "height": "250px", 1132 | "panels": [ 1133 | { 1134 | "aliasColors": {}, 1135 | "bars": false, 1136 | "datasource": "${DS_PROMETHEUS}", 1137 | "editable": true, 1138 | "error": false, 1139 | "fill": 1, 1140 | "grid": { 1141 | "threshold1": null, 1142 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 1143 | "threshold2": null, 1144 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 1145 | }, 1146 | "id": 12, 1147 | "legend": { 1148 | "avg": false, 1149 | "current": false, 1150 | "max": false, 1151 | "min": false, 1152 | "show": true, 1153 | "total": false, 1154 | "values": false 1155 | }, 1156 | "lines": true, 1157 | "linewidth": 2, 1158 | "links": [], 1159 | "minSpan": 2, 1160 | "nullPointMode": "connected", 1161 | "percentage": false, 1162 | "pointradius": 5, 1163 | "points": false, 1164 | "renderer": "flot", 1165 | "repeat": "node", 1166 | "seriesOverrides": [ 1167 | { 1168 | "alias": "/.*_in/", 1169 | "transform": "negative-Y" 1170 | } 1171 | ], 1172 | "span": 12, 1173 | "stack": false, 1174 | "steppedLine": false, 1175 | "targets": [ 1176 | { 1177 | "expr": "irate(node_network_receive_bytes_total{instance=~'$node'}[5m])*8 or irate(node_network_receive_bytes{instance=~'$node'}[5m])*8", 1178 | "interval": "", 1179 | "intervalFactor": 2, 1180 | "legendFormat": "{{device}}_in", 1181 | "metric": "", 1182 | "refId": "A", 1183 | "step": 1200, 1184 | "target": "" 1185 | }, 1186 | { 1187 | "expr": "irate(node_network_transmit_bytes_total{instance=~'$node'}[5m])*8 or irate(node_network_transmit_bytes{instance=~'$node'}[5m])*8", 1188 | "interval": "", 1189 | "intervalFactor": 2, 1190 | "legendFormat": "{{device}}_out", 1191 | "refId": "B", 1192 | "step": 1200 1193 | } 1194 | ], 1195 | "timeFrom": null, 1196 | "timeShift": null, 1197 | "title": "Network Traffic", 1198 | "tooltip": { 1199 | "msResolution": false, 1200 | "shared": true, 1201 | "value_type": "cumulative" 1202 | }, 1203 | "type": "graph", 1204 | "xaxis": { 1205 | "show": true 1206 | }, 1207 | "yaxes": [ 1208 | { 1209 | "format": "bits", 1210 | "label": "bits in (-) / bits out (+)", 1211 | "logBase": 1, 1212 | "max": null, 1213 | "min": null, 1214 | "show": true 1215 | }, 1216 | { 1217 | "format": "short", 1218 | "logBase": 1, 1219 | "max": null, 1220 | "min": null, 1221 | "show": true 1222 | } 1223 | ] 1224 | } 1225 | ], 1226 | "repeat": null, 1227 | "title": "New row" 1228 | }, 1229 | { 1230 | "collapse": false, 1231 | "editable": true, 1232 | "height": "250px", 1233 | "panels": [ 1234 | { 1235 | "aliasColors": {}, 1236 | "bars": false, 1237 | "datasource": "${DS_PROMETHEUS}", 1238 | "editable": true, 1239 | "error": false, 1240 | "fill": 1, 1241 | "grid": { 1242 | "threshold1": null, 1243 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 1244 | "threshold2": null, 1245 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 1246 | }, 1247 | "id": 21, 1248 | "legend": { 1249 | "avg": false, 1250 | "current": false, 1251 | "max": false, 1252 | "min": false, 1253 | "show": true, 1254 | "total": false, 1255 | "values": false 1256 | }, 1257 | "lines": true, 1258 | "linewidth": 2, 1259 | "links": [], 1260 | "minSpan": 2, 1261 | "nullPointMode": "connected", 1262 | "percentage": false, 1263 | "pointradius": 5, 1264 | "points": false, 1265 | "renderer": "flot", 1266 | "repeat": "node", 1267 | "seriesOverrides": [], 1268 | "span": 12, 1269 | "stack": false, 1270 | "steppedLine": false, 1271 | "targets": [ 1272 | { 1273 | "expr": "node_netstat_Tcp_CurrEstab{instance=~'$node'}", 1274 | "intervalFactor": 2, 1275 | "legendFormat": "established", 1276 | "refId": "A", 1277 | "step": 1200, 1278 | "target": "" 1279 | } 1280 | ], 1281 | "timeFrom": null, 1282 | "timeShift": null, 1283 | "title": "Netstat", 1284 | "tooltip": { 1285 | "msResolution": false, 1286 | "shared": true, 1287 | "value_type": "cumulative" 1288 | }, 1289 | "type": "graph", 1290 | "xaxis": { 1291 | "show": true 1292 | }, 1293 | "yaxes": [ 1294 | { 1295 | "format": "short", 1296 | "logBase": 1, 1297 | "max": null, 1298 | "min": null, 1299 | "show": true 1300 | }, 1301 | { 1302 | "format": "short", 1303 | "logBase": 1, 1304 | "max": null, 1305 | "min": null, 1306 | "show": true 1307 | } 1308 | ] 1309 | } 1310 | ], 1311 | "title": "New row" 1312 | }, 1313 | { 1314 | "collapse": false, 1315 | "editable": true, 1316 | "height": "250px", 1317 | "panels": [ 1318 | { 1319 | "aliasColors": {}, 1320 | "bars": false, 1321 | "datasource": "${DS_PROMETHEUS}", 1322 | "editable": true, 1323 | "error": false, 1324 | "fill": 1, 1325 | "grid": { 1326 | "threshold1": null, 1327 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 1328 | "threshold2": null, 1329 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 1330 | }, 1331 | "id": 23, 1332 | "legend": { 1333 | "avg": false, 1334 | "current": false, 1335 | "max": false, 1336 | "min": false, 1337 | "show": true, 1338 | "total": false, 1339 | "values": false 1340 | }, 1341 | "lines": true, 1342 | "linewidth": 2, 1343 | "links": [], 1344 | "minSpan": 2, 1345 | "nullPointMode": "connected", 1346 | "percentage": false, 1347 | "pointradius": 5, 1348 | "points": false, 1349 | "renderer": "flot", 1350 | "repeat": "node", 1351 | "seriesOverrides": [ 1352 | { 1353 | "alias": "/.*Out.*/", 1354 | "transform": "negative-Y" 1355 | }, 1356 | { 1357 | "alias": "Udp_NoPorts", 1358 | "yaxis": 2 1359 | } 1360 | ], 1361 | "span": 12, 1362 | "stack": false, 1363 | "steppedLine": false, 1364 | "targets": [ 1365 | { 1366 | "expr": "irate(node_netstat_Udp_InDatagrams{instance=~\"$node\"}[5m])", 1367 | "intervalFactor": 2, 1368 | "legendFormat": "Udp_InDatagrams", 1369 | "refId": "A", 1370 | "step": 1200, 1371 | "target": "" 1372 | }, 1373 | { 1374 | "expr": "irate(node_netstat_Udp_InErrors{instance=~\"$node\"}[5m])", 1375 | "intervalFactor": 2, 1376 | "legendFormat": "Udp_InErrors", 1377 | "refId": "B", 1378 | "step": 1200 1379 | }, 1380 | { 1381 | "expr": "irate(node_netstat_Udp_OutDatagrams{instance=~\"$node\"}[5m])", 1382 | "interval": "", 1383 | "intervalFactor": 2, 1384 | "legendFormat": "Udp_OutDatagrams", 1385 | "refId": "C", 1386 | "step": 1200 1387 | }, 1388 | { 1389 | "expr": "irate(node_netstat_Udp_NoPorts{instance=~\"$node\"}[5m])", 1390 | "intervalFactor": 2, 1391 | "legendFormat": "Udp_NoPorts", 1392 | "refId": "D", 1393 | "step": 1200 1394 | } 1395 | ], 1396 | "timeFrom": null, 1397 | "timeShift": null, 1398 | "title": "UDP Stats", 1399 | "tooltip": { 1400 | "msResolution": false, 1401 | "shared": true, 1402 | "value_type": "cumulative" 1403 | }, 1404 | "type": "graph", 1405 | "xaxis": { 1406 | "show": true 1407 | }, 1408 | "yaxes": [ 1409 | { 1410 | "format": "short", 1411 | "logBase": 1, 1412 | "max": null, 1413 | "min": null, 1414 | "show": true 1415 | }, 1416 | { 1417 | "format": "short", 1418 | "logBase": 1, 1419 | "max": null, 1420 | "min": null, 1421 | "show": true 1422 | } 1423 | ] 1424 | } 1425 | ], 1426 | "title": "New row" 1427 | }, 1428 | { 1429 | "collapse": false, 1430 | "editable": true, 1431 | "height": "250px", 1432 | "panels": [ 1433 | { 1434 | "aliasColors": {}, 1435 | "bars": false, 1436 | "datasource": "${DS_PROMETHEUS}", 1437 | "editable": true, 1438 | "error": false, 1439 | "fill": 1, 1440 | "grid": { 1441 | "threshold1": null, 1442 | "threshold1Color": "rgba(216, 200, 27, 0.27)", 1443 | "threshold2": null, 1444 | "threshold2Color": "rgba(234, 112, 112, 0.22)" 1445 | }, 1446 | "id": 24, 1447 | "legend": { 1448 | "avg": false, 1449 | "current": false, 1450 | "max": false, 1451 | "min": false, 1452 | "show": true, 1453 | "total": false, 1454 | "values": false 1455 | }, 1456 | "lines": true, 1457 | "linewidth": 2, 1458 | "links": [], 1459 | "minSpan": 2, 1460 | "nullPointMode": "connected", 1461 | "percentage": false, 1462 | "pointradius": 5, 1463 | "points": false, 1464 | "renderer": "flot", 1465 | "repeat": "node", 1466 | "seriesOverrides": [], 1467 | "span": 12, 1468 | "stack": false, 1469 | "steppedLine": false, 1470 | "targets": [ 1471 | { 1472 | "expr": "node_nf_conntrack_entries_limit{instance=~\"$node\"} - node_nf_conntrack_entries{instance=~\"$node\"}", 1473 | "intervalFactor": 2, 1474 | "legendFormat": "free", 1475 | "refId": "A", 1476 | "step": 1200, 1477 | "target": "" 1478 | } 1479 | ], 1480 | "timeFrom": null, 1481 | "timeShift": null, 1482 | "title": "Conntrack", 1483 | "tooltip": { 1484 | "msResolution": false, 1485 | "shared": true, 1486 | "value_type": "cumulative" 1487 | }, 1488 | "type": "graph", 1489 | "xaxis": { 1490 | "show": true 1491 | }, 1492 | "yaxes": [ 1493 | { 1494 | "format": "short", 1495 | "logBase": 1, 1496 | "max": null, 1497 | "min": null, 1498 | "show": true 1499 | }, 1500 | { 1501 | "format": "short", 1502 | "logBase": 1, 1503 | "max": null, 1504 | "min": null, 1505 | "show": true 1506 | } 1507 | ] 1508 | } 1509 | ], 1510 | "repeat": null, 1511 | "title": "New row" 1512 | } 1513 | ], 1514 | "time": { 1515 | "from": "now-7d", 1516 | "to": "now" 1517 | }, 1518 | "timepicker": { 1519 | "now": true, 1520 | "refresh_intervals": [ 1521 | "5s", 1522 | "10s", 1523 | "30s", 1524 | "1m", 1525 | "5m", 1526 | "15m", 1527 | "30m", 1528 | "1h", 1529 | "2h", 1530 | "1d" 1531 | ], 1532 | "time_options": [ 1533 | "5m", 1534 | "15m", 1535 | "1h", 1536 | "6h", 1537 | "12h", 1538 | "24h", 1539 | "2d", 1540 | "7d", 1541 | "30d" 1542 | ] 1543 | }, 1544 | "templating": { 1545 | "list": [ 1546 | { 1547 | "allFormat": "glob", 1548 | "current": { 1549 | "tags": [], 1550 | "text": null, 1551 | "value": [] 1552 | }, 1553 | "datasource": "${DS_PROMETHEUS}", 1554 | "hide": 0, 1555 | "includeAll": false, 1556 | "label": "", 1557 | "multi": true, 1558 | "multiFormat": "regex values", 1559 | "name": "node", 1560 | "query": "label_values(node_exporter_build_info, instance)", 1561 | "refresh": 1, 1562 | "sort": 1, 1563 | "type": "query", 1564 | "options": [] 1565 | } 1566 | ] 1567 | }, 1568 | "annotations": { 1569 | "list": [] 1570 | }, 1571 | "schemaVersion": 12, 1572 | "version": 30, 1573 | "links": [], 1574 | "gnetId": 405 1575 | } 1576 | -------------------------------------------------------------------------------- /node-exporter-server-metrics/node-exporter-test/README.md: -------------------------------------------------------------------------------- 1 | A docker-compose configuration for testing dashboard on several versions of 2 | node_exporter at once. Run run.sh script and in a couple of minutes You will 3 | get prometheus, several versions of node_exporter and grafana with dashboard 4 | imported on http://localhost:3000/. Needs docker and docker-compose. 5 | -------------------------------------------------------------------------------- /node-exporter-server-metrics/node-exporter-test/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | prometheus: 4 | image: prom/prometheus 5 | volumes: 6 | - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro 7 | ports: 8 | - "9090:9090" 9 | grafana: 10 | image: grafana/grafana 11 | ports: 12 | - "3000:3000" 13 | volumes: 14 | - ./grafana-prometheus-datasource.yml:/etc/grafana/provisioning/datasources/prometheus-datasource.yml:ro 15 | - ./grafana-dashboards.yml:/etc/grafana/provisioning/dashboards/dashboards.yml:ro 16 | - /tmp/node-exporter-server-metrics-raw.json:/var/lib/grafana/dashboards/node-exporter-server-metrics-raw.json:ro 17 | node_exporter-v013: 18 | image: prom/node-exporter:v0.13.0 19 | ports: 20 | - "9101:9100" 21 | node_exporter-v016: 22 | image: prom/node-exporter:v0.16.0 23 | ports: 24 | - "9102:9100" 25 | node_exporter-master: 26 | image: prom/node-exporter:master 27 | ports: 28 | - "9103:9100" 29 | -------------------------------------------------------------------------------- /node-exporter-server-metrics/node-exporter-test/grafana-dashboards.yml: -------------------------------------------------------------------------------- 1 | apiVersion: 1 2 | 3 | providers: 4 | - name: general 5 | orgId: 1 6 | type: file 7 | disableDeletion: true 8 | editable: false 9 | options: 10 | path: /var/lib/grafana/dashboards 11 | -------------------------------------------------------------------------------- /node-exporter-server-metrics/node-exporter-test/grafana-prometheus-datasource.yml: -------------------------------------------------------------------------------- 1 | apiVersion: 1 2 | 3 | datasources: 4 | - name: Prometheus 5 | type: prometheus 6 | access: proxy 7 | url: http://prometheus:9090 8 | -------------------------------------------------------------------------------- /node-exporter-server-metrics/node-exporter-test/prometheus.yml: -------------------------------------------------------------------------------- 1 | global: 2 | scrape_interval: 1s 3 | evaluation_interval: 1s 4 | 5 | scrape_configs: 6 | - job_name: node_exporter 7 | static_configs: 8 | - targets: 9 | - "node_exporter-v013:9100" 10 | - "node_exporter-v016:9100" 11 | - "node_exporter-master:9100" 12 | -------------------------------------------------------------------------------- /node-exporter-server-metrics/node-exporter-test/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | cd $(dirname "$0") 4 | # Cleanup on exit by ^C 5 | trap 'docker-compose down -v --remove-orphans' INT 6 | 7 | # Auto-provisioned dashboards need to use raw datasource name, ref: 8 | # https://github.com/grafana/grafana/issues/10786 9 | sed 's/\${DS_PROMETHEUS}/Prometheus/g' <../node-exporter-server-metrics.json \ 10 | >/tmp/node-exporter-server-metrics-raw.json 11 | docker-compose up 12 | --------------------------------------------------------------------------------