Files
homelab-infra/services/posture-check/docker-critical-events.sh
T
2026-05-17 14:57:45 +02:00

34 lines
1005 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
NTFY_SCRIPT="${NTFY_SCRIPT:-/mnt/user/services/homelab-infra/ops/restore-tests/send-ntfy.sh}"
NTFY_TOPIC="${NTFY_TOPIC:-homelab-alerts}"
SEND_NTFY="${SEND_NTFY:-1}"
OUTPUT_PATH="${OUTPUT_PATH:-/mnt/user/services/posture-check/docker-critical-events-last.log}"
EVENT_FILTERS="${EVENT_FILTERS:---filter event=die --filter event=oom --filter event=kill}"
mkdir -p "$(dirname "$OUTPUT_PATH")"
send_event() {
local line="$1"
local timestamp
timestamp="$(date -Iseconds)"
printf '%s %s\n' "$timestamp" "$line" | tee -a "$OUTPUT_PATH" >/dev/null
if [ "$SEND_NTFY" = "1" ] && [ -f "$NTFY_SCRIPT" ]; then
bash "$NTFY_SCRIPT" "$NTFY_TOPIC" "Docker critical event" "$line" high || true
fi
}
if ! command -v docker >/dev/null 2>&1; then
echo "docker command not found" >&2
exit 127
fi
# shellcheck disable=SC2086
docker events $EVENT_FILTERS --format '{{json .}}' | while IFS= read -r event; do
[ -n "$event" ] || continue
send_event "$event"
done