Files
pg_backup/docker-entrypoint.sh
Maksim Syomochkin 33ea1411e1
All checks were successful
Build Docker image / docker (push) Successful in 4m23s
add status and curl verbose
2025-05-11 18:48:57 +03:00

50 lines
1.5 KiB
Bash

#!/bin/bash
set -eo pipefail
: "${POSTGRES_HOST:?Please set the environment variable.}"
: "${POSTGRES_USER:?Please set the environment variable.}"
: "${POSTGRES_PASSWORD:?Please set the environment variable.}"
: "${AWS_ACCESS_KEY_ID:?Please set the environment variable.}"
: "${AWS_SECRET_ACCESS_KEY:?Please set the environment variable.}"
: "${RESTIC_PASSWORD:?Please set the environment variable.}"
: "${RESTIC_REPOSITORY:?Please set the environment variable.}"
: "${RESTIC_HOST:?Please set the environment variable.}"
POSTGRES_PORT="${POSTGRES_PORT:-5432}"
POSTGRES_SSL_MODE=${POSTGRES_SSL_MODE:-"require"}
RESTIC_TAG=${RESTIC_TAG:-"pg_basebackup"}
LOKI_URL="http://loki.monitoring:3100/loki/api/v1/push"
SERVICE_NAME="pg_backup"
send_loki_status() {
local status="$1"
local timestamp_ns=$(date +%s%N)
local level="info"
if [ "$status" = "failed" ]; then
level="error"
fi
curl -v -H "Content-Type: application/json" \
-s -X POST "$LOKI_URL" \
--data-raw "{
\"streams\": [
{
\"stream\": { \"service_name\": \"$SERVICE_NAME\", \"level\": \"$level\" },
\"values\": [
[ \"$timestamp_ns\", \"$status\" ]
]
}
]
}"
}
trap 'send_loki_status failed' ERR
PGPASSWORD=${POSTGRES_PASSWORD} pg_basebackup -h "${POSTGRES_HOST}" -d "sslmode=${POSTGRES_SSL_MODE}" -D /tmp/backup -U ${POSTGRES_USER} -F t -z -P
restic --verbose backup -H ${RESTIC_HOST} --tag ${RESTIC_TAG} /tmp/backup
restic forget --prune --keep-within 14d --host ${RESTIC_HOST}
send_loki_status "done"