====== Prometheus, Grafana, Loki - Observability ====== * [[https://habr.com/ru/companies/tochka/articles/683608/|Человеческим языком про метрики 1: Потерянное введение]] ===== Реклама ===== * Мониторинг не нужен, если он формален и не нацелен на бизнес-результат * Observability — переход от простого сбора метрик к пониманию влияния ИТ-решений на бизнес-показатели, прогнозированию сбоев и автоматизации реагирования * Бизнес-метрики - мониторинг не сервисов, а действий пользователя (например, количество успешных подключений) * Умные оповещения - должны приходить только при реальной угрозе для сервиса а не по каждому незначительному отклонению * Автоматизация - запуск процедур восстановления параллельно с уведомлениями инженеров ===== Техническое задание ===== * Настроить учет работы систем, сервисов и сетей предприятия с точки зрения: метрик (Service Level Indicator - SLI), целей команды предприятия (Service Level Objective - SLO) и гарантий для клиентов (Service Level Agreement - SLA) ===== После окончания обучения слушатель будет знать ===== * Фундаментальные понятия мониторинга * Показатели качества (SLI/SLO/SLA) * Технические термины мониторинга * Основные этапы мониторинга ===== После окончания обучения слушатель будет уметь ===== * Разворачивать стек продуктов Prometheus, Grafana, Loki * Настраивать сбор метрик в Prometheus с использование exporter * Автоматизировать поиск и добавлять собственные источники метрик * Использровать язык запросов PromQL для анализа и визуализации измерений * Настраивать сбор, фильтрацию и анализ журналов с использованием Loki и языка LogQL * Использовать готовые и создавать собственные dashboard в Grafana * Настраивать уведомления в Prometheus Alertmanager с использованием готовых и собственных правил * Настраивать маршрутизацию уведомлений с использованием Email и Webhook * Настраивать уведомления в Grafana ===== Модуль 1. Основы наблюдаемости и архитектура стека ===== ==== Теория ==== * [[https://habr.com/ru/articles/956318/|SLA, SLO, SLI простыми словами и с примерами]] * SLA (Service Level Agreement) и SLO (Service Level Objective) * Метрики, Логи, Трейсы, Чем отличается мониторинг от наблюдаемости * Роль каждого компонента (Prometheus, Grafana, Loki) в экосистеме ==== Практика ==== * Развертывание стенда предприятия ===== Модуль 2. Сбор и анализ метрик с Prometheus ===== * Установка [[Сервис Prometheus]] * Использование экспортеров, принцип pull-модели * Пример [[Сервис Prometheus#prometheus-node-exporter]] для сбора метрик ОС, оценка загрузки CPU, RAM, сети, задержки ввода/вывода * Язык [[Сервис Prometheus#Запросы PromQL]]: Изучение типов данных (счетчики, измеряемые величины, гистограммы), операторов и агрегаций * Пример [[Сервис Prometheus#prometheus-apache-exporter]] для сбора метрик "штатного" приложения, [[Сервис HTTP#Нагрузочное тестирование]] * Service Discovery * Использование push-модели [[Сервис Prometheus#prometheus-pushgateway]] и [[Сервис Prometheus#Отправка метрик из приложения]] * prometheus federation ===== Модуль 3. Централизация логов с Loki ===== * Установка Loki * Установка и настройка Promtail для доставки логов приложений и системных журналов * Язык LogQL, фильтрация и анализ логов (поиск ошибок, парсинг JSON, агрегация статистики по логам) ===== Модуль 4. Визуализация данных и дашборды в Grafana ===== * Установка [[Сервис Grafana]] * [[Сервис Grafana#Подключение Prometheus]] и Loki к Grafana. * [[Сервис Grafana#Импорт готовых dashboard]] в Grafana * [[Сервис Grafana#Создание dashboard]] "Мониторинг сервиса" с метриками приложения, статусами сервисов от которых оно зависит и виджетами последних ошибок из логов * Типы панелей (Time series, Table, Stat, Logs), настройка внешнего вида и переменных, интерактивные дашборды ===== Модуль 5. Алертинг и обнаружение проблем ===== * Установка [[Сервис Prometheus#prometheus-alertmanager]] * [[Сервис Prometheus#Настройка маршрутизации уведомлений]] (Email, Webhook) и [[Сервис Prometheus#Тестирование alertmanager]] * [[Сервис Prometheus#Подключение готовых правил alertmanager]] * [[Сервис Prometheus#Подключение Alertmanager к Prometheus]] * [[Сервис Prometheus#Создание правил alertmanager]] * Управление инцидентами, настройка silence (подавление алертов), агрегация нотификаций * [[Сервис Grafana#Настройка уведомлений]] непосредственно в интерфейсе Grafana (вместе с оценкой пороговых значений, на примере [[Сервис Prometheus#Отправка метрик из приложения]]) ===== Идеи для курса ===== * Процент и время задержки писем через greylist ===== Черновик =====