Сбор метрик с помощью 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 необходимо:
-
открыть Grafana, перейти во вкладку Connections и выбрать Data sources
-
добавить новый Data Sources:
-
нажать Add data source
-
выбрать Prometheus
-
во вкладке Settings в поле Prometheus server URL ввести IP-адрес сервера с Prometheus, который собирает метрики (при необходимости указать порт)
-
сохранить введённые данные, нажав кнопку Save & test
-
-
создать Dashboard из необходимых метрик