From 69c7485071fe572443260eb02d31749379eb5c76 Mon Sep 17 00:00:00 2001 From: ngosang Date: Tue, 6 Dec 2022 20:40:47 +0100 Subject: [PATCH] First release: restic-exporter 1.0.0 --- .github/workflows/autotag.yml | 20 + .github/workflows/release-docker.yml | 52 ++ .gitignore | 7 + CHANGELOG.md | 6 + Dockerfile | 41 ++ README.md | 164 ++++- docker-compose.yml | 17 + entrypoint.sh | 18 + grafana/grafana_dashboard.json | 1019 ++++++++++++++++++++++++++ grafana/grafana_dashboard.png | Bin 0 -> 127055 bytes package.json | 5 + requirements.txt | 1 + restic-exporter.py | 233 ++++++ 13 files changed, 1581 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/autotag.yml create mode 100644 .github/workflows/release-docker.yml create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100755 entrypoint.sh create mode 100644 grafana/grafana_dashboard.json create mode 100644 grafana/grafana_dashboard.png create mode 100644 package.json create mode 100644 requirements.txt create mode 100644 restic-exporter.py diff --git a/.github/workflows/autotag.yml b/.github/workflows/autotag.yml new file mode 100644 index 0000000..d2a076a --- /dev/null +++ b/.github/workflows/autotag.yml @@ -0,0 +1,20 @@ +name: autotag + +on: + push: + branches: + - "main" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Auto Tag + uses: Klemensas/action-autotag@stable + with: + GITHUB_TOKEN: "${{ secrets.GH_PAT }}" + tag_prefix: "" diff --git a/.github/workflows/release-docker.yml b/.github/workflows/release-docker.yml new file mode 100644 index 0000000..e104798 --- /dev/null +++ b/.github/workflows/release-docker.yml @@ -0,0 +1,52 @@ +name: release-docker + +on: + push: + tags: + - '*.*.*' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Downcase repo + run: echo REPOSITORY=ngosang/restic-exporter >> $GITHUB_ENV + - + name: Docker metadata + id: docker_metadata + uses: docker/metadata-action@v3 + with: + images: ${{ env.REPOSITORY }},ghcr.io/${{ env.REPOSITORY }} + - + name: Set up QEMU + uses: docker/setup-qemu-action@v1.0.1 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - + name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GH_PAT }} + - + name: Build and push + uses: docker/build-push-action@v2 + with: + context: . + file: ./Dockerfile + platforms: linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64/v8, linux/ppc64le, linux/s390x + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.docker_metadata.outputs.tags }} + labels: ${{ steps.docker_metadata.outputs.labels }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..501c338 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.pyc +.settings +.directory +.idea/ +_trial_temp/ +.vscode +.run/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a8387b3 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,6 @@ +# Changelog + +## 1.0.0 (2022/12/06) + +* First release +* Restic 0.14.0 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f65c18d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,41 @@ +FROM golang:alpine3.17 AS builder + +ENV RESTIC_VERSION 0.14.0 +ENV CGO_ENABLED 0 + +RUN cd /tmp \ + # download restic source code + && wget https://github.com/restic/restic/archive/refs/tags/v${RESTIC_VERSION}.tar.gz -O restic.tar.gz \ + && tar xvf restic.tar.gz \ + && cd restic-* \ + # build the executable + # flag -ldflags "-s -w" produces a smaller executable + && go build -ldflags "-s -w" -v -o /tmp/restic ./cmd/restic + +FROM python:3.11-alpine3.17 + +RUN apk add --no-cache --update tzdata + +COPY --from=builder /tmp/restic /usr/bin +COPY entrypoint.sh requirements.txt / + +RUN pip install -r /requirements.txt \ + # remove temporary files + && rm -rf /root/.cache + +COPY ./restic-exporter.py /restic-exporter.py + +EXPOSE 8001 + +CMD [ "/entrypoint.sh" ] + +# Help +# +# Local build +# docker build -t restic-exporter:custom . +# +# Multi-arch build +# docker buildx create --use +# docker buildx build -t restic-exporter:custom --platform linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x . +# +# add --push to publish in DockerHub diff --git a/README.md b/README.md index 19de000..9510381 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,162 @@ -# restic-exporter -Prometheus exporter for the Restic backup system +# ngosang/restic-exporter + +[![Latest release](https://img.shields.io/github/v/release/ngosang/restic-exporter)](https://github.com/ngosang/restic-exporter/releases) +[![Docker Pulls](https://img.shields.io/docker/pulls/ngosang/restic-exporter)](https://hub.docker.com/r/ngosang/restic-exporter/) +[![Donate PayPal](https://img.shields.io/badge/Donate-PayPal-yellow.svg)](https://www.paypal.com/paypalme/diegoheras0xff) +[![Donate Bitcoin](https://img.shields.io/badge/Donate-Bitcoin-f7931a.svg)](https://www.blockchain.com/btc/address/14EcPN47rWXkmFvjfohJx2rQxxoeBRJhej) +[![Donate Ethereum](https://img.shields.io/badge/Donate-Ethereum-8c8c8c.svg)](https://www.blockchain.com/eth/address/0x0D1549BbB00926BF3D92c1A8A58695e982f1BE2E) + +Prometheus exporter for the [Restic](https://github.com/restic/restic) backup system. + +## Install + +### Form source code + +Requirements: + * Python 3 + * [prometheus-client](https://github.com/prometheus/client_python) + +```bash +pip install -r /requirements.txt + +export RESTIC_REPO_URL=/data +export PASSWORD_FILE=/restic_password_file +python restic-exporter.py +``` + +### Docker + +Docker images are available in [GHCR](https://github.com/ngosang/restic-exporter/pkgs/container/restic-exporter) and [DockerHub](https://hub.docker.com/r/ngosang/restic-exporter). + +```bash +docker pull ghcr.io/ngosang/restic-exporter +or +docker pull ngosang/restic-exporter +``` + +#### Supported Architectures + +The architectures supported by this image are: + +* linux/386 +* linux/amd64 +* linux/arm/v6 +* linux/arm/v7 +* linux/arm64/v8 +* linux/ppc64le +* linux/s390x + +#### docker-compose + +Compatible with docker-compose v2 schemas: + +```yaml +--- +version: '2.1' +services: + restic-exporter: + image: ngosang/restic-exporter + container_name: restic-exporter + environment: + - TZ=Europe/Madrid + - RESTIC_REPO_URL=/data + - RESTIC_REPO_PASSWORD= + # - RESTIC_REPO_PASSWORD_FILE= + - REFRESH_INTERVAL=1800 # 30 min + volumes: + - /host_path/restic/data:/data + ports: + - "8001:8001" + restart: unless-stopped +``` + +#### docker cli + +```bash +docker run -d \ + --name=restic-exporter \ + -e TZ=Europe/Madrid \ + -e RESTIC_REPO_URL=/data \ + -e RESTIC_REPO_PASSWORD= \ + -e REFRESH_INTERVAL=1800 \ + -p 8001:8001 \ + --restart unless-stopped \ + ngosang/restic-exporter +``` + +## Configuration + +All configuration is done with environment variables. + +- `RESTIC_REPO_URL`: Restic repository URL. It could be a local repository (eg: `/data`) or a remote repository (eg: `rest:http://user:password@127.0.0.1:8000/`). +- `RESTIC_REPO_PASSWORD`: Restic repository password in plain text. This is only required if `RESTIC_REPO_PASSWORD_FILE` is not defined. +- `RESTIC_REPO_PASSWORD_FILE`: File with the Restic repository password in plain text. This is only required if `RESTIC_REPO_PASSWORD` is not defined. Remember to mount the Docker volume with the file. +- `REFRESH_INTERVAL`: (Optional) Refresh interval for the metrics in seconds. Computing the metrics is a expensive task, keep this value as high as possible. Default 60 +- `LISTEN_PORT`: (Optional) The address the exporter should listen on. The default is `8001`. +- `LISTEN_ADDRESS`: (Optional) The address the exporter should listen on. The default is to listen on all addresses. +- `LOG_LEVEL`: (Optional) Log level of the traces. The default is `INFO`. + +## Exported metrics + +```shell +# HELP restic_check_success Result of restic check operation in the repository +# TYPE restic_check_success gauge +restic_check_success 1.0 +# HELP restic_snapshots_total Total number of snapshots in the repository +# TYPE restic_snapshots_total counter +restic_snapshots_total 1777.0 +# HELP restic_backup_timestamp Timestamp of the last backup +# TYPE restic_backup_timestamp gauge +restic_backup_timestamp{client_hostname="PC-HOME-1",client_username="PC-HOME-1\\User-1",snapshot_hash="1911eb846f1642c327936915f1fad4e16190d0ab6b68e045294f5f0280a00ebe"} 1.669754009e+09 +# HELP restic_backup_files_total Number of files in the backup +# TYPE restic_backup_files_total counter +restic_backup_files_total{client_hostname="PC-HOME-1",client_username="PC-HOME-1\\User-1",snapshot_hash="1911eb846f1642c327936915f1fad4e16190d0ab6b68e045294f5f0280a00ebe"} 19051.0 +# HELP restic_backup_size_total Total size of backup in bytes +# TYPE restic_backup_size_total counter +restic_backup_size_total{client_hostname="PC-HOME-1",client_username="PC-HOME-1\\User-1",snapshot_hash="1911eb846f1642c327936915f1fad4e16190d0ab6b68e045294f5f0280a00ebe"} 4.1174838248e+010 +# HELP restic_backup_snapshots_total Total number of snapshots +# TYPE restic_backup_snapshots_total counter +restic_backup_snapshots_total{client_hostname="PC-HOME-1",client_username="PC-HOME-1\\User-1",snapshot_hash="1911eb846f1642c327936915f1fad4e16190d0ab6b68e045294f5f0280a00ebe"} 106.0 +``` + +## Prometheus config + +Example Prometheus configuration: + +```yaml +scrape_configs: + - job_name: 'restic-exporter' + static_configs: + - targets: ['192.168.1.100:8001'] +``` + +## Prometheus / Alertmanager rules + +Example Prometheus rules for alerting: + +```yaml + - alert: ResticCheckFailed + expr: restic_check_success == 0 + for: 5m + labels: + severity: critical + annotations: + summary: Restic check failed (instance {{ $labels.instance }}) + description: Restic check failed\n VALUE = {{ $value }}\n LABELS = {{ $labels }} + + - alert: ResticOutdatedBackup + # 1209600 = 15 days + expr: time() - restic_backup_timestamp > 1209600 + for: 0m + labels: + severity: critical + annotations: + summary: Restic {{ $labels.client_hostname }} / {{ $labels.client_username }} backup is outdated + description: Restic backup is outdated\n VALUE = {{ $value }}\n LABELS = {{ $labels }} +``` + +## Grafana dashboard + +There is a reference Grafana dashboard in [grafana/grafana_dashboard.json](./grafana/grafana_dashboard.json). + +![](./grafana/grafana_dashboard.png) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..82a8d44 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +version: "2.1" + +services: + restic-exporter: + image: ngosang/restic-exporter + container_name: restic-exporter + environment: + - TZ=Europe/Madrid + - RESTIC_REPO_URL=/data + - RESTIC_REPO_PASSWORD=password_here + # - RESTIC_REPO_PASSWORD_FILE=/file_with_password_here + - REFRESH_INTERVAL=1800 # 30 min + volumes: + - /host_path/restic/data:/data + ports: + - "8001:8001" + restart: unless-stopped diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..ed36911 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env sh + +# Exit on error. For debug use set -x +set -e + +export PASSWORD_FILE="/tmp/restic_passwd" + +if [ -z "${RESTIC_REPO_PASSWORD}" ]; then + if [ -z "${RESTIC_REPO_PASSWORD_FILE}" ]; then + echo "You have to define one of these environment variables: RESTIC_REPO_PASSWORD or RESTIC_REPO_PASSWORD_FILE" + else + cp "${RESTIC_REPO_PASSWORD_FILE}" "${PASSWORD_FILE}" + fi +else + echo "${RESTIC_REPO_PASSWORD}" > "${PASSWORD_FILE}" +fi + +/usr/local/bin/python -u /restic-exporter.py diff --git a/grafana/grafana_dashboard.json b/grafana/grafana_dashboard.json new file mode 100644 index 0000000..9a24b6b --- /dev/null +++ b/grafana/grafana_dashboard.json @@ -0,0 +1,1019 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "datasource", + "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" + } + ] + }, + "description": "Restic statistics dashboard", + "editable": true, + "fiscalYearStartMonth": 0, + "gnetId": 9846, + "graphTooltip": 0, + "id": 40, + "links": [], + "liveNow": false, + "panels": [ + { + "datasource": { + "type": "prometheus", + "uid": "fmMKqssGk" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "index": 1, + "text": "ERROR" + }, + "1": { + "color": "green", + "index": 0, + "text": "OK" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 3, + "w": 24, + "x": 0, + "y": 0 + }, + "id": 40, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "text": {}, + "textMode": "auto" + }, + "pluginVersion": "9.3.0", + "targets": [ + { + "exemplar": true, + "expr": "restic_check_success", + "interval": "", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Repository Check", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "fmMKqssGk" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "last_backup" + }, + "properties": [ + { + "id": "custom.displayMode", + "value": "auto" + }, + { + "id": "unit", + "value": "dateTimeAsIso" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "last_backup_since" + }, + "properties": [ + { + "id": "custom.displayMode", + "value": "color-background" + }, + { + "id": "unit", + "value": "s" + }, + { + "id": "thresholds", + "value": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "yellow", + "value": 604800 + }, + { + "color": "red", + "value": 1209600 + } + ] + } + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 15, + "x": 0, + "y": 3 + }, + "id": 27, + "links": [], + "maxDataPoints": 100, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 1, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "client_hostname" + } + ] + }, + "pluginVersion": "9.3.0", + "targets": [ + { + "exemplar": true, + "expr": "restic_backup_timestamp * 1000", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{client_hostname}}", + "refId": "A" + }, + { + "exemplar": true, + "expr": "time() - restic_backup_timestamp", + "format": "table", + "hide": false, + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{client_hostname}}", + "refId": "B" + } + ], + "title": "Last backup", + "transformations": [ + { + "id": "merge", + "options": {} + }, + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "backup_id": true, + "backup_type": true, + "client_hostname": false, + "client_id": true, + "client_os_version": true, + "client_username": true, + "client_version": true, + "instance": true, + "job": true, + "snapshot_hash": true, + "snapshot_id": true + }, + "indexByName": {}, + "renameByName": { + "Value": "", + "Value #A": "last_backup", + "Value #B": "last_backup_since" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "prometheus", + "uid": "fmMKqssGk" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 9, + "x": 15, + "y": 3 + }, + "id": 32, + "links": [], + "maxDataPoints": 100, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 1, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "client_hostname" + } + ] + }, + "pluginVersion": "9.3.0", + "targets": [ + { + "exemplar": true, + "expr": "restic_backup_snapshots_total", + "format": "table", + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{client_hostname}}", + "refId": "A" + } + ], + "title": "Total snapshot count", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "backup_id": true, + "backup_type": true, + "client_hostname": false, + "client_id": true, + "client_os_version": true, + "client_username": true, + "client_version": true, + "instance": true, + "job": true, + "snapshot_hash": true, + "snapshot_id": true + }, + "indexByName": {}, + "renameByName": { + "Value": "total_snapshot_count" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "prometheus", + "uid": "fmMKqssGk" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "total_backup_size" + }, + "properties": [ + { + "id": "unit", + "value": "bytes" + } + ] + } + ] + }, + "gridPos": { + "h": 9, + "w": 9, + "x": 0, + "y": 12 + }, + "id": 34, + "links": [], + "maxDataPoints": 100, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 1, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "client_hostname" + } + ] + }, + "pluginVersion": "9.3.0", + "targets": [ + { + "exemplar": true, + "expr": "restic_backup_size_total", + "format": "table", + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{client_hostname}}", + "refId": "A" + } + ], + "title": "Total backup size", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "backup_id": true, + "backup_type": true, + "client_hostname": false, + "client_id": true, + "client_os_version": true, + "client_username": true, + "client_version": true, + "instance": true, + "job": true, + "snapshot_hash": true, + "snapshot_id": true + }, + "indexByName": {}, + "renameByName": { + "Value": "total_backup_size" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "prometheus", + "uid": "fmMKqssGk" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "mappings": [], + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 6, + "x": 9, + "y": 12 + }, + "id": 35, + "links": [], + "maxDataPoints": 100, + "options": { + "displayLabels": [ + "percent" + ], + "legend": { + "displayMode": "list", + "placement": "bottom", + "showLegend": false, + "values": [] + }, + "pieType": "donut", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "/^Value$/", + "values": true + }, + "tooltip": { + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "8.1.4", + "targets": [ + { + "exemplar": true, + "expr": "restic_backup_size_total", + "format": "table", + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{client_hostname}}", + "refId": "A" + } + ], + "title": "Total backup size", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": false, + "__name__": true, + "backup_id": true, + "client_hostname": false, + "client_username": true, + "instance": true, + "job": true, + "snapshot_id": true + }, + "indexByName": {}, + "renameByName": { + "Value": "", + "snapshot_id": "" + } + } + } + ], + "type": "piechart" + }, + { + "datasource": { + "type": "prometheus", + "uid": "fmMKqssGk" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "displayMode": "auto", + "filterable": false, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 9, + "x": 15, + "y": 12 + }, + "id": 33, + "links": [], + "maxDataPoints": 100, + "options": { + "footer": { + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 1, + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "client_hostname" + } + ] + }, + "pluginVersion": "9.3.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "fmMKqssGk" + }, + "exemplar": true, + "expr": "restic_backup_files_total", + "format": "table", + "instant": true, + "interval": "", + "intervalFactor": 1, + "legendFormat": "{{client_hostname}}", + "refId": "A" + } + ], + "title": "Total backup files", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "__name__": true, + "backup_id": true, + "backup_type": true, + "client_hostname": false, + "client_id": true, + "client_os_version": true, + "client_username": true, + "client_version": true, + "instance": true, + "job": true, + "snapshot_hash": true, + "snapshot_id": true + }, + "indexByName": {}, + "renameByName": { + "Value": "total_backup_files" + } + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "prometheus", + "uid": "fmMKqssGk" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 30, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "decbytes" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 24, + "x": 0, + "y": 21 + }, + "id": 8, + "links": [], + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "8.5.0", + "targets": [ + { + "exemplar": true, + "expr": "sum by(client_hostname,client_username) (restic_backup_size_total)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{client_hostname}}", + "refId": "A" + } + ], + "title": "Total backup size", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "fmMKqssGk" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 30, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 15, + "x": 0, + "y": 30 + }, + "id": 41, + "links": [], + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "8.5.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "fmMKqssGk" + }, + "exemplar": true, + "expr": "sum by(client_hostname,client_username) (restic_backup_files_total)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{client_hostname}}", + "refId": "A" + } + ], + "title": "Total backup files", + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "fmMKqssGk" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "drawStyle": "line", + "fillOpacity": 30, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "spanNulls": false, + "stacking": { + "group": "A", + "mode": "normal" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "links": [], + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + }, + "unit": "none" + }, + "overrides": [] + }, + "gridPos": { + "h": 9, + "w": 9, + "x": 15, + "y": 30 + }, + "id": 30, + "links": [], + "options": { + "legend": { + "calcs": [], + "displayMode": "list", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "8.5.0", + "targets": [ + { + "exemplar": true, + "expr": "sum by(client_hostname,client_username) (restic_backup_snapshots_total)", + "format": "time_series", + "interval": "", + "intervalFactor": 2, + "legendFormat": "{{client_hostname}}", + "refId": "A" + } + ], + "title": "Total snapshot count", + "type": "timeseries" + } + ], + "refresh": "", + "schemaVersion": 37, + "style": "dark", + "tags": [ + "system" + ], + "templating": { + "list": [] + }, + "time": { + "from": "now-7d", + "to": "now" + }, + "timepicker": { + "refresh_intervals": [ + "5s", + "10s", + "30s", + "1m", + "5m", + "15m", + "30m", + "1h", + "2h", + "1d" + ], + "time_options": [ + "5m", + "15m", + "1h", + "6h", + "12h", + "24h", + "2d", + "7d", + "30d" + ] + }, + "timezone": "", + "title": "Restic Exporter", + "uid": "2JzZl3B7k", + "version": 22, + "weekStart": "" +} \ No newline at end of file diff --git a/grafana/grafana_dashboard.png b/grafana/grafana_dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..b5edc668694e749872d5ce5303fee37ea5d7600a GIT binary patch literal 127055 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�#TcVSPFDs#D`Wtn%1& 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 C+cWb3 literal 0 HcmV?d00001 diff --git a/package.json b/package.json new file mode 100644 index 0000000..a7e3bfe --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "name": "ngosang-restic-exporter", + "version": "1.0.0", + "author": "ngosang@hotmail.es" +} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..2623560 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +prometheus-client==0.15.0 diff --git a/restic-exporter.py b/restic-exporter.py new file mode 100644 index 0000000..46ee0e4 --- /dev/null +++ b/restic-exporter.py @@ -0,0 +1,233 @@ +#!/usr/bin/env python3 +import datetime +import hashlib +import json +import logging +import os +import time +import re +import subprocess +import sys + +import prometheus_client +import prometheus_client.core + + +class ResticCollector(object): + def __init__(self, repository, password_file_): + self.repository = repository + self.password_file = password_file_ + # todo: the stats cache increases over time -> remove old ids + # todo: cold start -> the stats cache could be saved in a persistent volume + # todo: cold start -> the restic cache (/root/.cache/restic) could be saved in a persistent volume + self.stats_cache = {} + self.metrics = {} + self.refresh() + + def collect(self): + logging.debug("Incoming request") + + common_label_names = [ + "client_hostname", + "client_username", + "snapshot_hash" + ] + + check_success = prometheus_client.core.GaugeMetricFamily( + "restic_check_success", + "Result of restic check operation in the repository", + labels=[]) + + snapshots_total = prometheus_client.core.CounterMetricFamily( + "restic_snapshots_total", + "Total number of snapshots in the repository", + labels=[]) + + backup_timestamp = prometheus_client.core.GaugeMetricFamily( + "restic_backup_timestamp", + "Timestamp of the last backup", + labels=common_label_names) + + backup_files_total = prometheus_client.core.CounterMetricFamily( + "restic_backup_files_total", + "Number of files in the backup", + labels=common_label_names) + + backup_size_total = prometheus_client.core.CounterMetricFamily( + "restic_backup_size_total", + "Total size of backup in bytes", + labels=common_label_names) + + backup_snapshots_total = prometheus_client.core.CounterMetricFamily( + "restic_backup_snapshots_total", + "Total number of snapshots", + labels=common_label_names) + + check_success.add_metric([], self.metrics["check_success"]) + snapshots_total.add_metric([], self.metrics["snapshots_total"]) + + for client in self.metrics['clients']: + common_label_values = [ + client["hostname"], + client["username"], + client["snapshot_hash"] + ] + backup_timestamp.add_metric(common_label_values, client["timestamp"]) + backup_files_total.add_metric(common_label_values, client["files_total"]) + backup_size_total.add_metric(common_label_values, client["size_total"]) + backup_snapshots_total.add_metric(common_label_values, client["snapshots_total"]) + + yield check_success + yield snapshots_total + yield backup_timestamp + yield backup_files_total + yield backup_size_total + yield backup_snapshots_total + + def refresh(self): + try: + self.metrics = self.get_metrics() + except Exception as e: + logging.error("Unable to collect metrics from Restic. Error: %s", str(e)) + + def get_metrics(self): + all_snapshots = self.get_snapshots() + latest_snapshots = self.get_snapshots(True) + clients = [] + for snap in latest_snapshots: + stats = self.get_stats(snap['id']) + + time_parsed = re.sub(r'\.[^+-]+', '', snap['time']) + timestamp = time.mktime(datetime.datetime.strptime(time_parsed, "%Y-%m-%dT%H:%M:%S%z").timetuple()) + + snapshots_total = 0 + for snap2 in all_snapshots: + if snap2['hash'] == snap['hash']: + snapshots_total += 1 + + clients.append({ + 'snapshot_hash': snap['hash'], + 'hostname': snap['hostname'], + 'username': snap['username'], + 'timestamp': timestamp, + 'size_total': stats['total_size'], + 'files_total': stats['total_file_count'], + 'snapshots_total': snapshots_total + }) + # todo: fix the commented code when the bug is fixed in restic + # https://github.com/restic/restic/issues/2126 + # stats = self.get_stats() + check_success = self.get_check() + metrics = { + 'check_success': check_success, + 'clients': clients, + # 'size_total': stats['total_size'], + # 'files_total': stats['total_file_count'], + 'snapshots_total': len(all_snapshots) + } + return metrics + + def get_snapshots(self, only_latest=False): + cmd = [ + 'restic', + '-r', self.repository, + '-p', self.password_file, + '--no-lock', + 'snapshots', '--json' + ] + if only_latest: + cmd.extend(['--latest', '1']) + + result = subprocess.run(cmd, stdout=subprocess.PIPE) + if result.returncode != 0: + raise Exception("Error executing restic snapshot command. Exit code: " + str(result.returncode)) + snapshots = json.loads(result.stdout.decode('utf-8')) + for snap in snapshots: + snap['hash'] = self.calc_snapshot_hash(snap) + return snapshots + + def get_stats(self, snapshot_id=None): + # This command is expensive in CPU/Memory (1-5 seconds), + # and much more when snapshot_id=None (3 minutes) -> we avoid this call for now + # https://github.com/restic/restic/issues/2126 + if snapshot_id is not None and snapshot_id in self.stats_cache: + return self.stats_cache[snapshot_id] + + cmd = [ + 'restic', + '-r', self.repository, + '-p', self.password_file, + '--no-lock', + 'stats', '--json' + ] + if snapshot_id is not None: + cmd.extend([snapshot_id]) + + result = subprocess.run(cmd, stdout=subprocess.PIPE) + if result.returncode != 0: + raise Exception("Error executing restic stats command. Exit code: " + str(result.returncode)) + stats = json.loads(result.stdout.decode('utf-8')) + + if snapshot_id is not None: + self.stats_cache[snapshot_id] = stats + + return stats + + def get_check(self): + # This command takes 20 seconds or more, but it's required + cmd = [ + 'restic', + '-r', self.repository, + '-p', self.password_file, + '--no-lock', + 'check' + ] + + result = subprocess.run(cmd, stdout=subprocess.PIPE) + if result.returncode == 0: + return 1 # ok + return 0 # error + + def calc_snapshot_hash(self, snapshot: dict) -> str: + text = snapshot['hostname'] + ",".join(snapshot['paths']) + return hashlib.sha256(text.encode('utf-8')).hexdigest() + + +if __name__ == "__main__": + logging.basicConfig( + format='%(asctime)s %(levelname)-8s %(message)s', + level=logging.getLevelName(os.environ.get("LOG_LEVEL", "INFO")), + datefmt='%Y-%m-%d %H:%M:%S', + handlers=[ + logging.StreamHandler(sys.stdout) + ] + ) + logging.info("Starting Restic Prometheus Exporter ...") + logging.info("It could take a while if the repository is remote.") + + try: + restic_repo_url = os.environ["RESTIC_REPO_URL"] + except Exception: + logging.error("Configuration error. The environment variable RESTIC_REPO_URL is mandatory") + sys.exit(1) + + try: + password_file = os.environ["PASSWORD_FILE"] + except Exception: + logging.error("Configuration error. The environment variable PASSWORD_FILE is mandatory") + sys.exit(1) + + exporter_address = os.environ.get("LISTEN_ADDRESS", "0.0.0.0") + exporter_port = int(os.environ.get("LISTEN_PORT", 8001)) + exporter_refresh_interval = int(os.environ.get("REFRESH_INTERVAL", 60)) + + collector = ResticCollector(restic_repo_url, password_file) + + prometheus_client.core.REGISTRY.register(collector) + prometheus_client.start_http_server(exporter_port, exporter_address) + + logging.info("Server listening in http://%s:%d/metrics", exporter_address, exporter_port) + while True: + logging.info("Refreshing stats every %d seconds", exporter_refresh_interval) + time.sleep(exporter_refresh_interval) + collector.refresh()