#!/usr/bin/env bash ENVFIILE=/etc/prometheus/node_exporter/borg_exporter.env [[ -f "$ENVFIILE" ]] && source "$ENVFIILE" REPO_BASE=${REPO_BASE:-/home/backup/borg} TEXTFILE_COLLECTOR_DIR=${TEXTFILE_COLLECTOR_DIR:-/var/lib/node_exporter/} PROM_FILE=$TEXTFILE_COLLECTOR_DIR/backup.prom TMP_FILE=$PROM_FILE.$$ mapfile -t REPOS < <(find "$REPO_BASE" -type d -name data -print0 | xargs --null -n1 dirname) if [[ -n "${REPOS[*]}" ]] ; then echo "# TYPE backup_age_seconds gauge" echo "# TYPE backup_total_size_bytes gauge" fi >> "$TMP_FILE" for repository in "${REPOS[@]}" ; do hostname=${HOSTNAMES[$repository]:-$repository} if [[ "$hostname" == "$repository" ]] ; then hostname=${hostname/"${REPO_BASE}/"//} hostname=${hostname/"/backup"//} fi index_base="$repository/index" age_seconds="$(( $(date +%s) - $(date +%s -r "$index_base".*) ))" size="$(du -s "$repository" | cut -f1)" echo backup_age_seconds\{host=\""$hostname"\",repository=\""$repository"\"\} "$age_seconds" echo backup_total_size_bytes\{host=\""$hostname"\",repository=\""$repository"\"\} "$size" done >> "$TMP_FILE" mv "$TMP_FILE" "$PROM_FILE"