Logging pipeline — алерт когда ingest rate упал
Filebeat / Logstash тихо упал на одном edge-сервере. Ingest rate в Elasticsearch снижен на 40%, но dashboards никто не смотрит. Запросы в Sentry без логов = слепота.
Рецепт
#!/usr/bin/env bash
# Compares 1-minute index document count delta against expected floor.
ES="${ES:-http://localhost:9200}"
INDEX_PREFIX="${INDEX_PREFIX:-logs-}"
MIN_DOCS_PER_MIN="${MIN_DOCS_PER_MIN:-100}"
NOW=$(date -u -d '1 min ago' +"%Y-%m-%dT%H:%M:%SZ")
COUNT=$(curl -sS -X POST "$ES/${INDEX_PREFIX}*/_count" \
-H "Content-Type: application/json" \
-d "{\"query\":{\"range\":{\"@timestamp\":{\"gte\":\"$NOW\"}}}}" \
| python3 -c 'import json,sys; print(json.load(sys.stdin).get("count", 0))')
[ -z "$COUNT" ] && { echo "no-data"; exit 1; }
[ "$COUNT" -lt "$MIN_DOCS_PER_MIN" ] && echo "low $COUNT" || echo "ok $COUNT"
То же самое в Enterno.io
Endpoint + Enterno HTTP-монитор с keyword "ok" каждую минуту = pager если pipeline упал. Дополнительно heartbeat на сам Filebeat — second line of defense.
Похожие рецепты
Нужно убедиться, что сайт возвращает 2xx каждую минуту, и получить алерт в Slack/Telegram при падении.
Самоподписанный скрипт проверяет SSL сертификат и шлёт алерт за 14 дней до expiry.
Нужно ловить момент, когда реплика начала отставать от мастера больше чем на 10 секунд.