#!/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:-kallilab-critical}" 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