Skip to content

Prometheus — алерт когда scrape-target unreachable

Prometheus сам жив, но один из targets (`up==0`) — данные перестали течь, графики пустые, alertmanager-правила, основанные на этом target, не fire-ят (нет данных = нет алерта).

Рецепт

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

PROM=${PROM_URL:-http://localhost:9090}

DOWN=$(curl -fsS "$PROM/api/v1/query" --data-urlencode 'query=up==0' \
  | jq -r '.data.result | length')

if [ "${DOWN:-0}" -gt 0 ]; then
  TARGETS=$(curl -fsS "$PROM/api/v1/query" --data-urlencode 'query=up==0' \
    | jq -r '.data.result | map(.metric.instance) | join(",")')
  curl -fsS "$HEARTBEAT_URL" --data "down_targets=$DOWN,instances=$TARGETS"
  exit 2
fi
echo "OK (no down targets)"

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

Поставьте Enterno heartbeat с интервалом 1 мин — meta-monitor «monitoring monitoring», который alert-нёт когда Prometheus сам не видит target раньше пользователя.

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

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