Skip to content

OAuth — алерт по росту ошибок в callback-эндпоинте

OAuth-callback (`/auth/callback`) начал отдавать 4xx — пользователи не могут залогиниться, но common health-check на `/` возвращает 200.

Рецепт

bash
#!/usr/bin/env bash
# /etc/cron.d/oauth-callback
# */1 * * * * root /opt/oauth-callback.sh

LOG=${LOG:-/var/log/nginx/access.log}
PATH_REGEX=${PATH_REGEX:-/auth/callback}
WINDOW=60
ERR_PCT=${ERR_PCT:-10}                # alert when 4xx > 10 %
SINCE=$(date -d "-${WINDOW} seconds" '+%d/%b/%Y:%H:%M:%S')

read TOTAL ERR < <(awk -v since="$SINCE" -v re="$PATH_REGEX" '
  $4 >= "["since && $7 ~ re {
    t++
    if ($9 ~ /^4/) e++
  }
  END { print t+0, e+0 }
' "$LOG")

[ "$TOTAL" -lt 5 ] && exit 0          # too few requests to judge

PCT=$((ERR * 100 / TOTAL))
if [ "$PCT" -gt "$ERR_PCT" ]; then
  curl -fsS "$HEARTBEAT_URL" --data "oauth_4xx=${PCT}%,total=$TOTAL"
  exit 2
fi
echo "OK (${PCT}% 4xx)"

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

В Enterno HTTP monitor поставьте проверку именно на `/auth/callback?test=1` — пользовательская боль ловится в первые 60 сек, а не из support-тикетов.

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

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