You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
3.0 KiB
Bash

#!/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"