Настройка экспортеров метрик и дашбордов

В предыдущей теме мы изучили стек 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 демонстрирует разницу между штатной нагрузкой и аномальным всплеском трафика, который может указывать на атаку или технический сбой.

Типичные ошибки

  1. Открытый порт 9104: Если не ограничить доступ к порту экспортера, любой желающий сможет увидеть структуру ваших транков и интенсивность звонков. 🛰️
  2. Избыточность: 50 графиков на одном экране создают визуальный шум. Оставляйте только те показатели, на которые вы готовы реагировать.
  3. Слепота к системным ресурсам: Мониторинг звонков бесполезен, если вы пропустите переполнение диска логами или перегрев CPU.

Практическое упражнение

Настройте уведомление о критическом событии:

  1. В Grafana перейдите в Alerting.
  2. Создайте правило для метрики asterisk_core_calls_active.
  3. Условие: если значение равно 0 в течение 5 минут в рабочее время (09–18) — отправить алерт в Telegram.
  4. Проверьте срабатывание, временно снизив порог в настройках.

Мы сделали работу Asterisk прозрачной. Теперь, когда состояние системы под контролем, перейдем к вопросам надежности. В следующей теме разберем Концепции высокой доступности и кластеризации.

Понравился урок?

Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей

Продолжить в Telegram