#!/bin/bash textfile_dir={{ node_exporter_textfile_dir }} metric_job="" metric_started=0 metric_bytes=0 metric_signalled="" metric_on_signal() { metric_signalled=$1 exit $((128 + $1)) } metric_install_traps() { trap 'metric_on_signal 1' HUP trap 'metric_on_signal 2' INT trap 'metric_on_signal 15' TERM } metric_status() { if [ -n "${metric_signalled}" ] then echo $((128 + metric_signalled)) else echo "$1" fi } log() { echo "[$(date --rfc-3339=seconds)] ${metric_job}: $*" } metric_previous_success() { local file=${textfile_dir}/backup_${metric_job}.prom if [ -r "${file}" ] then grep "^backup_last_success_timestamp_seconds{backup_job=\"${metric_job}\"} " "${file}" | awk '{ print $2 }' fi } metric_init() { metric_job=$1 metric_started=$(date +%s) mkdir -p ${textfile_dir} metric_install_traps log "start" } metric_archive() { metric_bytes=$(stat -c %s "$1" 2>/dev/null || echo 0) } metric_finish() { local status=$1 local now local success local previous local file=${textfile_dir}/backup_${metric_job}.prom local tmp=${file}.$$ now=$(date +%s) previous=$(metric_previous_success) if [ "${status}" -eq 0 ] then success=${now} log "done in $((now - metric_started))s" else success=${previous:-0} log "FAILED with status ${status} after $((now - metric_started))s" fi cat > "${tmp}" <