{ "__inputs": [ { "name": "DS_BEEGFS_MON_INFLUXDB", "label": "beegfs_mon_influxdb", "description": "", "type": "datasource", "pluginId": "influxdb", "pluginName": "InfluxDB" } ], "__elements": {}, "__requires": [ { "type": "grafana", "id": "grafana", "name": "Grafana", "version": "9.3.0" }, { "type": "datasource", "id": "influxdb", "name": "InfluxDB", "version": "1.0.0" }, { "type": "panel", "id": "table", "name": "Table", "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", "target": { "limit": 100, "matchAny": false, "tags": [], "type": "dashboard" }, "type": "dashboard" } ] }, "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, "id": null, "links": [], "liveNow": false, "panels": [ { "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-YlBl", "seriesBy": "max" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 30, "gradientMode": "hue", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "decimals": 0, "mappings": [], "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "decbytes" }, "overrides": [ { "matcher": { "id": "byName", "options": "Write" }, "properties": [ { "id": "color", "value": { "fixedColor": "blue", "mode": "fixed" } }, { "id": "displayName", "value": "Write" } ] }, { "matcher": { "id": "byName", "options": "Read" }, "properties": [ { "id": "displayName", "value": "Read" }, { "id": "color", "value": { "fixedColor": "super-light-yellow", "mode": "fixed" } } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 }, "id": 30, "options": { "legend": { "calcs": [ "max", "lastNotNull", "min" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "none" } }, "targets": [ { "alias": "Read", "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "nodeID" ], "type": "tag" }, { "params": [ "none" ], "type": "fill" } ], "measurement": "highResStorage", "orderByTime": "ASC", "policy": "default", "query": "from(bucket: \"${bucket}\") |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r.nodeNumID == \"${storageID}\" and r._measurement == \"highResStorage\" and r._field == \"diskReadBytes\") |> group(columns: [\"nodeNumID\"], mode: \"by\") |> aggregateWindow(every: v.windowPeriod, fn: max, createEmpty: false) |> rename(columns: {_value: \"Read\"})", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "diskReadBytes" ], "type": "field" }, { "params": [], "type": "max" } ] ], "tags": [ { "key": "nodeID", "operator": "=~", "value": "/^$storageID$/" } ] }, { "alias": "Write", "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "none" ], "type": "fill" } ], "hide": false, "measurement": "highResStorage", "orderByTime": "ASC", "policy": "default", "query": "from(bucket: \"${bucket}\") |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r.nodeNumID == \"${storageID}\" and r._measurement == \"highResStorage\" and r._field == \"diskWriteBytes\") |> group(columns: [\"nodeNumID\"], mode: \"by\") |> aggregateWindow(every: v.windowPeriod, fn: max, createEmpty: false) |> rename(columns: {_value: \"Write\"})", "refId": "B", "resultFormat": "time_series", "select": [ [ { "params": [ "diskWriteBytes" ], "type": "field" }, { "params": [], "type": "max" } ] ], "tags": [ { "key": "nodeID", "operator": "=~", "value": "/^$storageID$/" } ] } ], "title": "Disk Throughput", "type": "timeseries" }, { "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "fieldConfig": { "defaults": { "color": { "fixedColor": "light-purple", "mode": "fixed" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 30, "gradientMode": "hue", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": true, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "mbytes" }, "overrides": [ { "matcher": { "id": "byName", "options": "diskSpaceFree" }, "properties": [ { "id": "custom.hideFrom", "value": { "legend": true, "tooltip": true, "viz": true } } ] }, { "matcher": { "id": "byName", "options": "diskSpaceTotal" }, "properties": [ { "id": "displayName", "value": "Disk Total" }, { "id": "color", "value": { "fixedColor": "semi-dark-purple", "mode": "fixed" } } ] }, { "matcher": { "id": "byName", "options": "diskSpaceUsed" }, "properties": [ { "id": "displayName", "value": "Disk Used" }, { "id": "color", "value": { "fixedColor": "semi-dark-blue", "mode": "fixed" } } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 }, "id": 32, "options": { "legend": { "calcs": [ "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "alias": "DiskSpaceFree", "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "none" ], "type": "fill" } ], "measurement": "storage", "orderByTime": "ASC", "policy": "default", "query": "from(bucket: \"${bucket}\") \r\n|> range(start: v.timeRangeStart, stop:v.timeRangeStop) \r\n|> filter(fn: (r) => r.nodeNumID == \"${storageID}\")\r\n|> filter(fn: (r) => r._measurement == \"storage\")\r\n|> filter(fn: (r) => r._field == \"diskSpaceTotal\" or r._field == \"diskSpaceFree\") \r\n|> group(columns: [\"nodeNumID\"], mode: \"by\")\r\n|> pivot(rowKey: [\"_time\"], columnKey: [\"_field\"], valueColumn: \"_value\")\r\n|> map(fn: (r) => ({ r with _value: r.diskSpaceTotal - r.diskSpaceFree }))\r\n|> rename(columns: {_value: \"diskSpaceUsed\"})", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "diskSpaceFree" ], "type": "field" }, { "params": [], "type": "max" } ] ], "tags": [ { "key": "nodeID", "operator": "=~", "value": "/^$storageID$/" } ] } ], "title": "Disk Usage", "type": "timeseries" }, { "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "description": "", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 30, "gradientMode": "hue", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineStyle": { "fill": "solid" }, "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": true, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "decbytes" }, "overrides": [ { "matcher": { "id": "byName", "options": "Send" }, "properties": [ { "id": "custom.transform", "value": "negative-Y" }, { "id": "color", "value": { "fixedColor": "semi-dark-yellow", "mode": "fixed" } }, { "id": "displayName", "value": "Send" } ] }, { "matcher": { "id": "byName", "options": "Received" }, "properties": [ { "id": "displayName", "value": "Received" }, { "id": "color", "value": { "fixedColor": "light-green", "mode": "fixed" } } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 }, "id": 24, "options": { "legend": { "calcs": [ "max" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "multi", "sort": "none" } }, "targets": [ { "alias": "Received", "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "none" ], "type": "fill" } ], "measurement": "highResStorage", "orderByTime": "ASC", "policy": "default", "query": "from(bucket: \"${bucket}\") |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r.nodeNumID == \"${storageID}\" and r._measurement == \"highResStorage\" and r._field == \"netRecvBytes\") |> group(columns: [\"nodeNumID\"], mode: \"by\") |> aggregateWindow(every: v.windowPeriod, fn: max, createEmpty: false) |> rename(columns: {_value: \"Received\"})", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "netRecvBytes" ], "type": "field" }, { "params": [], "type": "max" } ] ], "tags": [ { "key": "nodeID", "operator": "=~", "value": "/^$storageID$/" } ] }, { "alias": "Sent", "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "none" ], "type": "fill" } ], "hide": false, "measurement": "highResStorage", "orderByTime": "ASC", "policy": "default", "query": "from(bucket: \"${bucket}\") |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r.nodeNumID == \"${storageID}\" and r._measurement == \"highResStorage\" and r._field == \"netSendBytes\") |> group(columns: [\"nodeNumID\"], mode: \"by\") |> aggregateWindow(every: v.windowPeriod, fn: max, createEmpty: false) |> rename(columns: {_value: \"Send\"})", "refId": "B", "resultFormat": "time_series", "select": [ [ { "params": [ "netSendBytes" ], "type": "field" }, { "params": [], "type": "max" } ] ], "tags": [ { "key": "nodeID", "operator": "=~", "value": "/^$storageID$/" } ] } ], "title": "Network Traffic", "type": "timeseries" }, { "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "description": "", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": -1, "drawStyle": "line", "fillOpacity": 30, "gradientMode": "hue", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "never", "spanNulls": true, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "none" }, "overrides": [ { "matcher": { "id": "byName", "options": "Processed" }, "properties": [ { "id": "color", "value": { "fixedColor": "#36bdbc", "mode": "fixed" } }, { "id": "displayName", "value": "Processed" } ] }, { "matcher": { "id": "byName", "options": "Queued" }, "properties": [ { "id": "color", "value": { "fixedColor": "light-orange", "mode": "fixed" } }, { "id": "displayName", "value": "Queued" } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 }, "id": 26, "options": { "legend": { "calcs": [ "max", "lastNotNull" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "alias": "Processed", "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "none" ], "type": "fill" } ], "measurement": "highResStorage", "orderByTime": "ASC", "policy": "default", "query": "from(bucket: \"${bucket}\") |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r.nodeNumID == \"${storageID}\" and r._measurement == \"highResStorage\" and r._field == \"workRequests\") |> group(columns: [\"nodeNumID\"], mode: \"by\") |> aggregateWindow(every: v.windowPeriod, fn: max, createEmpty: false) |> rename(columns: {_value: \"Processed\"})", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "workRequests" ], "type": "field" }, { "params": [], "type": "max" } ] ], "tags": [ { "key": "nodeID", "operator": "=~", "value": "/^$storageID$/" } ] }, { "alias": "Queued", "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "none" ], "type": "fill" } ], "hide": false, "measurement": "highResStorage", "orderByTime": "ASC", "policy": "default", "query": "from(bucket: \"${bucket}\") |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r.nodeNumID == \"${storageID}\" and r._measurement == \"highResStorage\" and r._field == \"queuedRequests\") |> group(columns: [\"nodeNumID\"], mode: \"by\") |> aggregateWindow(every: v.windowPeriod, fn: max, createEmpty: false) |> rename(columns: {_value: \"Queued\"})", "refId": "B", "resultFormat": "time_series", "select": [ [ { "params": [ "queuedRequests" ], "type": "field" }, { "params": [], "type": "max" } ] ], "tags": [] } ], "title": "Work Requests", "type": "timeseries" }, { "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "fieldConfig": { "defaults": { "color": { "fixedColor": "#9340cc8f", "mode": "fixed" }, "custom": { "align": "center", "displayMode": "auto", "inspect": false }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "semi-dark-purple" }, { "color": "red", "value": 80 } ] } }, "overrides": [ { "matcher": { "id": "byName", "options": "Value" }, "properties": [ { "id": "displayName", "value": "isResponding" } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 16 }, "id": 8, "links": [], "maxDataPoints": 100, "options": { "cellHeight": "sm", "footer": { "countRows": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true }, "pluginVersion": "9.3.0", "targets": [ { "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "dsType": "influxdb", "groupBy": [], "measurement": "meta", "orderByTime": "ASC", "policy": "default", "query": "from(bucket: \"${bucket}\") |> range(start: v.timeRangeStart, stop:v.timeRangeStop) |> filter(fn: (r) => r.nodeNumID == \"${storageID}\" and r._measurement == \"storage\" and r._field == \"isResponding\") |> group(columns: [\"nodeNumID\"], mode: \"by\") |> keep(columns: [\"_time\", \"_value\"]) |> aggregateWindow(every: 1m, fn: last, createEmpty: false) |> yield(name: \"last\")", "rawQuery": false, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "isResponding" ], "type": "field" }, { "params": [], "type": "last" } ] ], "tags": [ { "key": "nodeID", "operator": "=~", "value": "/^$metaID$/" } ] } ], "title": "Availability", "transformations": [], "type": "table" }, { "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "description": "", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "displayMode": "auto", "inspect": false }, "mappings": [], "noValue": "Node Down", "thresholds": { "mode": "absolute", "steps": [ { "color": "green" }, { "color": "red", "value": 80 } ] } }, "overrides": [ { "matcher": { "id": "byType", "options": "number" }, "properties": [ { "id": "custom.align", "value": "center" } ] }, { "matcher": { "id": "byType", "options": "string" }, "properties": [ { "id": "custom.width" }, { "id": "custom.align", "value": "center" } ] }, { "matcher": { "id": "byName", "options": "Total Space" }, "properties": [ { "id": "unit", "value": "bytes" } ] }, { "matcher": { "id": "byName", "options": "Free Space" }, "properties": [ { "id": "unit", "value": "bytes" } ] }, { "matcher": { "id": "byName", "options": "State" }, "properties": [ { "id": "color", "value": { "fixedColor": "#4ac09b75", "mode": "fixed" } }, { "id": "custom.displayMode", "value": "color-background" } ] } ] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 16 }, "id": 22, "links": [], "options": { "cellHeight": "sm", "footer": { "countRows": false, "enablePagination": false, "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true }, "pluginVersion": "9.3.0", "targets": [ { "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "dsType": "influxdb", "groupBy": [ { "params": [ "storageTargetID" ], "type": "tag" } ], "limit": "", "measurement": "storageTargets", "orderByTime": "ASC", "policy": "default", "query": " from(bucket: \"${bucket}\") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r.nodeNumID == \"${storageID}\" and r._measurement == \"storageTargets\" and r._field == \"diskSpaceTotal\") |> group(columns: [\"storageTargetID\"]) |> last() |> group() |> keep(columns: [\"_value\", \"storageTargetID\"]) |> rename(columns: {_value: \"Total Space\"})", "rawQuery": false, "refId": "A", "resultFormat": "table", "select": [ [ { "params": [ "diskSpaceTotal" ], "type": "field" }, { "params": [], "type": "last" }, { "params": [ "totalspace" ], "type": "alias" } ], [ { "params": [ "diskSpaceFree" ], "type": "field" }, { "params": [], "type": "last" }, { "params": [ "freespace" ], "type": "alias" } ], [ { "params": [ "targetConsistencyState" ], "type": "field" }, { "params": [], "type": "last" }, { "params": [ "state" ], "type": "alias" } ] ], "tags": [ { "key": "nodeID", "operator": "=~", "value": "/^$storageID$/" } ] }, { "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "hide": false, "query": " from(bucket: \"${bucket}\") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r.nodeNumID == \"${storageID}\" and r._measurement == \"storageTargets\" and r._field == \"diskSpaceFree\") |> group(columns: [\"storageTargetID\"]) |> last() |> group() |> keep(columns: [\"_value\", \"storageTargetID\"]) |> rename(columns: {_value: \"Free Space\"})", "refId": "B" }, { "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "hide": false, "query": " from(bucket: \"${bucket}\") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r.nodeNumID == \"${storageID}\" and r._measurement == \"storageTargets\" and r._field == \"targetConsistencyState\") |> group(columns: [\"storageTargetID\"]) |> last() |> group() |> keep(columns: [\"_value\", \"storageTargetID\"]) |> rename(columns: {_value: \"State\"})", "refId": "C" } ], "title": "Storage Targets ", "transformations": [ { "id": "joinByField", "options": { "byField": "storageTargetID", "mode": "outer" } }, { "id": "organize", "options": { "excludeByName": {}, "indexByName": {}, "renameByName": { "storageTargetID": "StorageTargetID" } } } ], "type": "table" } ], "refresh": "", "schemaVersion": 37, "style": "dark", "tags": [], "templating": { "list": [ { "current": {}, "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "definition": "buckets()", "hide": 0, "includeAll": false, "label": "Bucket", "multi": false, "name": "bucket", "options": [], "query": "buckets()", "refresh": 1, "regex": "", "skipUrlSync": false, "sort": 0, "type": "query" }, { "current": {}, "datasource": { "type": "influxdb", "uid": "${DS_BEEGFS_MON_INFLUXDB}" }, "definition": "import \"influxdata/influxdb/schema\"schema.measurementTagValues( bucket: \"${bucket}\", tag: \"nodeNumID\", measurement: \"storage\")", "hide": 0, "includeAll": false, "multi": false, "name": "storageID", "options": [], "query": "import \"influxdata/influxdb/schema\"schema.measurementTagValues( bucket: \"${bucket}\", tag: \"nodeNumID\", measurement: \"storage\")", "refresh": 1, "regex": "", "skipUrlSync": false, "sort": 0, "type": "query" } ] }, "time": { "from": "now-5m", "to": "now" }, "timepicker": {}, "timezone": "", "title": "BeeGFS Storage Server", "uid": "q3Q7dN04k", "version": 2, "weekStart": "" }