Настройка мониторинга серверов и приложений

Настраиваю мониторинг для небольших IT-команд: метрики серверов и приложений, сбор логов, проверки доступности снаружи и алерты в Telegram. Открытый стек Prometheus, VictoriaMetrics, Grafana и Loki, без платных лицензий.

Цель не красивые графики, а короткий простой: вы узнаёте о сбое за минуту, видите причину на одном экране и не получаете ночью уведомлений, на которые не нужно реагировать.

  • Prometheus, Grafana, Loki
  • Алерты в Telegram
  • Серверы и Kubernetes

Что входит в настройку мониторинга

Можно начать с минимума, метрик и алертов для одного сервера, и добавлять остальное по мере роста.

Метрики серверов

Базовый слой, без которого остальное не имеет смысла.

  • ✓процессор, память, диски, сеть
  • ✓место на дисках с прогнозом заполнения
  • ✓перезапуски сервисов и ошибки ядра
  • ✓node_exporter на каждом сервере

Метрики приложений

Показывают, что видит пользователь, а не только сервер.

  • ✓время ответа и доля ошибок API
  • ✓очереди, фоновые задачи, кеш
  • ✓PostgreSQL, MySQL, Redis
  • ✓бизнес-метрики: заказы, регистрации, платежи

Сбор логов

Все логи в одном месте с поиском, вместо входа по SSH на каждый сервер.

  • ✓сбор в Loki или ELK
  • ✓поиск и фильтры в Grafana
  • ✓срок хранения под бюджет
  • ✓алерты по ошибкам в логах

Проверки снаружи

Сервер может работать, а сайт при этом быть недоступен клиентам.

  • ✓доступность сайта и API
  • ✓срок действия SSL-сертификатов и доменов
  • ✓проверка ключевых сценариев: вход, оплата
  • ✓страница статуса для клиентов

Алерты

Хороший алерт говорит, что сломалось и что делать. Плохой приучает алерты игнорировать.

  • ✓Telegram, Пачка, почта, Slack
  • ✓пороги по реальной нагрузке, без ложных срабатываний
  • ✓группировка: один сбой - одно сообщение
  • ✓ссылка на график и инструкцию в тексте алерта

Дашборды

Экран, по которому за минуту понятно, всё ли в порядке.

  • ✓все сервисы на одном экране
  • ✓отдельные панели для разработчиков и руководителя
  • ✓история за месяцы для планирования ресурсов
  • ✓дашборды хранятся в Git

Мониторинг Kubernetes

У кластера свои метрики: поды, ноды, ресурсы.

  • ✓kube-prometheus-stack или VictoriaMetrics Operator
  • ✓перезапуски подов и нехватка памяти
  • ✓использование requests и limits
  • ✓состояние нод и хранилища

Хранение и стоимость

Мониторинг не должен стоить как ещё один продакшен.

  • ✓VictoriaMetrics для долгого хранения метрик
  • ✓собираем нужные метрики, а не все подряд
  • ✓сроки хранения метрик и логов
  • ✓отдельный сервер, чтобы сбой не отключил и мониторинг

Стоимость настройки мониторинга

Перед началом называю оценку в часах, работы начинаются после вашего согласия.

ФорматЦенаЧто входит
Аудит мониторингаот 10 000 ₽что собирается, какие сбои останутся незамеченными, шум в алертах; отчёт с планом
Настройка3 000 ₽/часметрики, логи, проверки снаружи, алерты и дашборды
Обслуживание20 000 ₽/месреакция на алерты, донастройка порогов, обновления стека мониторинга

Примеры расчёта

ЗадачаОценка
Метрики и алерты в Telegram для 1-3 серверов4-6 часов
Сбор логов в Loki с поиском в Grafana3-6 часов
Проверка доступности сайта и сроков сертификатов1-2 часа
Разбор шумных алертов: убрать ложные, добавить нужные2-4 часа

Как проходит настройка

  1. 1

    Что важно бизнесу

    Выясняем, какие сбои стоят денег: недоступный сайт, остановленная оплата, отставшая очередь. С них и начинаем.

  2. 2

    Что уже есть

    Смотрю, какие метрики и логи уже собираются и кто получает алерты. Часто часть работы уже сделана.

  3. 3

    Базовый мониторинг

    Метрики серверов, проверки снаружи и первые алерты. Обычно это первый день работы.

  4. 4

    Приложения и логи

    Добавляю метрики приложений, сбор логов и дашборды для команды.

  5. 5

    Настройка порогов

    Пару недель смотрю на срабатывания и убираю шум, пока каждый алерт не станет поводом действовать.

Когда нужен мониторинг

О сбое сообщают клиенты

Сайт лежал час, а узнали из чата поддержки. Проверка снаружи и алерт сокращают это до минут.

Алертов так много, что их не читают

