Это учебное руководство является продолжением руководства Начало работы с Grafana Alerting — маршрутизация оповещений с помощью динамических меток.
В этом учебном руководстве вы научитесь:
- Связывать правила оповещения с панелями временных рядов для лучшей визуализации.
- Просматривать аннотации оповещений непосредственно на дашбордах для лучшего контекста.
- Писать запросы Prometheus.
Перед началом работы
-
Интерактивная среда обучения
- Кроме того, вы можете попробовать этот пример в нашей интерактивной среде обучения. Это полностью настроенная среда, в которой уже установлены все зависимости.
-
Grafana OSS
- Если вы решили запустить стек Grafana локально, убедитесь, что у вас установлены следующие приложения:
- Docker Compose (входит в состав Docker for Desktop для macOS и Windows)
- Git
- Если вы решили запустить стек Grafana локально, убедитесь, что у вас установлены следующие приложения:
Настройка стека Grafana
Чтобы наблюдать данные с помощью стека Grafana, загрузите и запустите следующие файлы.
-
Клонируйте репозиторий среды учебного руководства.
git clone https://github.com/tonypowa/grafana-prometheus-alerting-demo.git -
Перейдите в каталог, в который вы клонировали репозиторий:
cd grafana-prometheus-alerting-demo -
Соберите стек Grafana:
docker compose build -
Запустите контейнеры:
docker compose up -dПри первом запуске
docker compose up -dDocker загружает все необходимые для учебного руководства ресурсы. В зависимости от скорости вашего интернет-соединения это может занять несколько минут.
Note
Если на вашей системе уже запущены Grafana, Loki или Prometheus, вы можете увидеть ошибки, потому что Docker-образ пытается использовать порты, которые уже заняты вашими локальными установками. Если это так, остановите службы, а затем снова выполните команду.
Вариант использования: мониторинг и оповещение о работоспособности системы с помощью Prometheus и Grafana
В этом варианте использования мы сосредоточимся на мониторинге использования CPU, памяти и диска системы в рамках настройки мониторинга. Демонстрационное приложение запускает стек, включающий Python-скрипт для имитации метрик, которые Grafana собирает и визуализирует как визуализацию временных рядов.
Скрипт имитирует случайные значения использования CPU и памяти (от 10% до 100%) каждые 10 секунд и предоставляет их как метрики Prometheus.
Цель
Вы создадите визуализацию временных рядов для мониторинга использования CPU и памяти, определите правила оповещения с пороговыми условиями и свяжете эти оповещения с вашими дашбордами для отображения аннотаций в реальном времени при превышении порогов.
Шаг 1: создание визуализации для мониторинга метрик
Чтобы отслеживать эти метрики, вы можете настроить визуализацию для использования CPU и потребления памяти. Это упростит просмотр того, как работает система.
Визуализация временных рядов поддерживает правила оповещения для предоставления большего контекста в виде аннотаций и состояния правила оповещения. Выполните следующие действия, чтобы создать визуализацию для мониторинга метрик приложения.
-
Войдите в Grafana:
- Перейдите на http://localhost:3000, где должна быть запущена Grafana.
- Имя пользователя и пароль:
admin.
-
Создайте панель временных рядов:
- Перейдите в Dashboards.
- Нажмите + Create dashboard.
- Нажмите + Add visualization.
- Выберите Prometheus в качестве источника данных (предоставляется с демонстрацией).
- Введите заголовок для вашей панели, например, CPU and Memory Usage.
-
Добавьте запросы для метрик:
-
В области запроса скопируйте и вставьте следующий запрос PromQL:
переключитесь в режим Code, если он ещё не выбран
flask_app_cpu_usage{instance="flask-prod:5000"} -
Нажмите Run queries.
Этот запрос должен отображать имитированные данные об использовании CPU для среды prod.
-
-
Добавьте запрос на использование памяти:
-
Нажмите + Add query.
-
В области запроса вставьте следующий запрос PromQL:
flask_app_memory_usage{instance="flask-prod:5000"}
Панель временных рядов, отображающая метрики использования CPU и памяти в производственной среде. -
-
Нажмите Save dashboard. Назовите его:
cpu-and-memory-metrics.
Наша панель временных рядов готова. Не стесняйтесь комбинировать метрики с метками, такими как flask_app_cpu_usage{instance="flask-staging:5000"}, или другими метками, например deployment.
Шаг 2: создание правил оповещения
Выполните следующие действия, чтобы вручную создать правила оповещения и связать их с визуализацией.
Создание правила оповещения для использования CPU
- Перейдите в Alerts & IRM > Alerting > Alert rules из бокового меню Grafana.
- Нажмите + New alert rule, чтобы создать новое оповещение.
Ввод имени правила оповещения
Сделайте его коротким и описательным, так как оно будет отображаться в вашем уведомлении об оповещении. Например, cpu-usage.
Определение запроса и условия оповещения
-
Выберите источник данных Prometheus в раскрывающемся меню.
-
В разделе запроса введите следующий запрос:
переключитесь в режим Code, если он ещё не выбран
flask_app_cpu_usage{instance="flask-prod:5000"} -
Alert condition
-
Введите 75 в качестве значения для WHEN QUERY IS ABOVE, чтобы задать порог для оповещения.
-
Нажмите Preview alert rule condition, чтобы выполнить запросы.
Предварительный просмотр запроса, возвращающего экземпляры оповещений в Grafana.
Запрос возвращает использование CPU приложения Flask в производственной среде. В данном случае использование составляет
86.01%, что превышает настроенный порог75%, вызывая срабатывание оповещения. -
Добавление папок и меток
- В поле Folder нажмите + New folder и введите имя. Например:
system-metrics. Эта папка будет содержать наши правила оповещения.
Настройка поведения оценки
- Нажмите + New evaluation group. Назовите её
system-usage. - Выберите Evaluation interval (как часто будет оцениваться оповещение). Выберите
1m. - Установите pending period равным
0s(None), чтобы правило оповещения срабатывало сразу после выполнения условия (это минимизирует время ожидания для демонстрации). - Установите Keep firing for равным
0s, чтобы оповещение прекращало срабатывать сразу после того, как условие перестало выполняться.
Настройка уведомлений
-
Выберите точку контакта. Если у вас нет точек контакта, добавьте точку контакта.
Для быстрой проверки вы можете использовать публичный webhook с webhook.site, чтобы перехватывать и проверять уведомления об оповещениях. Если вы выберете этот метод, выберите Webhook в раскрывающемся меню в точках контакта.
Настройка сообщения уведомления
Чтобы связать это правило оповещения с нашей визуализацией, нажмите Link dashboard and panel.
- Выберите папку, содержащую дашборд. В данном случае: system-metrics.
- Выберите визуализацию cpu-and-memory-metrics.
- Нажмите confirm.
Вы успешно связали это правило оповещения с вашей визуализацией!
Когда использование CPU превышает заданный порог, на графике должна появиться аннотация, отмечающая событие. Аналогично, когда оповещение разрешается, добавляется ещё одна аннотация, указывающая момент возврата к норме.
Попробуйте добавить второе правило оповещения, используя метрику использования памяти (flask_app_memory_usage{instance="flask-prod:5000"}), чтобы увидеть, как комбинирование нескольких оповещений может улучшить ваш дашборд.
Проверьте, как выглядит ваш дашборд теперь, когда ваше оповещение связано с панелью вашего дашборда.
Шаг 3: визуализация метрик и аннотаций оповещений
После того как правила оповещения связаны с визуализацией, они должны отображаться как индикаторы работоспособности (цветные значки сердец: красное сердце, когда оповещение находится в состоянии Alerting, и зелёное сердце, когда оно в состоянии Normal) на связанной панели. Кроме того, аннотации предоставляют полезный контекст, такой как время срабатывания оповещения.
Шаг 4: получение уведомлений
Наконец, в рамках процесса оповещения вы должны получать уведомления в связанной точке контакта. Если вы получаете оповещения по электронной почте, шаблон электронной почты по умолчанию включает две кнопки:
-
View dashboard: ссылка на дашборд, содержащий панель с оповещением.
-
View panel: прямая ссылка на отдельную панель, на которой сработало оповещение.
Нажатие на любую кнопку открывает Grafana с заранее применённым временным диапазоном, относящимся к оповещению.
По умолчанию этот URL включает параметры запроса from и to, отражающие временное окно вокруг события оповещения (за час до и после оповещения). Это помогает вам попасть непосредственно во временное окно, в котором произошло оповещение, что упрощает анализ произошедшего.
Если вы хотите определить более точный временной диапазон, вы можете настроить свои уведомления с помощью шаблона уведомления. С помощью шаблона вы можете явно задать значения from и to для более точного контроля над тем, что увидят пользователи, перейдя по ссылке на дашборд. Итоговый URL формируется с использованием пользовательской аннотации (например, MyDashboardURL) вместе с параметрами from и to, которые вычисляются в шаблоне уведомления.
Заключение
Вы связали правила оповещения на основе Prometheus с вашими визуализациями Grafana, предоставив вашим дашбордам контекст в реальном времени с аннотациями оповещений и индикаторами работоспособности. Визуализируя оповещения вместе с метриками, реагирующие специалисты могут быстро понять, что происходит и когда. Вы также увидели, как уведомления об оповещениях могут включать прямые ссылки на затронутый дашборд или панель, помогая командам переходить прямо в нужное временное окно для более быстрого устранения неполадок.
Есть отзывы или идеи по улучшению этого учебного руководства? Сообщите нам.