Контроль основных метрик веб‑сервера или балансировщика — основа надежной работы системы. Ранее мы разбирали работу с мониторингом через API и Angie Console Light, но это не единственный вариант, доступный в Angie. Использование встроенного экспортера Prometheus и визуализация через Grafana дают принципиально другие возможности. Итак, в этой статье мы запустим полноценную систему мониторинга Angie.
Навигация по циклу
Настройка location в Angie. Разделение динамических и статических запросов.
Перенаправления в Angie: return, rewrite и примеры их применения.
Сжатие текста в Angie: статика, динамика, производительность.
Мониторинг 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, осталось настроить визуализацию метрик в 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).

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

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

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

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