#!/bin/sh set -eu PROM_FILE=/output/metrics TMP_FILE=$PROM_FILE.$$ LIST=$(borg list | awk '{print $1}') COUNTER=0 for i in $LIST; do COUNTER=$((COUNTER+1)) done BORG_INFO=$(borg info "::$i") ARCHIVE_PREFIX=$(echo "$BORG_INFO" | grep "Archive name" | awk '{print $3}' | awk -F- '{print $1}') echo "backup_count{archive=\"${ARCHIVE_PREFIX}\"} $COUNTER" > "$TMP_FILE" { echo "backup_files{archive=\"${ARCHIVE_PREFIX}\"} $(echo "$BORG_INFO" | grep "Number of files" | awk '{print $4}')" echo "backup_chunks_unique{archive=\"${ARCHIVE_PREFIX}\"} $(echo "$BORG_INFO" | grep "Chunk index" | awk '{print $3}')" echo "backup_chunks_total{archive=\"${ARCHIVE_PREFIX}\"} $(echo "$BORG_INFO" | grep "Chunk index" | awk '{print $4}')" } >> "$TMP_FILE" function calc_bytes { NUM=$1 UNIT=$2 case "$UNIT" in B) echo "$NUM" | awk '{ print $1 }' ;; kB) echo "$NUM" | awk '{ print $1 * 1024 }' ;; MB) echo "$NUM" | awk '{ print $1 * 1024 * 1024 }' ;; GB) echo "$NUM" | awk '{ print $1 * 1024 * 1024 * 1024 }' ;; TB) echo "$NUM" | awk '{ print $1 * 1024 * 1024 * 1024 * 1024 }' ;; esac } # timings LAST_START=$(echo "$BORG_INFO" | grep "Time (start)" | awk '{print $4" "$5}') LAST_END=$(echo "$BORG_INFO" | grep "Time (end)" | awk '{print $4" "$5}') LAST_START_TIMESTAMP=$(date -d "$LAST_START" +"%s") LAST_END_TIMESTAMP=$(date -d "$LAST_END" +"%s") # byte sizes LAST_SIZE=$(calc_bytes $(echo "$BORG_INFO" | grep "This archive" | awk '{print $3}') $(echo "$BORG_INFO" | grep "This archive" | awk '{print $4}')) LAST_SIZE_COMPRESSED=$(calc_bytes $(echo "$BORG_INFO" | grep "This archive" | awk '{print $5}') $(echo "$BORG_INFO" | grep "This archive" | awk '{print $6}')) LAST_SIZE_DEDUP=$(calc_bytes $(echo "$BORG_INFO" | grep "This archive" | awk '{print $7}') $(echo "$BORG_INFO" | grep "This archive" | awk '{print $8}')) TOTAL_SIZE=$(calc_bytes $(echo "$BORG_INFO" | grep "All archives" | awk '{print $3}') $(echo "$BORG_INFO" | grep "All archives" | awk '{print $4}')) TOTAL_SIZE_COMPRESSED=$(calc_bytes $(echo "$BORG_INFO" | grep "All archives" | awk '{print $5}') $(echo "$BORG_INFO" | grep "All archives" | awk '{print $6}')) TOTAL_SIZE_DEDUP=$(calc_bytes $(echo "$BORG_INFO" | grep "All archives" | awk '{print $7}') $(echo "$BORG_INFO" | grep "All archives" | awk '{print $8}')) { echo "backup_last_start{archive=\"${ARCHIVE_PREFIX}\"} $LAST_START_TIMESTAMP" echo "backup_last_end{archive=\"${ARCHIVE_PREFIX}\"} $LAST_END_TIMESTAMP" echo "backup_last_size{archive=\"${ARCHIVE_PREFIX}\"} $LAST_SIZE" echo "backup_last_size_compressed{archive=\"${ARCHIVE_PREFIX}\"} $LAST_SIZE_COMPRESSED" echo "backup_last_size_dedup{archive=\"${ARCHIVE_PREFIX}\"} $LAST_SIZE_DEDUP" echo "backup_total_size{archive=\"${ARCHIVE_PREFIX}\"} $TOTAL_SIZE" echo "backup_total_size_compressed{archive=\"${ARCHIVE_PREFIX}\"} $TOTAL_SIZE_COMPRESSED" echo "backup_total_size_dedup{archive=\"${ARCHIVE_PREFIX}\"} $TOTAL_SIZE_DEDUP" } >> "$TMP_FILE" mv "$TMP_FILE" "$PROM_FILE"