Контроль основных метрик веб‑сервера или балансировщика — основа надежной работы системы. Ранее мы разбирали работу с мониторингом через API и Angie Console Light, но это не единственный вариант, доступный в Angie. Использование встроенного экспортера Prometheus и визуализация через Grafana дают принципиально другие возможности. Итак, в этой статье мы запустим полноценную систему мониторинга Angie.

Навигация по циклу

  1. Почему стоит переходить на Angie.

  2. Установка Angie из пакетов и в докере.

  3. Переезд с Nginx на Angie. Пошаговая инструкция.

  4. Настройка location в Angie. Разделение динамических и статических запросов.

  5. Перенаправления в Angie: return, rewrite и примеры их применения.

  6. Сжатие текста в Angie: статика, динамика, производительность.

  7. Серверное кэширование в Angie: тонкости настройки.

  8. Настройка TLS в Angie: безопасность и скорость.

  9. Настройка Angie в роли обратного HTTP-прокси.

  10. Балансировка нагрузки для HTTP(S) в Angie.

  11. Мониторинг Angie с помощью Console Light и API.

  12. Балансировка и проксирование L4-трафика в Angie.

  13. Клиентское кэширование в Angie.

  14. Динамические группы проксируемых серверов в Angie.

  15. Мониторинг Angie с Prometheus и Grafana.

Видеоверсия

Для вашего удобства подготовлена видеоверсия этой статьи, доступна на Rutube, VKVideo и YouTube.

Включаем экспорт метрик Prometheus

Ранее �� статье про API мы уже разбирали работу со встроенным API сервера Angie. На основе этого API работает и модуль Prometheus, задача которого экспортировать метрики в формате, совместимом с Prometheus. 

Для начала работы нам потребуется определить шаблон метрик. Самый простой способ — подключить готовый шаблон с самыми востребованными метриками сервера. Он находится в файле /etc/angie/prometheus_all.conf.

http {
  include prometheus_all.conf;
}

Внутри определяется шаблон с набором метрик. Часть этого шаблона показана ниже.

prometheus_template all {
angie_connections_accepted $p8s_value
    path=/connections/accepted
    type=counter
    'help=The total number of accepted client connections.';

angie_connections_dropped $p8s_value
    path=/connections/dropped
    type=counter
    'help=The total number of dropped client connections.';
...
}

Некоторые метрики в шаблоне заданы с использованием регулярных выражений с захватом переменных. То есть, метрики будут зависеть от настроек сбора статистики через модуль API. Например, можно настраивать сбор статистики с помощью директив zone и status_zone. Как именно их настроить мы обсуждали в статье про API и Angie Console Light.

Так как Angie PRO предоставляет больше метрик по API, его файл prometheus_all.conf будет отличаться от Angie OSS. Например, в Angie PRO есть метрики времени ответа проксируемых серверов и данные по активным проверкам.

Итак, мы подключили шаблон с метриками, но также необходимо опубликовать метрики по пути, доступному Prometheus. Для этого создаём локацию /p8s c директивой prometheus.

server {
  listen 80;
  location =/p8s {
    prometheus all;
  }
}

В качестве параметра директивы prometheus мы указали all, что соответствует названию нашего шаблона (в файле prometheus_all.conf).

Проверить доступность метрик можно в браузере по настроенной локации (/p8s) или в терминале.

curl http://localhost/p8s

# Angie Prometheus template "all"
# HELP angie_connections_accepted The total number of accepted client connections.
# TYPE angie_connections_accepted counter
angie_connections_accepted 11

Экспорт метрик настроен, теперь можно переходить к сбору данных в самом Prometheus.

Сбор метрик в Prometheus

Начнём с установки Prometheus (все дальнейшие действия будут проводиться на примере Ubuntu 24.04). Пакет есть в штатном репозитории, установим его.

apt install prometheus

Установка экспортеров не требуется, так как Angie сам экспортирует свои метрики.

Теперь идём в его настройки (/etc/prometheus/prometheus.yml) и добавляем job для Angie в секции scrape_configs. Помним, что yml‑файлы чувствительны к отступам перед директивами (каждый уровень вложенности — два пробела).

 - job_name: "angie"
    scrape_interval: 15s
    metrics_path: "/p8s"
    static_configs:
      - targets: ["localhost:80"]

В этом примере мы используем локацию /p8s, которая содержит метрики и обращаемся по адресу localhost, порт 80. При добавлении других серверов достаточно перечислить их в директиве targets через запятую. Не забывайте проверять сетевую доступность от сервера Prometheus до локаций с метриками. 

У Prometheus есть свой веб‑интерфейс, доступный по порту 9090, мы можем проверить сбор метрик, напрямую запросив их значение, есть возможность построить простой график изменения метрики.

Веб-интерфейс Prometheus
Веб-интерфейс Prometheus

Мы убедились, что метрики собираются в базу данных Prometheus, осталось настроить визуализацию метрик в Grafana.

Настраиваем дашборд в Grafana

Как обычно, начинаем с установки Grafana. Заходим на страницу скачивания продукта (выбираем OSS‑версию) и выполняем рекомендованные действия с пакетами (версия постоянно обновляется, поэтому правильно будет скопировать команды с указанной страницы скачивания).

sudo apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/grafana/release/12.1.1/grafana_12.1.1_16903967602_linux_amd64.deb
sudo dpkg -i grafana_12.1.1_16903967602_linux_amd64.deb

Если сервер Grafana не стартовал после установки, сделаем это вручную.

systemctl daemon-reload
systemctl enable --now grafana-server

Дальнейшую настройку Grafana мы проведём в веб‑интерфейсе. По умолчанию Grafana использует порт 3000. Логин и пароль по умолчанию admin (пароль сразу же рекомендуется заменить на безопасный).

Первое, что требуется сделать в Grafana — подключить источник данных Prometheus. Сделать это можно в разделе Data sources > Add data source. Нужно указать адрес и порт Prometheus (в нашем случае http://localhost:9090).

Добавление источника данных Prometheus
Добавление источника данных Prometheus

Теперь Grafana имеет доступ ко всем метрикам, которые собирает Prometheus, осталось добавить дашборд. Если у вас по умолчанию установился Node Exporter, то можно добавить дашборд для него, он будет показывать все основные системные метрики. Для Angie разработан специальный дашборд, который мы сейчас добавим в нашу систему. Для этого копируем ID дашборда или его код (JSON) и добавляем в разделе Dashboards > Import.

Импорт дашборда по ID
Импорт дашборда по ID

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

Настройка дашборда
Настройка дашборда

Если всё указано корректно, в разделе Dashboards мы увидим данные, поступающие от Angie в Prometheus в виде графиков. Если вы не видите графиков, то в правом верхнем углу можно выбрать более короткий период (например, 15 минут).

Просмотр данных в дашборде
Просмотр данных в дашборде

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

Итоги

Мы успешно настроили систему сбора и визуализации метрик Angie на основе Prometheus и Grafana. Такая система даёт возможность наблюдения за основными показателями сервера и ретроспективно расследовать инциденты за счет хранения исторических данных.

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