From 82422760e1eb09f0220c05df53d65362721dd2cf Mon Sep 17 00:00:00 2001 From: Kjeld Schouten Date: Fri, 1 Mar 2024 15:03:32 +0100 Subject: [PATCH] feat: Add Truenas-exporter (#18733) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Description** **โš™๏ธ Type of change** - [x] โš™๏ธ Feature/App addition - [ ] ๐Ÿช› Bugfix - [ ] โš ๏ธ Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] ๐Ÿ”ƒ Refactor of current code **๐Ÿงช How Has This Been Tested?** **๐Ÿ“ƒ Notes:** **โœ”๏ธ Checklist:** - [ ] โš–๏ธ My code follows the style guidelines of this project - [ ] ๐Ÿ‘€ I have performed a self-review of my own code - [ ] #๏ธโƒฃ I have commented my code, particularly in hard-to-understand areas - [ ] ๐Ÿ“„ I have made corresponding changes to the documentation - [ ] โš ๏ธ My changes generate no new warnings - [ ] ๐Ÿงช I have added tests to this description that prove my fix is effective or that my feature works - [ ] โฌ†๏ธ I increased versions for any altered app according to semantic versioning **โž• App addition** If this PR is an app addition please make sure you have done the following. - [ ] ๐Ÿ–ผ๏ธ I have added an icon in the Chart's root directory called `icon.png` --- _Please don't blindly check all the boxes. Read them and only check those that apply. Those checkboxes are there for the reviewer to see what is this all about and the status of this PR with a quick glance._ --- charts/incubator/truenas-exporter/.helmignore | 30 + .../incubator/truenas-exporter/CHANGELOG.md | 3 + charts/incubator/truenas-exporter/Chart.yaml | 35 + charts/incubator/truenas-exporter/README.md | 28 + .../incubator/truenas-exporter/dashboard.json | 5482 +++++++++++++++++ .../incubator/truenas-exporter/docs/setup.md | 9 + charts/incubator/truenas-exporter/icon.png | Bin 0 -> 42997 bytes .../incubator/truenas-exporter/questions.yaml | 75 + .../truenas-exporter/templates/NOTES.txt | 1 + .../truenas-exporter/templates/common.yaml | 1 + charts/incubator/truenas-exporter/values.yaml | 491 ++ 11 files changed, 6155 insertions(+) create mode 100644 charts/incubator/truenas-exporter/.helmignore create mode 100644 charts/incubator/truenas-exporter/CHANGELOG.md create mode 100644 charts/incubator/truenas-exporter/Chart.yaml create mode 100644 charts/incubator/truenas-exporter/README.md create mode 100644 charts/incubator/truenas-exporter/dashboard.json create mode 100644 charts/incubator/truenas-exporter/docs/setup.md create mode 100644 charts/incubator/truenas-exporter/icon.png create mode 100644 charts/incubator/truenas-exporter/questions.yaml create mode 100644 charts/incubator/truenas-exporter/templates/NOTES.txt create mode 100644 charts/incubator/truenas-exporter/templates/common.yaml create mode 100644 charts/incubator/truenas-exporter/values.yaml diff --git a/charts/incubator/truenas-exporter/.helmignore b/charts/incubator/truenas-exporter/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/charts/incubator/truenas-exporter/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/charts/incubator/truenas-exporter/CHANGELOG.md b/charts/incubator/truenas-exporter/CHANGELOG.md new file mode 100644 index 00000000000..6afbcc5f802 --- /dev/null +++ b/charts/incubator/truenas-exporter/CHANGELOG.md @@ -0,0 +1,3 @@ +--- +title: Changelog +--- diff --git a/charts/incubator/truenas-exporter/Chart.yaml b/charts/incubator/truenas-exporter/Chart.yaml new file mode 100644 index 00000000000..8877f0e5639 --- /dev/null +++ b/charts/incubator/truenas-exporter/Chart.yaml @@ -0,0 +1,35 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: system + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.11" + truecharts.org/train: incubator +apiVersion: v2 +appVersion: 18.0.1 +dependencies: + - name: common + version: 17.5.1 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: A metrics exporter for TrueNAS +home: https://truecharts.org/charts/incubator/truenas-exporter +icon: https://truecharts.org/img/hotlink-ok/chart-icons/truenas-exporter.png +keywords: + - truenas-exporter + - metrics +kubeVersion: ">=1.24.0-0" +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: truenas-exporter +sources: + - https://github.com/Supporterino/truenas-graphite-to-prometheus/tree/main +type: application +version: 0.0.1 diff --git a/charts/incubator/truenas-exporter/README.md b/charts/incubator/truenas-exporter/README.md new file mode 100644 index 00000000000..0fc4dfd1da0 --- /dev/null +++ b/charts/incubator/truenas-exporter/README.md @@ -0,0 +1,28 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/incubator/atuin) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/charts/incubator/truenas-exporter/dashboard.json b/charts/incubator/truenas-exporter/dashboard.json new file mode 100644 index 00000000000..427107c57d6 --- /dev/null +++ b/charts/incubator/truenas-exporter/dashboard.json @@ -0,0 +1,5482 @@ +{ + "__inputs": [ + { + "name": "DS_MIMIR", + "label": "Mimir", + "description": "", + "type": "datasource", + "pluginId": "prometheus", + "pluginName": "Prometheus" + } + ], + "__elements": {}, + "__requires": [ + { + "type": "grafana", + "id": "grafana", + "name": "Grafana", + "version": "10.2.2" + }, + { + "type": "panel", + "id": "piechart", + "name": "Pie chart", + "version": "" + }, + { + "type": "datasource", + "id": "prometheus", + "name": "Prometheus", + "version": "1.0.0" + }, + { + "type": "panel", + "id": "stat", + "name": "Stat", + "version": "" + }, + { + "type": "panel", + "id": "timeseries", + "name": "Time series", + "version": "" + } + ], + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations & Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 1, + "id": null, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 0 + }, + "id": 161, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "system_load{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{kind}}", + "range": true, + "refId": "A" + } + ], + "title": "System load", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "rotmhz" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 0 + }, + "id": 159, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "cpu_frequency{instance=~\"$instance\", cpu=~\"$cpu\"}", + "instant": false, + "legendFormat": "{{cpu}}", + "range": true, + "refId": "A" + } + ], + "title": "CPU frequency", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "celsius" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 12, + "y": 0 + }, + "id": 160, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "cpu_temperature{instance=~\"$instance\", cpu=~\"$cpu\"}", + "instant": false, + "legendFormat": "{{cpu}}", + "range": true, + "refId": "A" + } + ], + "title": "CPU temperature", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [], + "unit": "mbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 18, + "y": 0 + }, + "id": 162, + "options": { + "displayLabels": [], + "legend": { + "displayMode": "table", + "placement": "right", + "showLegend": true, + "values": [ + "value", + "percent" + ] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "physical_memory{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{kind}}", + "range": true, + "refId": "A" + } + ], + "title": "Memory usage", + "type": "piechart" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": true, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Kbits" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 9 + }, + "id": 163, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "interface_io{instance=~\"$instance\", interface=~\"$interface\"}", + "instant": false, + "legendFormat": "{{interface}} - {{op}}", + "range": true, + "refId": "A" + } + ], + "title": "Network I/O", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 12, + "y": 9 + }, + "id": 164, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "processes{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{kind}}", + "range": true, + "refId": "A" + } + ], + "title": "Processes", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "dtdhms" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 18, + "y": 9 + }, + "id": 165, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "10.2.2", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "uptime{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "synced", + "range": true, + "refId": "A" + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 18 + }, + "id": 79, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 0, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 10 + }, + "id": 78, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "cpu_total{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{kind}}", + "range": true, + "refId": "A" + } + ], + "title": "CPU usage", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "rotmhz" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 10 + }, + "id": 75, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "cpu_frequency{instance=~\"$instance\", cpu=~\"$cpu\"}", + "instant": false, + "legendFormat": "{{cpu}}", + "range": true, + "refId": "A" + } + ], + "title": "CPU frequency", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "celsius" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 12, + "y": 10 + }, + "id": 76, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "cpu_temperature{instance=~\"$instance\", cpu=~\"$cpu\"}", + "instant": false, + "legendFormat": "{{cpu}}", + "range": true, + "refId": "A" + } + ], + "title": "CPU temperature", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 18, + "y": 10 + }, + "id": 77, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "avg by (state) (cpu_idlestate{instance=~\"$instance\", cpu=~\"$cpu\"})", + "instant": false, + "legendFormat": "{{state}}", + "range": true, + "refId": "A" + } + ], + "title": "CPU C-State", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 19 + }, + "id": 74, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "cpu_throttling{instance=~\"$instance\", cpu=~\"$cpu\"}", + "instant": false, + "legendFormat": "{{cpu}}", + "range": true, + "refId": "A" + } + ], + "title": "CPU throttling", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 19 + }, + "id": 73, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "interrupts{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{kind}} - interrupt", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "context_switches{instance=~\"$instance\"}", + "hide": false, + "instant": false, + "legendFormat": "context switches", + "range": true, + "refId": "B" + } + ], + "title": "Interrupts & Context switches", + "type": "timeseries" + } + ], + "title": "CPU", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 19 + }, + "id": 6, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [], + "unit": "mbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 11 + }, + "id": 1, + "options": { + "displayLabels": [], + "legend": { + "displayMode": "table", + "placement": "right", + "showLegend": true, + "values": [ + "value", + "percent" + ] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "physical_memory{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{kind}}", + "range": true, + "refId": "A" + } + ], + "title": "Memory usage", + "type": "piechart" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [], + "unit": "mbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 11 + }, + "id": 2, + "options": { + "displayLabels": [], + "legend": { + "displayMode": "table", + "placement": "right", + "showLegend": true, + "values": [ + "value", + "percent" + ] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "swap{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{kind}}", + "range": true, + "refId": "A" + } + ], + "title": "Swap usage", + "type": "piechart" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "mbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 12, + "y": 11 + }, + "id": 4, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "memory_available{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{kind}}", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "memory_committed{instance=~\"$instance\"}", + "hide": false, + "instant": false, + "legendFormat": "{{kind}}", + "range": true, + "refId": "B" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "memory_transparent_hugepages{instance=~\"$instance\"}", + "hide": false, + "instant": false, + "legendFormat": "hugepages-{{kind}}", + "range": true, + "refId": "C" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "memory_writeback{instance=~\"$instance\"}", + "hide": false, + "instant": false, + "legendFormat": "writeback-{{kind}}", + "range": true, + "refId": "D" + } + ], + "title": "Memory detailed", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "mbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 18, + "y": 11 + }, + "id": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "memory_kernel{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{kind}}", + "range": true, + "refId": "A" + } + ], + "title": "Kernel memory allocation", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "mbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 20 + }, + "id": 5, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "memory_slab{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{kind}}", + "range": true, + "refId": "A" + } + ], + "title": "Memory slab", + "type": "timeseries" + } + ], + "title": "Memory", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 20 + }, + "id": 56, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": true, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Kbits" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 21 + }, + "id": 46, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "interface_io{instance=~\"$instance\", interface=~\"$interface\"}", + "instant": false, + "legendFormat": "{{interface}} - {{op}}", + "range": true, + "refId": "A" + } + ], + "title": "Network I/O", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "Kbits" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 21 + }, + "id": 66, + "options": { + "colorMode": "none", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "10.2.2", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "interface_speed{instance=~\"$instance\", interface=~\"$interface\"}", + "format": "time_series", + "instant": false, + "legendFormat": "{{interface}}", + "range": true, + "refId": "A" + } + ], + "title": "Interface speed", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "left", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 3, + "x": 12, + "y": 21 + }, + "id": 67, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "10.2.2", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "interface_duplex{instance=~\"$instance\", interface=~\"$interface\"} > 0", + "format": "time_series", + "instant": false, + "legendFormat": "{{interface}} - {{state}}", + "range": true, + "refId": "A" + } + ], + "title": "Interface duplex state", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "left", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 3, + "x": 15, + "y": 21 + }, + "id": 68, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "10.2.2", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "interface_operationstate{instance=~\"$instance\", interface=~\"$interface\"} > 0", + "format": "time_series", + "instant": false, + "legendFormat": "{{interface}} - {{state}}", + "range": true, + "refId": "A" + } + ], + "title": "Interface operation state", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "left", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 3, + "x": 18, + "y": 21 + }, + "id": 69, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "10.2.2", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "interface_carrierstate{instance=~\"$instance\", interface=~\"$interface\"} > 0", + "format": "time_series", + "instant": false, + "legendFormat": "{{interface}} - {{state}}", + "range": true, + "refId": "A" + } + ], + "title": "Interface carrier state", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "left", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 3, + "x": 21, + "y": 21 + }, + "id": 70, + "options": { + "legend": { + "calcs": [], + "displayMode": "table", + "placement": "right", + "showLegend": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "10.2.2", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "exemplar": false, + "expr": "interface_mtu{instance=~\"$instance\", interface=~\"$interface\"} > 0", + "format": "time_series", + "instant": false, + "legendFormat": "{{interface}}", + "range": true, + "refId": "A" + } + ], + "title": "Interface MTU", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": true, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "pps" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 30 + }, + "id": 71, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "interface_packets{instance=~\"$instance\", interface=~\"$interface\"}", + "instant": false, + "legendFormat": "{{interface}} - {{op}}", + "range": true, + "refId": "A" + } + ], + "title": "Network packets", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 30 + }, + "id": 72, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "interface_errors{instance=~\"$instance\", interface=~\"$interface\"}", + "instant": false, + "legendFormat": "error ({{interface}} - {{op}})", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "interface_drops{instance=~\"$instance\", interface=~\"$interface\"}", + "hide": false, + "instant": false, + "legendFormat": "drop ({{interface}} - {{op}})", + "range": true, + "refId": "B" + } + ], + "title": "Network errors & drops", + "type": "timeseries" + } + ], + "title": "Network", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 100, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "log": 2, + "type": "log" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 22 + }, + "id": 99, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "processes{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{kind}}", + "range": true, + "refId": "A" + } + ], + "title": "Processes", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 22 + }, + "id": 89, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "processes_forks{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "forks", + "range": true, + "refId": "A" + } + ], + "title": "Process forks", + "type": "timeseries" + } + ], + "title": "Processes", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 22 + }, + "id": 114, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "blue", + "mode": "fixed" + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "dtdhms" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 23 + }, + "id": 112, + "options": { + "colorMode": "value", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "10.2.2", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "uptime{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "synced", + "range": true, + "refId": "A" + } + ], + "title": "Uptime", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMax": 2, + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 23 + }, + "id": 113, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "clock_synced{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "synced", + "range": true, + "refId": "A" + } + ], + "title": "NTP synced", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 12, + "y": 23 + }, + "id": 110, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "clock_offset{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "offset", + "range": true, + "refId": "A" + } + ], + "title": "NTP offset", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "axisSoftMax": 1, + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 18, + "y": 23 + }, + "id": 111, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "clock_status{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{state}}", + "range": true, + "refId": "A" + } + ], + "title": "NTP error state", + "type": "timeseries" + } + ], + "title": "Uptime + NTP", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 23 + }, + "id": 131, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": true, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "KBs" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 24 + }, + "id": 125, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "nfs_io{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "NFS I/O", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "pps" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 24 + }, + "id": 126, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "nfs_net{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "NFS net I/O", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 12, + "y": 24 + }, + "id": 127, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "nfs_threads{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "threads", + "range": true, + "refId": "A" + } + ], + "title": "NFS threads", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "rps" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 18, + "y": 24 + }, + "id": 124, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "nfs_readcache{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "NFS readcache", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 33 + }, + "id": 128, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "nfs_rpc{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "NFS RPC", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 33 + }, + "id": 129, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "nfs_proc4{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "NFS proc4", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 12, + "y": 33 + }, + "id": 130, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "nfs_proc4ops{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "NFS proc4ops", + "type": "timeseries" + } + ], + "title": "NFS", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 24 + }, + "id": 149, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "mbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 25 + }, + "id": 141, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "zfs_arc_size{instance=~\"$instance\", op=~\"arcsz|target\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "ARC Size", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "mbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 25 + }, + "id": 142, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "zfs_l2_size{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "L2 Size", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "rps" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 12, + "y": 25 + }, + "id": 143, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "zfs_reads{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "ZFS reads", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "percent" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 18, + "y": 25 + }, + "id": 144, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "zfs_hits{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "ZFS cache access", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 100, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "percent" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 34 + }, + "id": 146, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "zfs_arc_size_breakdown{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "ARC Size Breakdown", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 34 + }, + "id": 148, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "zfs_hash_elements{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "hashes - {{op}}", + "range": true, + "refId": "A" + } + ], + "title": "ZFS hash elements", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ops" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 12, + "y": 34 + }, + "id": 147, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "zfs_important_ops{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "ZFS important operations", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "eps" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 18, + "y": 34 + }, + "id": 145, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "zfs_hits_rate{instance=~\"$instance\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "ZFS cache hit rate", + "type": "timeseries" + } + ], + "title": "ZFS", + "type": "row" + }, + { + "collapsed": true, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 25 + }, + "id": 8, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": true, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "KiBs" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 26 + }, + "id": 7, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "disk_io{instance=~\"$instance\", disk=~\"$disk\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "Disk I/O - $disk", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": true, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "iops" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 26 + }, + "id": 11, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "disk_io_ops{instance=~\"$instance\", disk=~\"$disk\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "Disk I/O Ops - $disk", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 12, + "y": 26 + }, + "id": 15, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "disk_io_backlog{instance=~\"$instance\", disk=~\"$disk\"}", + "instant": false, + "legendFormat": "backlog", + "range": true, + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "disk_busy{instance=~\"$instance\", disk=~\"$disk\"}", + "hide": false, + "instant": false, + "legendFormat": "busy", + "range": true, + "refId": "B" + } + ], + "title": "Disk backlog + busy - $disk", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 18, + "y": 26 + }, + "id": 20, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "disk_utilization{instance=~\"$instance\", disk=~\"$disk\"}", + "instant": false, + "legendFormat": "utilization", + "range": true, + "refId": "A" + } + ], + "title": "Disk utilization - $disk", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": true, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 0, + "y": 35 + }, + "id": 26, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "disk_iotime{instance=~\"$instance\", disk=~\"$disk\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "Disk I/O time - $disk", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": true, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "ms" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 6, + "y": 35 + }, + "id": 35, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "disk_await{instance=~\"$instance\", disk=~\"$disk\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "Disk await - $disk", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": true, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "kbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 12, + "y": 35 + }, + "id": 36, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "disk_io_size{instance=~\"$instance\", disk=~\"$disk\"}", + "instant": false, + "legendFormat": "{{op}}", + "range": true, + "refId": "A" + } + ], + "title": "Disk avg I/O size - $disk", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "fieldMinMax": false, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "short" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 18, + "y": 35 + }, + "id": 27, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "desc" + } + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "editorMode": "code", + "expr": "disk_qops{instance=~\"$instance\", disk=~\"$disk\"}", + "instant": false, + "legendFormat": "value", + "range": true, + "refId": "A" + } + ], + "title": "Disk active operations - $disk", + "type": "timeseries" + } + ], + "repeat": "disk", + "repeatDirection": "h", + "title": "Disk - $disk", + "type": "row" + } + ], + "refresh": "", + "schemaVersion": 38, + "tags": [], + "templating": { + "list": [ + { + "current": {}, + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "definition": "label_values(uptime,instance)", + "hide": 0, + "includeAll": false, + "multi": false, + "name": "instance", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(uptime,instance)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": ".*", + "current": {}, + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "definition": "label_values(cpu_usage{instance=\"$instance\"},cpu)", + "hide": 0, + "includeAll": true, + "multi": true, + "name": "cpu", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(cpu_usage{instance=\"$instance\"},cpu)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": ".*", + "current": {}, + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "definition": "label_values(disk_io{instance=\"$instance\"},disk)", + "hide": 0, + "includeAll": true, + "multi": true, + "name": "disk", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(disk_io{instance=\"$instance\"},disk)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + }, + { + "allValue": ".*", + "current": {}, + "datasource": { + "type": "prometheus", + "uid": "${DS_MIMIR}" + }, + "definition": "label_values(interface_io{instance=\"$instance\"},interface)", + "hide": 0, + "includeAll": true, + "multi": true, + "name": "interface", + "options": [], + "query": { + "qryType": 1, + "query": "label_values(interface_io{instance=\"$instance\"},interface)", + "refId": "PrometheusVariableQueryEditor-VariableQuery" + }, + "refresh": 1, + "regex": "", + "skipUrlSync": false, + "sort": 0, + "type": "query" + } + ] + }, + "time": { + "from": "now-3h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "TrueNAS Scale", + "uid": "d4a0827b-de7f-4b46-a43f-328f4bc8372a", + "version": 25, + "weekStart": "" + } \ No newline at end of file diff --git a/charts/incubator/truenas-exporter/docs/setup.md b/charts/incubator/truenas-exporter/docs/setup.md new file mode 100644 index 00000000000..84875ab0c22 --- /dev/null +++ b/charts/incubator/truenas-exporter/docs/setup.md @@ -0,0 +1,9 @@ +# Connecting TrueNAS SCALE + +TrueNAS Scale +Inside of TrueNAS you have to open the `Reporting` tab and then click the `Exporters` button to adjust the already present graphite exporter by hitting the edit icon. +Once in the edit view you have to adjust three fields to match your later desired metrics. + +The `prefix` for the graphite metrics need to be set to `truenas` for the mapping file to work +The `hostname` field should be choosen according to your needs it will later populate the instance label of your metrics +The `update` every field should match your scrape time. This is set to `5` by default \ No newline at end of file diff --git a/charts/incubator/truenas-exporter/icon.png b/charts/incubator/truenas-exporter/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ef781f4945d018c718c2814fa62e212da5514aca GIT binary patch literal 42997 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 literal 0 HcmV?d00001 diff --git a/charts/incubator/truenas-exporter/questions.yaml b/charts/incubator/truenas-exporter/questions.yaml new file mode 100644 index 00000000000..11e41ff9aa4 --- /dev/null +++ b/charts/incubator/truenas-exporter/questions.yaml @@ -0,0 +1,75 @@ +# Include{groups} +portals: + open: +# Include{portalLink} +questions: +# Include{global} +# Include{workload} +# Include{workloadDeployment} +# Include{replicas1} +# Include{podSpec} +# Include{containerMain} +# Include{containerBasic} +# Include{containerAdvanced} + +# Include{containerConfig} +# Include{podOptions} +# Include{serviceRoot} +# Include{serviceMain} +# Include{serviceSelectorLoadBalancer} +# Include{serviceSelectorExtras} + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 9109 + required: true +# Include{serviceExpertRoot} +# Include{serviceExpert} +# Include{serviceList} +# Include{ingressRoot} + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: +# Include{ingressDefault} +# Include{ingressAdvanced} +# Include{ingressList} +# Include{securityContextRoot} + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID of the user running the application" + schema: + type: int + default: 568 +# Include{securityContextContainer} +# Include{securityContextAdvanced} +# Include{securityContextPod} + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 +# Include{resources} +# Include{advanced} +# Include{addons} +# Include{codeserver} +# Include{netshoot} +# Include{vpn} +# Include{documentation} diff --git a/charts/incubator/truenas-exporter/templates/NOTES.txt b/charts/incubator/truenas-exporter/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/charts/incubator/truenas-exporter/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/charts/incubator/truenas-exporter/templates/common.yaml b/charts/incubator/truenas-exporter/templates/common.yaml new file mode 100644 index 00000000000..b51394e00a4 --- /dev/null +++ b/charts/incubator/truenas-exporter/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.v1.common.loader.all" . }} diff --git a/charts/incubator/truenas-exporter/values.yaml b/charts/incubator/truenas-exporter/values.yaml new file mode 100644 index 00000000000..f51c446ba2b --- /dev/null +++ b/charts/incubator/truenas-exporter/values.yaml @@ -0,0 +1,491 @@ +image: + repository: prom/graphite-exporter + pullPolicy: IfNotPresent + tag: v0.15.0 + +service: + main: + ports: + main: + protocol: tcp + port: 9109 + metrics: + enabled: true + ports: + metrics: + enabled: true + protocol: http + port: 9108 + +workload: + main: + podSpec: + containers: + main: + args: + - '--graphite.mapping-config=/config/graphite_mapping.conf' + +metrics: + main: + enabled: true + targetSelector: metrics + endpoints: + - port: metrics + +portal: + open: + enabled: false + +persistence: + config: + enabled: true + type: configmap + mountPath: /config/graphite_mapping.conf + objectName: config + readOnly: true + subPath: graphite_mapping.conf + +configmap: + dashboard: + enabled: true + labels: + grafana_dashboard: "1" + data: + truenasexporter.json: >- + {{ .Files.Get "dashboard.json" | indent 8 }} + config: + enabled: true + data: + graphite_mapping.conf: >- + mappings: + + ################################################ + # memory mapping + ################################################ + + - match: "truenas.*.system.ram.*" + name: "physical_memory" + labels: + job: "truenas" + instance: "${1}" + kind: "${2}" + + - match: "truenas.*.mem.*.*" + name: "memory_${2}" + labels: + job: "truenas" + instance: "${1}" + kind: "${3}" + + - match: "truenas.*.system.swap.*" + name: "swap" + labels: + job: "truenas" + instance: "${1}" + kind: "${2}" + + ################################################ + # disk smart metrics + ################################################ + + - match: "truenas.*.smart.log.smart.disktemp.*.*" + name: "disk_temperature" + labels: + job: "truenas" + instance: "${1}" + serial: "${2}" + + ################################################ + # disk operation mappings + ################################################ + + - match: "truenas.*.disk.*.*" + name: "disk_io" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "${3}" + + - match: "truenas.*.disk_ops.*.*" + name: "disk_io_ops" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "${3}" + + - match: "truenas.*.disk_ext.*.*" + name: "disk_io" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "${3}" + + - match: "truenas.*.disk_ext_ops.*.*" + name: "disk_io_ops" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "${3}" + + - match: "truenas.*.disk_backlog.*.backlog" + name: "disk_io_backlog" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + + - match: "truenas.*.disk_busy.*.busy" + name: "disk_busy" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + + - match: "truenas.*.disk_util.*.utilization" + name: "disk_utilization" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + + - match: "truenas.*.disk_mops.*.*" + name: "disk_io" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "merged_${3}" + + - match: "truenas.*.disk_ext_mops.*.*" + name: "disk_io" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "merged_${3}" + + - match: "truenas.*.disk_iotime.*.*" + name: "disk_iotime" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "${3}" + + - match: "truenas.*.disk_ext_iotime.*.*" + name: "disk_iotime" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "${3}" + + - match: "truenas.*.disk_qops.*.operations" + name: "disk_qops" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + + - match: "truenas.*.disk_await.*.*" + name: "disk_await" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "${3}" + + - match: "truenas.*.disk_ext_await.*.*" + name: "disk_await" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "${3}" + + - match: "truenas.*.disk_avgsz.*.*" + name: "disk_io_size" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "${3}" + + - match: "truenas.*.disk_ext_avgsz.*.*" + name: "disk_io_size" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + op: "${3}" + + - match: "truenas.*.disk_svctm.*.svctm" + name: "disk_svctm" + labels: + job: "truenas" + instance: "${1}" + disk: "${2}" + + - match: "truenas.*.system.io.*" + name: "system_io" + labels: + job: "truenas" + instance: "${1}" + op: "${2}" + + ################################################ + # CPU mapping + ################################################ + + - match: "truenas.*.system.intr.interrupts" + name: "interrupts" + labels: + job: "truenas" + instance: "${1}" + kind: "hard" + + - match: "truenas.*.system.cpu.softirq" + name: "interrupts" + labels: + job: "truenas" + instance: "${1}" + kind: "soft" + + - match: "truenas.*.cpu.*.softirq" + name: "cpu_softirq" + labels: + job: "truenas" + instance: "${1}" + cpu: "${2}" + + - match: "truenas.*.system.ctxt.switches" + name: "context_switches" + labels: + job: "truenas" + instance: "${1}" + + - match: "truenas.*.system.cpu.*" + name: "cpu_total" + labels: + job: "truenas" + instance: "${1}" + kind: "${2}" + + - match: "truenas.*.cputemp.temperatures.*" + name: "cpu_temperature" + labels: + job: "truenas" + instance: "${1}" + cpu: "cpu${2}" + + - match: "truenas.*.cpu.core_throttling.*" + name: "cpu_throttling" + labels: + job: "truenas" + instance: "${1}" + cpu: "${2}" + + - match: "truenas.*.cpu.cpufreq.*" + name: "cpu_frequency" + labels: + job: "truenas" + instance: "${1}" + cpu: "${2}" + + - match: 'truenas\.(.*)\.cpu\.(.*)_cpuidle\.(.*)' + match_type: "regex" + name: "cpu_idlestate" + labels: + job: "truenas" + instance: "${1}" + cpu: "${2}" + state: "${3}" + + - match: 'truenas\.(.*)\.cpu\.(.*)\.(.*)' + match_type: "regex" + name: "cpu_usage" + labels: + job: "truenas" + instance: "${1}" + cpu: "${2}" + kind: "${3}" + + ################################################ + # process mapping + ################################################ + + - match: "truenas.*.system.forks.started" + name: "processes_forks" + labels: + job: "truenas" + instance: "${1}" + + - match: "truenas.*.system.processes.*" + name: "processes" + labels: + job: "truenas" + instance: "${1}" + kind: "${2}" + + - match: "truenas.*.system.active_processes.*" + name: "processes" + labels: + job: "truenas" + instance: "${1}" + kind: "${2}" + + ################################################ + # uptime mapping + ################################################ + + - match: "truenas.*.system.uptime.uptime" + name: "uptime" + labels: + job: "truenas" + instance: "${1}" + + - match: "truenas.*.system.clock_sync_state.state" + name: "clock_synced" + labels: + job: "truenas" + instance: "${1}" + + - match: "truenas.*.system.clock_status.*" + name: "clock_status" + labels: + job: "truenas" + instance: "${1}" + state: "${2}" + + - match: "truenas.*.system.clock_sync_offset.offset" + name: "clock_offset" + labels: + job: "truenas" + instance: "${1}" + + ################################################ + # load mapping + ################################################ + + - match: "truenas.*.system.load.*" + name: "system_load" + labels: + job: "truenas" + instance: "${1}" + kind: "${2}" + + ################################################ + # nsfd mappings + ################################################ + + - match: "truenas.*.nfsd.*.*" + name: "nfs_${2}" + labels: + job: "truenas" + instance: "${1}" + op: "${3}" + + ################################################ + # zfs mappings + ################################################ + + - match: "truenas.*.zfs.*.*" + name: "zfs_${2}" + labels: + job: "truenas" + instance: "${1}" + op: "${3}" + + - match: 'truenas\.(.*)\.zfspool\.state_(.*)\.(.*)' + match_type: "regex" + name: "zfs_pool" + labels: + job: "truenas" + instance: "${1}" + pool: "${2}" + state: "${3}" + + ################################################ + # network mappings + ################################################ + + - match: "truenas.*.net.*.*" + name: "interface_io" + labels: + job: "truenas" + instance: "${1}" + interface: "${2}" + op: "${3}" + + - match: "truenas.*.net_speed.*.speed" + name: "interface_speed" + labels: + job: "truenas" + instance: "${1}" + interface: "${2}" + + - match: "truenas.*.net_duplex.*.*" + name: "interface_duplex" + labels: + job: "truenas" + instance: "${1}" + interface: "${2}" + state: "${3}" + + - match: "truenas.*.net_operstate.*.*" + name: "interface_operationstate" + labels: + job: "truenas" + instance: "${1}" + interface: "${2}" + state: "${3}" + + - match: "truenas.*.net_carrier.*.*" + name: "interface_carrierstate" + labels: + job: "truenas" + instance: "${1}" + interface: "${2}" + state: "${3}" + + - match: "truenas.*.net_mtu.*.mtu" + name: "interface_mtu" + labels: + job: "truenas" + instance: "${1}" + interface: "${2}" + + - match: "truenas.*.net_packets.*.*" + name: "interface_packets" + labels: + job: "truenas" + instance: "${1}" + interface: "${2}" + op: "${3}" + + - match: "truenas.*.net_errors.*.*" + name: "interface_errors" + labels: + job: "truenas" + instance: "${1}" + interface: "${2}" + op: "${3}" + + - match: "truenas.*.net_drops.*.*" + name: "interface_drops" + labels: + job: "truenas" + instance: "${1}" + interface: "${2}" + op: "${3}" + + - match: "truenas.*.system.net.*" + name: "system_net_io" + labels: + job: "truenas" + instance: "${1}" + op: "${2}" \ No newline at end of file