From 0d327f89b0d6e0f885718a26e41a9e067bd221c8 Mon Sep 17 00:00:00 2001 From: Filip Pytloun Date: Fri, 7 Apr 2023 09:25:18 +0200 Subject: [PATCH] Add execution duration metrics --- backup.sh | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/backup.sh b/backup.sh index e74316b..79fe8ec 100644 --- a/backup.sh +++ b/backup.sh @@ -2,16 +2,33 @@ BACKUP_PATH=${BACKUP_PATH:-$1} INSTANCE="$(echo ${INSTANCE:-${TAG}} | envsubst)" +KEEP_ARGS=${KEEP_ARGS:-"--keep-hourly 12 --keep-daily 7 --keep-monthly 3"} export RESTIC_REPOSITORY="$(echo ${RESTIC_REPOSITORY} | envsubst)" +echo -n > /tmp/metrics +ts_start=$(date +%s) + +ts=$(date +%s) restic cat config >/dev/null || restic init +echo "restic_init_duration $(echo "$(date +%s) - $ts" | bc)" >> /tmp/metrics + +ts=$(date +%s) restic backup --verbose --tag ${TAG} ${BACKUP_PATH} -restic forget --prune --tag ${TAG} -g paths,tags --keep-hourly 12 --keep-daily 7 --keep-monthly 3 +echo "restic_backup_duration $(echo "$(date +%s) - $ts" | bc)" >> /tmp/metrics + +ts=$(date +%s) +restic forget --prune --tag ${TAG} -g paths,tags ${KEEP_ARGS} +echo "restic_forget_duration $(echo "$(date +%s) - $ts" | bc)" >> /tmp/metrics + # Metrics +ts=$(date +%s) restic stats --json latest > /tmp/stats.json restic snapshots --json latest > /tmp/snapshots.json +echo "restic_stats_duration $(echo "$(date +%s) - $ts" | bc)" >> /tmp/metrics -cat /tmp/stats.json | jq -r '"restic_stats_total_size_bytes \(.total_size)\nrestic_stats_total_file_count \(.total_file_count)"' > /tmp/output -cat /tmp/snapshots.json | jq -r 'max_by(.time) | .time | sub(".[0-9]+Z$"; "Z") | fromdate | "restic_stats_last_snapshot_timestamp \(.)"' >> /tmp/output -cat /tmp/output | curl --data-binary @- "http://prometheus-pushgateway.monitoring.svc.cluster.local:9091/metrics/job/backup/instance/${INSTANCE}" +echo "restic_total_duration $(echo "$(date +%s) - $ts_start" | bc)" >> /tmp/metrics + +cat /tmp/stats.json | jq -r '"restic_stats_total_size_bytes \(.total_size)\nrestic_stats_total_file_count \(.total_file_count)"' >> /tmp/metrics +cat /tmp/snapshots.json | jq -r 'max_by(.time) | .time | sub(".[0-9]+Z$"; "Z") | fromdate | "restic_stats_last_snapshot_timestamp \(.)"' >> /tmp/metrics +cat /tmp/metrics | curl --data-binary @- "http://prometheus-pushgateway.monitoring.svc.cluster.local:9091/metrics/job/backup/instance/${INSTANCE}"