Files
opt/borgmatic/scripts/run_one.sh

57 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
CONFIG_FILE="$1"
LOKI_HOST=host
MQTT_BROKER=host
MQTT_TOPIC="borgmatic/stats/$CONFIG_FILE"
MQTT_USER="borgmatic"
MQTT_PASSWORD="eH2dAiG7siCIFdB7qX0MHwEFzcr9aqUi"
# Run Borgmatic and extract archive stats as JSON
ARCHIVE_JSON=$(borgmatic \
--stats \
-v 0 \
-c "/config/$CONFIG_FILE.yaml" \
--log-json \
--no-color \
--json \
| tail -n1 \
| jq '.[0].archive'
)
echo $ARCHIVE_JSON
echo "----- ARCHIVE_JSON"
echo $ARCHIVE_JSON
echo "-----"
# Publish to MQTT
mosquitto_pub -h "$MQTT_BROKER" \
-t "$MQTT_TOPIC" \
-u "$MQTT_USER" \
-P "$MQTT_PASSWORD" \
-m "$ARCHIVE_JSON"
# Build Loki payload
LOKI_PAYLOAD=$(jq -n \
--arg config "$CONFIG_FILE" \
--argjson archive "$ARCHIVE_JSON" \
--arg now "$(date +%s%N)" \
'{streams: [
{
stream: {job: "borgmatic", config: $config},
values: [[$now, ($archive | tostring)]]
}
]}')
echo "----- LOKI_PAYLOAD"
echo $LOKI_PAYLOAD
echo "-----"
# Send to Loki
curl -s -X POST "http://$LOKI_HOST:3100/loki/api/v1/push" \
-H "Content-Type: application/json" \
-d "$LOKI_PAYLOAD"