OpenSearch — алерт при достижении high disk watermark
OpenSearch на 85 % диска (high watermark) — индексы переходят в read-only, write-API ломается. Нужно поймать раньше, а не когда уже 95 % (flood-stage).
Рецепт
#!/usr/bin/env bash
# /etc/cron.d/os-disk
# */5 * * * * root /opt/os-disk.sh
URL=${OS_URL:-http://localhost:9200}
THRESH=${THRESH:-80} # alert above 80 % usage
DATA=$(curl -fsS "$URL/_cat/allocation?format=json" \
| jq -r '.[] | select(.node != "UNASSIGNED") | [.node, .["disk.percent"]] | @tsv')
OVER=0
echo "$DATA" | while IFS=$'\t' read NODE PCT; do
if [ "${PCT%.*}" -gt "$THRESH" ]; then
OVER=$((OVER + 1))
echo "node $NODE @ ${PCT}%"
fi
done
if [ "$OVER" -gt 0 ]; then
curl -fsS "$HEARTBEAT_URL" --data "disk_over=$OVER,threshold=$THRESH"
exit 2
fi
echo "OK (all nodes below ${THRESH}%)"
То же самое в Enterno.io
Заверните в Enterno heartbeat — увидите retention 30 дней по disk-percent и шаблоны деградации (например рост на 1 % в час), которые подскажут когда планировать апгрейд.
Похожие рецепты
Логи или backup-файлы съедают /var; через 24 часа сервер ляжет. Базовый df-чек один раз в 10 минут спасает от 2 АМ инцидента.
Продакшен ES-кластер ушёл в yellow status. Хочется алерт сразу, не через 30 минут как от Kibana.
logrotate stopped (config-syntax-error при последнем edit, или systemd timer disabled) — главный лог растёт. Никто не заметит пока диск не закончится.