DevOps и инфраструктура

Учебник Мониторинг для начинающих

18 уроков · 6 разделов · бесплатно, без регистрации

Этот учебник проведёт вас от идеи «зачем вообще мониторинг» до рабочей системы наблюдаемости на Prometheus и Grafana. Вы разберётесь, как устроена pull-модель сбора метрик, научитесь писать запросы на PromQL, настраивать экспортеры и алерты, инструментировать собственное приложение и строить дашборды. Отдельный раздел посвящён SLI/SLO, error budget и типичным ошибкам вроде взрыва кардинальности лейблов. Курс рассчитан на разработчиков и DevOps-инженеров, которые хотят понимать, что происходит с их сервисами в продакшене.

Курс «Мониторинг: Prometheus и Grafana» состоит из 6 разделов и 18 уроков: Зачем нужен мониторинг и наблюдаемость, Архитектура Prometheus, Конфигурация и PromQL, Правила, алерты и инструментирование, Grafana: дашборды и алерты и SLI, SLO и типичные ошибки. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Зачем нужен мониторинг и наблюдаемость

    1. Что такое мониторинг и наблюдаемость

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

    2. Метрики, логи и трейсы

      Три столпа наблюдаемости: чем метрики отличаются от логов и распределённых трейсов и когда какой сигнал использовать.

    3. Золотые сигналы, RED и USE

      Четыре золотых сигнала Google SRE и методики RED и USE: как выбрать минимальный набор метрик для сервиса и для ресурса.

  2. 2 Архитектура Prometheus

    1. Pull-модель, TSDB и scrape

      Как Prometheus собирает метрики по pull-модели, что такое scrape, как устроено хранилище временных рядов TSDB и target.

    2. Типы метрик: counter, gauge, histogram, summary

      Четыре типа метрик Prometheus: counter, gauge, histogram и summary — когда какой использовать и как с ними работать в PromQL.

    3. Экспортеры и endpoint /metrics

      Что такое экспортеры в Prometheus, как работает node_exporter и формат текстового endpoint /metrics для экспозиции метрик.

  3. 3 Конфигурация и PromQL

    1. Конфиг prometheus.yml и scrape_configs

      Структура prometheus.yml: global, scrape_configs, job_name, targets и static_configs — как настроить сбор метрик с целей.

    2. Основы PromQL: селекторы и rate

      Введение в PromQL: instant-векторы, селекторы по лейблам, операторы сравнения, диапазоны и функция rate для counter.

    3. Агрегация: sum, by и продвинутые запросы

      Агрегация в PromQL: операторы sum, avg, max, группировка by и without, доля ошибок и процентили задержки.

  4. 4 Правила, алерты и инструментирование

    1. Правила записи и алертинга

      Recording rules для ускорения запросов и alerting rules с условиями for и labels — как описать алерт в Prometheus.

    2. Alertmanager и маршрутизация

      Alertmanager: группировка, подавление и маршрутизация алертов по route и receivers, silences и inhibition.

    3. Инструментирование своего приложения

      Клиентские библиотеки Prometheus: как добавить кастомные метрики counter и histogram в приложение и выставить endpoint /metrics.

  5. 5 Grafana: дашборды и алерты

    1. Источники данных и первая панель

      Как подключить Prometheus как источник данных в Grafana и создать первую панель с PromQL-запросом и визуализацией.

    2. Дашборды и переменные шаблонов

      Дашборды Grafana и переменные шаблонов: как сделать дашборд переиспользуемым через выпадающие списки и фильтры по лейблам.

    3. Алерты в Grafana

      Алерты в Grafana: правила на основе запросов, условия и пороги, каналы уведомлений и отличие от alerting в Prometheus.

  6. 6 SLI, SLO и типичные ошибки

    1. SLI, SLO и error budget

      Что такое SLI, SLO и error budget: как задать измеримую цель надёжности и использовать бюджет ошибок для принятия решений.

    2. Кардинальность лейблов

      Что такое кардинальность лейблов в Prometheus, почему она взрывает TSDB и как проектировать лейблы безопасно.

    3. Scrape-интервалы и прочие грабли

      Как выбрать scrape_interval, согласовать его с rate и for, и избежать частых ошибок настройки мониторинга в продакшене.