Skip to content

Kubernetes — алерт когда CronJob suspended-нут

Кто-то поставил `spec.suspend: true` на CronJob (debug, или спешка релиза) и забыл вернуть. Daily-таска не запускается, отчёты не генерируются — узнаешь только когда finance спросит.

Рецепт

bash
#!/usr/bin/env bash
# /etc/cron.d/cj-suspended
# 0 9 * * * root /opt/cj-suspended.sh

CONTEXT=${KUBE_CONTEXT:-prod}

SUSP=$(kubectl --context "$CONTEXT" get cronjobs -A -o json \
  | jq -r '[.items[] | select(.spec.suspend == true) | "\(.metadata.namespace)/\(.metadata.name)"]')

COUNT=$(echo "$SUSP" | jq 'length')

if [ "${COUNT:-0}" -gt 0 ]; then
  NAMES=$(echo "$SUSP" | jq -r '.[]' | head -10 | tr '\n' ',')
  curl -fsS "$HEARTBEAT_URL" --data-urlencode "cj_suspended=$COUNT,names=$NAMES"
  exit 2
fi
echo "OK (no suspended CronJobs)"

То же самое в Enterno.io

Подключите Enterno heartbeat — daily-проверка показывает «список того что не работает» и не даст забыть включить обратно.

Настроить HTTP monitor → ← Все рецепты

Похожие рецепты

Readiness-probe внутри пода есть, но никто не видит, что LB отказался роутить трафик на новый deploy.