Сбор метрик с помощью Prometheus и Grafana

Сервисы логики SWL умеют собирать и отдавать метрики в формате Prometheus. Для отображения и анализа полученных метрик используется Grafana.

Для работы с метриками на устройстве пользователя должно быть предварительно установлено и настроено следующее программное обеспечение:

Список метрик

Общие метрики

Метрики, собираемые всеми сервисами:

  • rpc_message_handled_count — количество обработанных RPC-методов

  • rpc_message_handling_duration_bucket — время обработки RPC-методов, распределенное по бакетам по времени выполнения

  • rpc_message_handling_duration_sum — сумма времени обработки RPC-методов

  • метрики, связанные со средой выполнения Go (сервис Go-runtime). Метрики с префиксом go

  • метрики, связанные с системным процессом сервиса. Метрики с префиксом process

Уникальные метрики

Метрики, которые являются уникальными для отдельных сервисов:

  • swl_backend_number_of_subscriptions — количество подписок в сервисе Backend (swl_backend)

  • swl_call_number_of_active_legs — количество активных плеч вызова в сервисе Call (swl_call)

  • swl_dtmf_number_of_active_ivrs — количество активных IVR в сервисе DTMF (swl_dtmf)

Настройка сервисов логики

Чтобы сервис логики SWL запустил HTTP-сервер для сбора метрик Prometheus, необходимо при запуске для каждого сервиса указать параметр prometheus-bind в формате <IP_ADDRESS>:<PORT> (где <IP_ADDRESS> — IP-адрес сервера IVA CS, <PORT> — порт доступа к сервису, например, 0.0.0.0:8001). В этом случае при старте сервиса на порту 8001 запускается HTTP-сервер для сбора метрик с помощью Prometheus.

При заполнении параметра prometheus-bind необходимо указывать любые свободные порты. Это необходимо для того, чтобы сервер, отдающий метрики, запускался на свободном порте, что позволяло бы Prometheus собирать метрики.

Порт уникален для каждого сервиса

Пример команды запуска сервиса CALL с запущенным сбором метрик:

./swl-call -prometheus-bind=0.0.0.0:8001

Для удобства запуска выдачи метрик сразу на нескольких сервисах на хосте рекомендуется использовать конфигурационный файл /etc/ivasw/logic.yaml.

Пример файла конфигурации с запуском выдачи метрик на всех сервисах:

SWL:
    AUDIT:
        PROMETHEUS_BIND: "0.0.0.0:8001"
    AUTH:
        CORS: true
        PROMETHEUS_BIND: "0.0.0.0:8002"
    BACKEND:
        PROMETHEUS_BIND: "0.0.0.0:8003"
    CALL:
        LOAD_BALANCE: 0
        PROMETHEUS_BIND: "0.0.0.0:8004"
    DTMF:
        PROMETHEUS_BIND: "0.0.0.0:8005"
    GC:
        PROMETHEUS_BIND: "0.0.0.0:8006"
    LDAP:
        PROMETHEUS_BIND: "0.0.0.0:8007"
    LOCATION:
        PROMETHEUS_BIND: "0.0.0.0:8008"
    NOTIFY:
        PROMETHEUS_BIND: "0.0.0.0:8009"
    PROVISION:
        PROMETHEUS_BIND: "0.0.0.0:8010"
    REGISTRY:
        PROMETHEUS_BIND: "0.0.0.0:8011"
    REPORT:
        PROMETHEUS_BIND: "0.0.0.0:8012"
    REST:
        PROMETHEUS_BIND: "0.0.0.0:8013"
    SOCKET:
        PROMETHEUS_BIND: "0.0.0.0:8014"
    STATUS:
        PROMETHEUS_BIND: "0.0.0.0:8015"
    STORAGE:
        PROMETHEUS_BIND: "0.0.0.0:8016"
    SYNC:
        PROMETHEUS_BIND: "0.0.0.0:8017"
    AVAYA:
        PROMETHEUS_BIND: "0.0.0.0:8018"

Настройка Prometheus

Для сбора метрик необходимо настроить Prometheus, указав значения параметров job_name и заполнив соответствующие targets в файле конфигурации Prometheus.

Пример файла конфигурации prometheus.yml:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'ivasw-dev'
    static_configs:
      - targets: [
        'ivasw-dev.hi-tech.org:8001',
        'ivasw-dev.hi-tech.org:8002',
        'ivasw-dev.hi-tech.org:8003',
        'ivasw-dev.hi-tech.org:8004',
        'ivasw-dev.hi-tech.org:8005',
        'ivasw-dev.hi-tech.org:8006',
        'ivasw-dev.hi-tech.org:8007',
        'ivasw-dev.hi-tech.org:8008',
        'ivasw-dev.hi-tech.org:8009',
        'ivasw-dev.hi-tech.org:8010',
        'ivasw-dev.hi-tech.org:8011',
        'ivasw-dev.hi-tech.org:8012',
        'ivasw-dev.hi-tech.org:8013',
        'ivasw-dev.hi-tech.org:8014',
        'ivasw-dev.hi-tech.org:8015',
        'ivasw-dev.hi-tech.org:8016',
        'ivasw-dev.hi-tech.org:8017',
        'ivasw-dev.hi-tech.org:8018'
      ]

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

Для отображения метрик в Grafana необходимо:

  1. открыть Grafana, перейти во вкладку Connections и выбрать Data sources

  2. добавить новый Data Sources:

    • нажать Add data source

    • выбрать Prometheus

    • во вкладке Settings в поле Prometheus server URL ввести IP-адрес сервера с Prometheus, который собирает метрики (при необходимости указать порт)

    • сохранить введённые данные, нажав кнопку Save & test

  3. создать Dashboard из необходимых метрик