Наблюдаемость: метрики, алерты, логи / Итоговая лаба
Вторая машина без присмотра
Ситуация
Неделю назад вторую машину, node2, поставили под присмотр node1 и закрыли заявку. На node1 работают
Prometheus, Alertmanager и сборщик логов rsyslog. Уведомления дежурным Alertmanager шлёт в учебный
webhook lab-webhook: каждое полученное уведомление он дописывает строкой в
/var/lib/lab-webhook/notifications.jsonl.
Вчера node2 полчаса не отвечал, и дежурным ничего не пришло. Когда стали разбираться, выяснилось больше: Prometheus на node1 метрик node2 не видит, а свежих логов node2 на сборщике нет.
node1 — твой терминал. Команды на node2 выполняй через SSH: ssh node2 'команда' или войди в
оболочку — ssh node2, назад — exit. sudo на обеих машинах работает без пароля. Браузера к машинам
нет: Prometheus и Alertmanager смотри из терминала — curl -s localhost:9090/api/v1/… | jq,
promtool query instant http://localhost:9090 '<выражение>', amtool alert.
Задача
- Prometheus на node1 собирает метрики node2: цель
node2:9100в заданииnode— в состоянииup. - Когда node2 перестаёт отвечать, алерт
NodeDownо нём (instance="node2:9100") не позже чем через минуту переходит вfiring. Пока node2 работает,NodeDownо нём не горит. - Уведомление о сработавшем
NodeDownдоходит до дежурных — новой строкой в/var/lib/lab-webhook/notifications.jsonl. - Логи node2 собираются на node1: строка, отправленная на node2 командой
logger, появляется в файле в каталоге/var/log/remote/node2/на node1.
«Проверить» само ненадолго останавливает экспортёр на node2 (prometheus-node-exporter), отправляет
с node2 строку logger -t lab-verify … и возвращает всё как было. Проверка ждёт алерт и строку и
занимает до полутора минут.
Ограничения
- Всё должно пережить перезагрузку обеих машин: службы включены, настройки лежат в файлах, а работающие службы перечитали эти файлы после правки.
- Межсетевой экран на node2 не выключай — открой в нём только то, что нужно для наблюдения. SSH с node1 на node2 не закрывай: другого входа на node2 нет.
- Учебный webhook
lab-webhookи его файл не трогай.
Интернета в лабе нет — только сеть между node1 и node2, всё нужное установлено. Иди по каждой цепочке от начала до конца и после каждой правки смотри на результат тем же способом, каким его видит проверка: цели —
curl -s localhost:9090/api/v1/targets | jq, алерты —curl -s localhost:9090/api/v1/alerts | jqиamtool alert, уведомления —tail /var/lib/lab-webhook/notifications.jsonl, логи —loggerна node2 иsudo ls -R /var/log/remote/на node1.
Цели лабы
0 из 4-
Prometheus на node1 собирает метрики node2 — цель node2:9100 в задании node в состоянии up; межсетевой экран node2 включён, и всё это переживёт перезагрузку — ещё не проверялась
-
Когда node2 перестаёт отвечать, алерт NodeDown о нём не позже чем через минуту в firing, а пока node2 работает — не горит; правило загружено из файла — ещё не проверялась
-
Уведомление о сработавшем NodeDown доходит до дежурных — в учебный webhook на node1; Prometheus и Alertmanager работают с настройками из своих файлов — ещё не проверялась
-
Строка logger с node2 появляется на node1 в /var/log/remote/node2/; rsyslog на обеих машинах работает с настройками из файлов и запустится сам — ещё не проверялась