Все мы с этим сталкивались: вроде бы сервис работает, графики зелёные, ресурсы свободны — а пользователи всё равно жалуются. Открываешь мониторинг — CPU в порядке, память не забита, места на диске полно. А люди продолжают писать: «У вас тормозит». Знакомо?

Давайте разберёмся, как настроить мониторинг так, чтобы проблемы ловились сразу — ещё до того, как начнут ломиться сообщения в поддержку.

Почему стандартный мониторинг не спасает

Обычно мы смотрим на классические метрики:

  • нагрузка на процессор

  • использование памяти

  • заполненность дисков

Они, конечно, важны — но не всегда дают полную картину. Например: процессор загружен на 50%, память спокойна, диск чистый. А в это время какой-то запрос к API повис и тянет за собой очередь. Пользователи получают тайм-ауты — а на графиках всё отлично.

У нас, например, была ситуация: по метрикам всё хорошо, а юзеры жалуются — «тормоза». Оказалось, мы следили только за состоянием железа, а не за состоянием самих сервисов. Отсюда и проблема.

Что нужно мониторить на самом деле

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

1. Следим за ошибками API

Ошибки 500 и прочие сбои — это первое, что должно сразу бросаться в глаза. Если их становится много — значит, где-то что-то поломалось.

Как настроить:

  • Собираем ошибки через Prometheus.

  • Заводим алерт в Alertmanager — чтобы уведомление приходило, если ошибок стало слишком много за короткий промежуток времени.

Пример алерта:

- alert: HighAPIErrorRate
  expr: rate(http_requests_total{status="500"}[1m]) > 5
  for: 1m
  labels:
    severity: critical
  annotations:
    summary: "API ошибок больше 5 за минуту"

2. Время отклика — не забываем про скорость

Процессор может спать, а сервис — тормозить. Если пользователю приходится ждать 3-4 секунды — скорее всего, он просто уйдёт.

Как настроить:

  • Считаем время отклика через Prometheus.

  • В Grafana строим дашборды.

  • Добавляем алерты — например, если 95-й перцентиль больше 2 секунд.

Пример алерта:

- alert: SlowResponseTime
  expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[1m])) > 2
  for: 2m
  labels:
    severity: high
  annotations:
    summary: "Медленный отклик на 95 процентиле"

3. Логи — источник правды

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

Как настроить:

  • Собираем логи через Loki или ElasticSearch.

  • Настраиваем фильтры по ключевым словам: ERROR, Exception, Timeout и т.д.

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

Пример конфига Loki:

scrape_configs:
  - job_name: 'api_logs'
    static_configs:
      - targets: ['localhost:3100']
        labels:
          job: 'api'

4. Уведомления — чтобы не проспать аварию

Если что-то пошло не так — нужно знать об этом сразу. Алерты должны приходить в понятном виде туда, где их точно увидят.

Как настроить:

  • Подключаем Alertmanager.

  • Настраиваем интеграции: Slack, Telegram, почта — что удобнее.

Пример настройки для Slack:

receivers:
  - name: 'slack_receiver'
    slack_configs:
      - api_url: 'https://slack.com/api/chat.postMessage'
        channel: '#alerts'
        send_resolved: true
        text: '{{ .CommonAnnotations.summary }}'

5. Периодический аудит мониторинга

Важно помнить: мониторинг — это не "поставил и забыл". Сервисы меняются, добавляются новые компоненты, архитектура усложняется. Раз в квартал стоит пересматривать настройки: что-то добавить, что-то убрать.

Полезные инструменты

Из того, что хорошо себя зарекомендовало:

  • Prometheus — сбор метрик.

  • Grafana — визуализация.

  • Alertmanager — алерты и уведомления.

  • Loki / ElasticSearch — сбор логов.

  • Sentry — ловит ошибки в коде.

  • pgBadger — разбор логов PostgreSQL.

  • Netdata — мониторинг в реальном времени на уровне хоста.

Итог

Мониторинг — это не просто красивые графики. Это инструмент, который должен помогать ловить проблемы ещё до того, как пользователи начали нервничать. Главное — не ограничиваться только метриками железа, а внимательно следить за поведением самих сервисов.

Если есть что добавить или считаешь что что-то из мной сказанного можно отнести к "вредным советам" - милости прошу в комментарии. Я прочитаю и отредактирую, если твое предложение будет более актуально. Также пишите свои случаи "неправильного" мониторинга или случаи, когда ситуация в действительности отличалась от наблюдаемой - будет интересно почитать.

