Настройка экспортеров метрик и дашбордов
В предыдущей теме мы изучили стек Prometheus и Grafana, а также разобрали, почему Pull-модель сбора данных эффективнее классического SNMP. Теперь перейдем к практике: подключим Asterisk к системе мониторинга, чтобы видеть процессы внутри АТС в реальном времени.
Работа состоит из четырех этапов: настройка доступа, запуск экспортера, агрегация данных и визуализация.
Архитектура сбора данных
Asterisk не умеет отдавать метрики напрямую в формате Prometheus. Для этого используется экспортер метрик — легковесная служба-посредник.
Как показано на Схеме 1, экспортер запрашивает данные у Asterisk через интерфейс AMI (Asterisk Manager Interface), преобразует их в текстовый формат и отдает серверу мониторинга по запросу.
Шаг 1. Подготовка Asterisk (AMI)
Для работы asterisk_exporter нужна учетная запись в Asterisk с правами на чтение состояния системы.
Добавьте настройки в файл /etc/asterisk/manager_custom.conf. Мы используем custom-файл, чтобы FreePBX не перезаписал конфигурацию при обновлении из GUI.
[exporter]
secret = your_strong_password
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.255
read = system,call,reporting,user,agent
write = noneШаг 2. Запуск asterisk_exporter
Мы запустим экспортер в Docker-контейнере. Это изолирует зависимости и упростит поддержку. Сбор метрик начнется автоматически после старта.
Экспортер будет слушать порт 9104 и транслировать данные из AMI в формат Prometheus.
Пример docker-compose.yml для запуска:
services:
asterisk-exporter:
image: lusotycoon/asterisk-exporter:latest
container_name: asterisk_exporter
restart: unless-stopped
environment:
- ASTERISK_AMI_ADDR=127.0.0.1:5038
- ASTERISK_AMI_USER=exporter
- ASTERISK_AMI_PASS=your_strong_password
ports:
- "9104:9104"Проверьте работу командой: curl http://localhost:9104/metrics. Если в ответе появились строки вида asterisk_core_calls_active 5, данные успешно экспортируются.
Шаг 3. Настройка Prometheus
Добавьте новый target (цель) в конфигурационный файл prometheus.yml, чтобы сервер начал опрашивать экспортер.
scrape_configs:
- job_name: 'asterisk'
static_configs:
- targets: ['192.168.1.10:9104'] # IP вашего сервера Asterisk
scrape_interval: 15s Шаг 4. Визуализация и создание дашборда
Дашборд собирает разрозненные метрики в единую панель мониторинга. Чтобы не писать запросы на языке PromQL с нуля, можно импортировать готовый шаблон (например, ID 14445 с Grafana Labs).
Типовой дашборд отображает:
- Активные каналы (Active Channels).
- Статус PJSIP-регистраций.
- Количество вызовов в секунду (CPS).
- Загрузку очередей (Queues).
График 1 демонстрирует разницу между штатной нагрузкой и аномальным всплеском трафика, который может указывать на атаку или технический сбой.
Типичные ошибки
- Открытый порт 9104: Если не ограничить доступ к порту экспортера, любой желающий сможет увидеть структуру ваших транков и интенсивность звонков. 🛰️
- Избыточность: 50 графиков на одном экране создают визуальный шум. Оставляйте только те показатели, на которые вы готовы реагировать.
- Слепота к системным ресурсам: Мониторинг звонков бесполезен, если вы пропустите переполнение диска логами или перегрев CPU.
Практическое упражнение
Настройте уведомление о критическом событии:
- В Grafana перейдите в Alerting.
- Создайте правило для метрики
asterisk_core_calls_active. - Условие: если значение равно
0в течение 5 минут в рабочее время (09–18) — отправить алерт в Telegram. - Проверьте срабатывание, временно снизив порог в настройках.
Мы сделали работу Asterisk прозрачной. Теперь, когда состояние системы под контролем, перейдем к вопросам надежности. В следующей теме разберем Концепции высокой доступности и кластеризации.
Понравился урок?
Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей
Продолжить в Telegram