IVA ДОКУМЕНТАЦИЯ ОБНОВЛЕНИЯ

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

Сбор метрик позволяет отслеживать производительность сервисов IVA CS, выявлять узкие места, своевременно реагировать на сбои и планировать масштабирование. Сервисы логики 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.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'
      ]
Вместо ivasw-dev.hi-tech.org будет указан реальный IP-адрес или DNS-имя сервера IVA CS

Отображение метрик, собранных 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 из необходимых метрик