Комментарии (4)


  1. evilmind
    11.06.2025 14:18

    - alert: HighAPIErrorRate
      expr: rate(http_requests_total{status="500"}[1m]) > 5
      for: 1m
      labels:
        severity: critical
      annotations:
        summary: "API ошибок больше 5 за минуту"
    

    Это плохой алерт, если у нас 10 запросов за минуту, 5 ошибок - это плохо, если 10 миллионов - это естественный фон.

    Тут лучше использовать относительные значения, если есть разбивка по эндпоинитам, то должо получиться что-то типа:

    - alert: HighAPIErrorRate
      expr: |
        (
          sum(rate(http_requests_total{status="500"}[5m])) by (endpoint)
          /
          sum(rate(http_requests_total[5m])) by (endpoint)
            ) * 100 > 5
      for: 1m
      labels:
        severity: critical
      annotations:
        summary: "High 5xx error rate ({{ $value }}%) for {{ $labels.endpoint }}"
    


  1. Lx6g1ZG1
    11.06.2025 14:18

    Мониторинг должен быть комплексный whitebox и blackbox. Принято мониторить следующие паказатели: latency/traffic/errors/saturation. Есть лучшие практики по мониторингу (от google например ) в которых подробно говориться об этом:

    https://sre.google/sre-book/monitoring-distributed-systems/#:~:text=The four golden signals of,traffic%2C errors%2C and saturation.


  1. MIkhail_Loban
    11.06.2025 14:18

    Я бы ещё добавил про событийные логи. Мы обычно пишем события через кафку в клик. Мне кажется ёлка не очень подходит для анализа данных / мониторинга за мало-мальский промежуток времени.

    Мы пишем бизнес-события (добавления в корзину, создание заказа и тп), пишем все события запросов во внешние сервисы с бэка. На случай, если их начнёт лихорадить. Так же, полезно сравнивать текущие показатели метрик с предыдущей неделей/месяцем/медианой одновременно. Смотреть отклонения, допустим текущего часа с тем же часом того же дня недели от предыдущей. И не только времени ответа, но и количества и может ещё что.

    В общем, мне кажется много чего ещё можно добавить.

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


  1. falcon4fun
    11.06.2025 14:18

    Осталось понять, зачем бедному админу скорость доступа к иЛо, идраку и пустому ИИСу, который заинсталлился с чем нибудь?

    О чем статья, я один не понял? Киллер фича какая то будет? Или посыл: короче надо мониторить хорошо, тогда мониторинг будет работать хорошо.

    И что, нынче заббикс не в моде? И пртг тоже? Ну ладно. Хрен там этих девопсеров разберешь.

    Короче, показываю один раз:

    • Гипервизоры. Мониторим cpuready, co-stop, cpu wait time per dispatch и прочее, дабы не ботлнекать проц. Рам. Линки на момент дискардов и эрроров.

    • Ипми: идрак, ило и еже с ними. Общий статус, диски, температура (вход, выход, процы), состояние вебки менеджмента

    • Кластер: csv, их статус, латенси каждого, латенси усредненный и максимальный каждого vhd (привет багу с повышением латенси на протяжении 5 лет). Иопсы средние, максимум и сумму. Тоже самое МБс

    • Эксч. Базы. Их статус пассив актив и нужный ответ. Сервисы. Проверка портов и ответа (снмп снмпс хттпс и т.п.). Проверка статуса ииса и кол-ва юзеров и прочее. Проверка дага на живость.

    • Домен: репликация. Проверка как минимум синхронизации схемы хотя бы по configuration схеме. Проверка феилд логинов и/или залоченных юзеров. Проверка новых обьектов, вроде компьютер типа.

    • Базы: синтетик запросы к базе с очевидным ответом + проверка его же. Состояние баз, размер. Запросы уровня "дохрелион лет назад запущено и жрет"

    • Сайты: состояние серта по SNI, отзыв вебки (скорость мс + респонс 200 ожидаем) + порты нужные.

    • Винда: проц. Рама. Диск. Нужные сервисы кастомные. Аптайм. Пинг. Линки по желанию (мне не надо)

    • Никсы: тоже самое

    • Стораджи: статус, диски, логические диски, контроллеры, менеджмент

    • Некритичное: просто одинокий сенсор пинга

    • Свитчи: состояние железа, псу, фанов, рамы, цпу + порты на момент последнего флапа/дисконнекта, вланы

    • Гейт: туннели, кол-во впн юзеров, траффик, остальное по мелочи

    • Основное перечислил, что то мог забыть. Все работает по снмп с минимумом нужных шаблонов и скриптов

    А автор пусть сосет жопу с такой статьей про мониторинг ради мониторинга. Потом такие в гейте ПалоАльто или Форти включают все дебаг логи сессии, хранят полгода по 10 гб в день и не понимают зачем им эта инфа, которая уже завтра устарела