diff --git a/roles/grafana/files/dashboards/backups.json b/roles/grafana/files/dashboards/backups.json index ead813022980d47239535cf95c8657703b5d065d..8aae25e050d5235a7da23c0ea938ec085ce91f4d 100644 --- a/roles/grafana/files/dashboards/backups.json +++ b/roles/grafana/files/dashboards/backups.json @@ -20,6 +20,7 @@ "panels": [ { "datasource": "Prometheus", + "description": "", "fieldConfig": { "defaults": { "color": { @@ -54,6 +55,7 @@ } }, "mappings": [], + "min": 0, "thresholds": { "mode": "absolute", "steps": [ @@ -72,12 +74,12 @@ "overrides": [] }, "gridPos": { - "h": 9, - "w": 24, + "h": 7, + "w": 19, "x": 0, "y": 0 }, - "id": 2, + "id": 5, "options": { "legend": { "calcs": [], @@ -88,37 +90,90 @@ "mode": "single" } }, - "pluginVersion": "8.0.3", "targets": [ { "exemplar": true, - "expr": "borg_hetzner_repo_size_bytes{}", - "format": "time_series", - "instant": false, + "expr": "hetzner_storage_box_size_bytes{instance=\"monitoring.archlinux.org\"}", "interval": "", - "legendFormat": "{{ instance }}", + "legendFormat": "Size", "queryType": "randomWalk", "refId": "A" }, { "exemplar": true, - "expr": "sum(borg_hetzner_repo_size_bytes) + 154573468884", + "expr": "hetzner_storage_box_used_bytes{instance=\"monitoring.archlinux.org\"}", "hide": false, "interval": "", - "legendFormat": "Total size of all repos (+ apollo)", + "legendFormat": "Used", "refId": "B" + } + ], + "title": "Disk Usage (Hetzner)", + "type": "timeseries" + }, + { + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 1, + "min": 0, + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "#EAB839", + "value": 85 + }, + { + "color": "red", + "value": 95 + } + ] + }, + "unit": "percentunit" + }, + "overrides": [] + }, + "gridPos": { + "h": 7, + "w": 5, + "x": 19, + "y": 0 + }, + "id": 7, + "options": { + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "text": {} + }, + "pluginVersion": "8.0.3", + "targets": [ { "exemplar": true, - "expr": "10000*2^30", - "hide": false, + "expr": "hetzner_storage_box_used_bytes{instance=\"monitoring.archlinux.org\"} / hetzner_storage_box_size_bytes{instance=\"monitoring.archlinux.org\"}", "interval": "", - "legendFormat": "Storage Box quota", - "refId": "C" + "legendFormat": "", + "queryType": "randomWalk", + "refId": "A" } ], - "title": "Borg Repository Size (Hetzner)", - "type": "timeseries" + "title": "Used Space (Hetzner)", + "type": "gauge" }, { "datasource": "Prometheus", @@ -175,11 +230,11 @@ }, "gridPos": { "h": 9, - "w": 24, + "w": 12, "x": 0, - "y": 9 + "y": 7 }, - "id": 3, + "id": 2, "options": { "legend": { "calcs": [], @@ -194,28 +249,106 @@ "targets": [ { "exemplar": true, - "expr": "borg_offsite_repo_size_bytes{}", + "expr": "borg_hetzner_repo_size_bytes{}", "format": "time_series", "instant": false, "interval": "", "legendFormat": "{{ instance }}", "queryType": "randomWalk", "refId": "A" + } + ], + "title": "Borg Repository Size (Hetzner)", + "type": "timeseries" + }, + { + "datasource": "Prometheus", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 0, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": 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": "bytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 12, + "x": 12, + "y": 7 + }, + "id": 3, + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom" }, + "tooltip": { + "mode": "single" + } + }, + "pluginVersion": "8.0.3", + "targets": [ { "exemplar": true, - "expr": "sum(borg_offsite_repo_size_bytes) + 2502953482529 + 151779047659", - "hide": false, + "expr": "borg_offsite_repo_size_bytes{}", + "format": "time_series", + "instant": false, "interval": "", - "legendFormat": "Total size of all repos (+ orion & apollo)", - "refId": "B" + "legendFormat": "{{ instance }}", + "queryType": "randomWalk", + "refId": "A" } ], "title": "Borg Repository Size (Offsite)", "type": "timeseries" } ], - "refresh": "", + "refresh": false, "schemaVersion": 30, "style": "dark", "tags": [], @@ -223,12 +356,12 @@ "list": [] }, "time": { - "from": "now-6M", + "from": "now-90d", "to": "now" }, "timepicker": {}, "timezone": "", "title": "Borg Backups", "uid": "Rnqpymznz", - "version": 27 + "version": 28 } \ No newline at end of file diff --git a/roles/prometheus_exporters/files/borg-textcollector.sh b/roles/prometheus_exporters/files/borg-textcollector.sh index 617fc4c58cbb9de4620090b374dec679fe353dbf..af88fe38ef50059628ad9b736bfcfb0adb30762b 100755 --- a/roles/prometheus_exporters/files/borg-textcollector.sh +++ b/roles/prometheus_exporters/files/borg-textcollector.sh @@ -34,6 +34,18 @@ if [[ -f /usr/local/bin/borg ]]; then echo "# HELP borg_hetzner_repo_size_bytes amount of data stored in the repo in bytes" >> $TMP_FILE echo "# TYPE borg_hetzner_repo_size_bytes gauge" >> $TMP_FILE echo "borg_hetzner_repo_size_bytes $REPO_SIZE" >> $TMP_FILE + + STORAGE_BOX_DF=$(sftp -P23 u236610.your-storagebox.de <<<df 2>/dev/null | tail -1) + STORAGE_BOX_SIZE=$(( 1024 * $(awk '{print $1}' <<<$STORAGE_BOX_DF) )) # KiB -> bytes + STORAGE_BOX_USED=$(( 1024 * $(awk '{print $2}' <<<$STORAGE_BOX_DF) )) # KiB -> bytes + + echo "# HELP hetzner_storage_box_size_bytes storage box total size in bytes" >> $TMP_FILE + echo "# TYPE hetzner_storage_box_size_bytes gauge" >> $TMP_FILE + echo "hetzner_storage_box_size_bytes $STORAGE_BOX_SIZE" >> $TMP_FILE + + echo "# HELP hetzner_storage_box_used_bytes storage box space used in bytes" >> $TMP_FILE + echo "# TYPE hetzner_storage_box_used_bytes gauge" >> $TMP_FILE + echo "hetzner_storage_box_used_bytes $STORAGE_BOX_USED" >> $TMP_FILE fi # rsync.net borg