Дашборды и оповещения
Что это такое
Дашборд — это набор графиков, отвечающих на вопрос, который у кого-то действительно есть; оповещение — правило, решающее, что человеку пора действовать. И то и другое строится из одних и тех же сигналов и отказывает одинаково: отвечает на вопрос, которого никто не задавал, или срабатывает так часто, что на него перестают смотреть. Искусство — выбрать немного того и другого, чтобы взгляд был информативным, а уведомление осмысленным.
Почему это важно
Дежурство хорошо настолько, насколько хороши его оповещения. Оповещение, срабатывающее на симптом, по которому человек может действовать, ценно; то, что срабатывает на причину, на которую никто не может повлиять, приучает команду игнорировать уведомления, и следующее настоящее пропускают. У дашбордов та же проблема в более медленном темпе: стена метрик хостов выглядит как усердие и ничего не говорит о том, обслуживают ли ещё пользователей.
Ключевые идеи
Оповещайте о симптомах, которые чувствуют пользователи, а не о причинах
Полезные оповещения называют условие, которое испытывает пользователь: высокая доля ошибок, медленные запросы, очередь не разгружается. Оповещения о причинах, например высокий процессор, могут предшествовать беде, но процессор бывает высоким по хорошим причинам и низким, пока сервис падает. Оповещения о симптомах встречаются реже и почти всегда стоят действия.
оповещение: доля ошибок за пять минут выше 2% у этого сервиса
не: процессор выше 80% где-то
У каждого оповещения есть владелец и действие
Если получатель не может действовать, оповещение — это уведомление, и место ему в другом канале. Если сервисом никто не владеет, у оповещения нет получателя, и места ему нет нигде. Записать предполагаемое действие рядом с правилом — на удивление действенный фильтр: правила, для которых действие не описать, обычно удаляют.
Порог должен отражать допуск, а не среднее
Оповещение на двойной от нормы частоте срабатывает на каждом обычном пике; выставленное на десятикратную — только когда ситуация уже тяжёлая. Порог, выведенный из цели надёжности сервиса, а не из формы прошлонедельного графика, даёт число, которое переживает рост трафика.
Частота, ошибки, длительность и насыщение покрывают большинство инцидентов
Для каждого сервиса частота запросов показывает нагрузку, доля ошибок — отказы, длительность — видимую пользователю медлительность, а насыщение — ресурс, подходящий к пределу. Построить их первыми для каждого сервиса отвечает на больше инцидентов, чем большое собрание правил под конкретные хосты.
Дашборды должны быть слоистыми
Обзор для всей системы, средний слой по сервису с четырьмя сигналами и подробность для углубления. Обзор отвечает на вопрос, что-то не так, за секунды; подробность отвечает, где. Дашборд, который начинается с подробности, под давлением бесполезен.
Система оповещения, которая никогда не срабатывала, не проверена. Правила, которые можно нарочно прогнать, и привычка проверять, доходят ли уведомления, — вот что делает систему надёжной, когда это важно. То же относится к дашборду, на который никто не смотрел с момента создания.
Оповещения устаревают и накапливаются
Каждое правило переживает инцидент, ради которого его завели. Периодический пересмотр набора, удаление того, по чему никто не действует, и слияние дубликатов держат остаток правдоподобным. Ценность системы оповещения обратно пропорциональна её шуму.
Практика
Напишите одно оповещение о симптоме из цели
Возьмите сервис с заявленной целью надёжности и напишите одно правило, которое срабатывает, когда доля ошибок за пять минут превышает допуск, подразумеваемый этой целью.
Готово, когда: правило называет сервис, порог, окно и действие, которое должен предпринять получатель.
Сведите дашборд к четырём сигналам
Возьмите существующий дашборд и замените его обзором четырёх сигналов по каждому сервису, оставив старый доступным для углубления.
Готово, когда: человек, незнакомый с системой, по одному обзору может сказать, здорова ли система.
Частые ошибки
- Оповещать о причинах, а не о симптомах — оповещение срабатывает без видимой пользователю проблемы и теряет доверие; исправить: оповещайте о том, что испытывают пользователи.
- Срабатывать на каждом обычном пике — команда учится игнорировать уведомления; исправить: выводите пороги из цели надёжности, а не из прошлонедельного графика.
- Создавать оповещение, по которому никто не может действовать — оно становится шумом; исправить: дайте каждому правилу владельца и записанное действие либо удалите его.
- Строить подробные дашборды первыми — обзор под давлением бесполезен; исправить: слои — обзор, сервис, подробность.
- Оставлять набор оповещений без пересмотра — устаревшие правила накапливаются и размывают те, что важны; исправить: пересматривайте и удаляйте регулярно.
Что читать дальше
- Метрики, логи и трассировка (06-cloud-devops/18-monitoring-observability-prometheus-grafana/01-metrics-logs-and-traces) — сигналы, из которых построены эти графики и правила.
- Мониторинг и наблюдаемость (Prometheus / Grafana) (06-cloud-devops/18-monitoring-observability-prometheus-grafana) — дисциплина, к которой относятся обе эти практики.
- Обеспечение надёжности сайтов (06-cloud-devops/23-site-reliability-engineering) — где определяется цель надёжности, из которой выводится каждый здешний порог.