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
77 lines
3.0 KiB
Bash
2 years ago
|
#!/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"
|