Мониторинг Asterisk в Prometheus и Grafana с помощью asterisk_exporter
- Отсутствие оперативной информации о перегрузке SIP-транков и исчерпании лицензионных лимитов каналов.
- Внезапные отвалы регистраций транков операторов связи остаются незамеченными администраторами.
- Ошибки скрейпинга метрик Prometheus:
dial tcp 127.0.0.1:9255: connect: connection refused. - Высокая задержка выполнения запросов AMI при сборе статистики очередей операторов.
1. Архитектура мониторинга Asterisk через Prometheus
Утилита asterisk_exporter подключается к локальному интерфейсу Asterisk Manager Interface (AMI) по TCP-порту 5038, опрашивает состояние подсистем (Channels, PJSIP endpoints, Queues, Core) и отдает метрики в формате Prometheus по HTTP-эндпоинту :9255/metrics.
2. Создание системного пользователя AMI для экспортера
В файле /etc/asterisk/manager.conf добавьте:
[prometheus_exporter]
secret = StrongExporterPass2025!
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.255
read = system,call,log,verbose,command,agent,user,config,reporting,cdr
write = noneПримените настройки: asterisk -rx "manager reload".
3. Установка и запуск asterisk_exporter как systemd сервиса
# Загрузка актуального бинарного релиза
wget https://github.com/alphacep/asterisk_exporter/releases/download/v0.3.0/asterisk_exporter-0.3.0.linux-amd64.tar.gz
tar -xvf asterisk_exporter-0.3.0.linux-amd64.tar.gz
mv asterisk_exporter /usr/local/bin/
useradd -rs /bin/false prometheus_exporterСоздайте unit-файл /etc/systemd/system/asterisk_exporter.service:
[Unit]
Description=Asterisk Prometheus Exporter
After=network.target asterisk.service
[Service]
Type=simple
User=prometheus_exporter
ExecStart=/usr/local/bin/asterisk_exporter \
-asterisk.ami-user=prometheus_exporter \
-asterisk.ami-secret=StrongExporterPass2025! \
-asterisk.ami-addr=127.0.0.1:5038 \
-telemetry.address=:9255
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetsystemctl daemon-reload
systemctl enable --now asterisk_exporter
systemctl status asterisk_exporter4. Конфигурация сбора метрик в prometheus.yml
scrape_configs:
- job_name: 'asterisk'
static_configs:
- targets: ['192.168.10.10:9255']
labels:
instance: 'pbx-production-01'5. Основные метрики Prometheus для алертинга
asterisk_up: Доступность ядра Asterisk (1 = работает, 0 = упал).asterisk_channels_active: Количество активных одновременных звонков.asterisk_pjsip_endpoints_online: Число зарегистрированных абонентов онлайн.asterisk_queue_callers: Количество клиентов, ожидающих в очереди колл-центра.
Частые вопросы (FAQ)
Как настроить Alertmanager на событие падения транка оператора связи?
Создайте правило: expr: asterisk_pjsip_endpoint_state{endpoint=~'trunk-.*'} != 1, for: 1m, labels: severity: critical, с аннотацией 'SIP-транк оператора недоступен'.
Создает ли asterisk_exporter высокую нагрузку на АТС?
При стандартном интервале скрейпинга (15–30 секунд) нагрузка на AMI минимальна. Однако, если очередей более 100, рекомендуется отключить сбор детальных метрик по каждому участнику очереди.
Где взять готовые дашборды Grafana для визуализации метрик?
Используйте популярный шаблон Grafana Dashboard ID: 14757 или 13427 (Asterisk Overview), импортировав его в меню Dashboards -> Import.
Как проверить отдачу метрик экспортером вручную?
Выполните HTTP-запрос через curl: curl -s http://127.0.0.1:9255/metrics | grep asterisk_.