Канал с сотней уведомлений в день никто не открывает, и важный алерт тонет. Переделываю пороги и группировку.

Причину сбоя ищут часами

Логи на разных серверах, графиков нет, каждый инцидент расследуют с нуля. Когда всё в одном месте, причина видна сразу.

Диск заполнился внезапно

На самом деле он рос неделями. Прогноз заполнения предупреждает за несколько дней.

Prometheus, Zabbix или облачный мониторинг

Три подхода, между которыми обычно выбирают:

Prometheus и GrafanaZabbixОблачный мониторинг
Сильная сторонасервисы, контейнеры, Kubernetesжелезо, сеть, офисная инфраструктураничего не нужно ставить
Настройкаконфигурация в коде, в Gitв основном через веб-интерфейсв консоли провайдера
ЛогиLoki в той же Grafanaограниченноотдельная платная услуга
Стоимостьбесплатно, нужен сервербесплатно, нужен серверплата за объём метрик и логов

Для веб-сервисов и Kubernetes я ставлю Prometheus или VictoriaMetrics с Grafana. Если у вас уже работает Zabbix и он устраивает, менять его не обязательно: Grafana умеет показывать и его данные.

Какие алерты нужны в первую очередь

Минимальный набор, который ловит большинство реальных сбоев:

  1. Сайт или API не отвечает снаружи дольше 1-2 минут.
  2. Доля ошибок 5xx выше обычной.
  3. Диск заполнится в ближайшие дни при текущем темпе: в Prometheus это predict_linear.
  4. Сервис перезапускается раз за разом, или ядро завершило процесс из-за нехватки памяти.
  5. SSL-сертификат истекает через 14 дней.
  6. Бэкап не выполнялся больше суток.

Остальное добавляется, когда понятно, что ломается именно у вашего проекта. Начать с сотни правил из готового набора - верный путь к шуму.

Технологии

Метрики
PrometheusVictoriaMetricsAlertmanagernode_exporter
Логи
LokiELK
Визуализация
Grafana
Проверки снаружи
Blackbox exporter
Kubernetes
kube-prometheus-stackVictoriaMetrics Operator
Уведомления
TelegramПачкапочта

Примеры работ

IPTV-сервис: о сбоях узнавали от абонентов

Мониторинга не было: о падении стрима, базы или API узнавали из жалоб абонентов.

Настроил Prometheus и Grafana для стримов, базы и API с алертами в Telegram, подключил контроль ежедневных бэкапов.

~100 ТБтрафика в месяц под наблюдением

ML-платформа: алерты в рабочий чат

После переезда в Selectel нужно было видеть состояние всех сервисов и узнавать о сбоях там, где общается команда.

Собрал метрики в VictoriaMetrics, настроил дашборды и отправку алертов в Пачку.

10+сервисов под мониторингом

Почему со мной удобно

Открытый стек

Prometheus, Grafana и Loki бесплатны. Вы платите только за сервер, на котором они работают.

Всё в коде

Правила алертов и дашборды лежат в Git. Их можно проверить, откатить и перенести.

Сам получаю эти алерты

На обслуживании алерты приходят и мне, поэтому шумные правила мне так же неудобны, как вам.

Смотрю как разработчик

Много лет писал код и знаю, какие метрики помогают найти ошибку в приложении, а какие только занимают место.

Частые вопросы

Сколько стоит настройка мониторинга? +

Метрики и алерты в Telegram для 1-3 серверов обычно занимают 4-6 часов, по 3 000 ₽/час. Аудит существующего мониторинга стоит от 10 000 ₽, обслуживание с реакцией на алерты - 20 000 ₽ в месяц.

Zabbix или Prometheus: что выбрать? +

Для серверов с веб-сервисами и для Kubernetes удобнее Prometheus или VictoriaMetrics с Grafana: конфигурация в коде и готовые экспортеры почти для всего. Zabbix сильнее в мониторинге сетевого оборудования и офисной инфраструктуры.

Где будет работать мониторинг? +

На отдельном небольшом сервере или в вашем облаке, но не на том же сервере, что и проект: иначе при его падении пропадёт и мониторинг.

Сколько стоит сервер для мониторинга? +

Для нескольких серверов хватает VPS с 2 ядрами и 4 ГБ памяти. Больше всего места занимают логи, срок их хранения подбираем под бюджет.

Кто будет реагировать на алерты? +

Можно оставить алерты команде, тогда к каждому я пишу инструкцию. Или взять обслуживание, и на алерты буду реагировать я.

Можно ли получать алерты в Telegram? +

Да, это самый частый вариант. Также Пачка, почта, Slack и любой сервис, который принимает вебхуки.

Оставить заявку

Напишите, сколько у вас серверов, что на них работает и как вы сейчас узнаёте о сбоях. Предложу минимальный набор, с которого стоит начать.

Смотрите также