57 lines
1.1 KiB
Bash
Executable File
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"
|