Перейти к содержанию

Мониторинг Webim Server через Prometheus

Начиная с версии Webim 10.6, в сервис была добавлена система мониторинга Prometheus. Эта система предоставляет подробные данные о состоянии сервера в режиме реального времени. Prometheus предоставляет большое количество собственных метрик, метрик отдельных библиотек, а также агрегирует метрики компонентов сервиса.

Для получения данных от Prometheus используется эндпоинт /metrics, доступный из Admin Backend и, при необходимости, Chat Backend.

Включение Prometheus в Chat Backend

Метрики Prometheus для Chat Backend по умолчанию выключены. Для их включения следует указать дополнительный параметр --prometheus_port={port} при запуске компонента, где {port} - номер порта, через который можно будет обратиться за метриками.

Для Admin Backend порт 6001 является портом по умолчанию.

Обратиться к эндпоинту можно следующим образом:

curl http://127.0.0.1:6001/metrics

Настройка Prometheus для получения метрик

Для того чтобы Prometheus принимал метрики Admin Backend и/или Chat Backend, Вам необходимо установить его на соответствующей машине, после чего привести конфигурационный файл prometheus.yml к следующему виду:

global:
  scrape_interval:     15s

  external_labels:
    monitor: 'codelab-monitor'

scrape_configs:
  - job_name: 'prometheus'

    scrape_interval: 5s

    static_configs:
      - targets: ['localhost:{Admin/Chat Backend port}']

Запустите Prometheus:

cd {path to prometheus directory}
./prometheus --config.file=prometheus.yml

Панель управления Prometheus по умолчанию доступна по адресу 127.0.0.1:9090. Вы можете изменить параметры nginx для возможности доступа к панели управления извне локальной машины.

Вид панели управления Prometheus

Список кастомных метрик для Webim Server

Ниже приведён список метрик Admin Backend:

Метрика Тип Пример Метки Описание
uname Info uname_info{machine="x86_64",nodename="482e03fd6382",release="5.15.0-88-generic",sysname="Linux",version="#98~20.04.1-Ubuntu SMP Mon Oct 9 16:43:45 UTC 2023"} 1.0 Системная информация
os Info os_info{id="ubuntu",id_like="debian",name="Ubuntu",pretty_name="Ubuntu 18.04.6 LTS",version="18.04.6 (bionic)",version_codename="bionic",version_id="18.04"} 1.0 Информация об операционной системе
build Info build_info{branch="PRE_BUILD_BRANCH",build_at="PRE_VERSION_DATE",revision="PRE_BUILD_REVISION",short_version="10.7",version="10.7.9"} 1.0 Информация о сборке
run Info run_info{app_name="admin_backend",env="eta",host="172.195.0.2",port="6001",pretty_app_name="Admin Backend",started_at="2023-11-16 17:42:53 +0300",started_at_ts="1700145773"} 1.0 Информация о запущенном инстансе сервиса
metric_settings Info metric_settings_info{set_account_name_label="true"} 1.0 Информация о конфигурации метрик Prometheus
initialized_accounts Counter initialized_accounts_total{account_name="dev"} 1.0 account_name - имя аккаунта Webim Количество инициализированных аккаунтов в пуле БД
failed_account_initializations Counter failed_account_initializations_total{account_name="dev"} 5.0 account_name - имя аккаунта Webim
reason - причина неудачной инициализации аккаунта
Количество аккаунтов в пуле БД, инициализация которых закончилась неудачно
abac_policy_evaluations Summary abac_policy_evaluations_seconds_count{account_name="dev",action_type="access",obj_type="feature",subj_roles="admin",subj_type="agent"} 15.0 account_name - имя аккаунта Webim
subj_type - тип субъекта ABAC
subj_roles - роли субъекта ABAC
obj_type - тип объекта ABAC, по отношению к которому применяется правило/политика
action_type - тип совершаемого над объектом действия
Время, затраченное на работу с правилом/политикой
abac_acs_requests Summary abac_acs_request_seconds_count{account_name="dev",request_type="can"} 244.0 account_name - имя аккаунта Webim
request_type - тип запроса к ABAC
Время выполнения сервисных запросов к ABAC
repository_caching_events Counter repository_caching_events_total{account_name="<none>",cache_type="CachingRepository",event_type="miss",repository_type="AccountRepository"} 1.0 account_name - имя аккаунта Webim
repository_type - тип репозитория
cache_type - тип кэша
event_type - тип события
Количество кэшированных событий

Ниже приведён список метрик Chat Backend:

Метрика Тип Пример Метки Описание
uname Info uname_info{machine="x86_64",nodename="482e03fd6382",release="5.15.0-88-generic",sysname="Linux",version="#98~20.04.1-Ubuntu SMP Mon Oct 9 16:43:45 UTC 2023"} 1.0 Системная информация
os Info os_info{id="ubuntu",id_like="debian",name="Ubuntu",pretty_name="Ubuntu 18.04.6 LTS",version="18.04.6 (bionic)",version_codename="bionic",version_id="18.04"} 1.0 Информация об операционной системе
build Info build_info{branch="PRE_BUILD_BRANCH",build_at="PRE_VERSION_DATE",revision="PRE_BUILD_REVISION",short_version="10.7",version="10.7.9"} 1.0 Информация о сборке
run Info run_info{app_name="admin_backend",env="eta",host="172.195.0.2",port="6001",pretty_app_name="Admin Backend",started_at="2023-11-16 17:42:53 +0300",started_at_ts="1700145773"} 1.0 Информация о запущенном инстансе сервиса
timer_working_time_seconds Summary timer_name - имя таймера Суммарное время работы таймера
agent_full_updates Counter account_name - имя аккаунта Webim
agent_id - идентификатор оператора
mode - режим
Количество операций fullUpdate
accounts Gauge Количество аккаунтов Webim на сервере
chats Gauge account_name - имя аккаунта Webim Количество активных чатов
visit_sessions Gauge account_name - имя аккаунта Webim Количество сессий посетителей
alive_sessions Gauge account_name - имя аккаунта Webim Количество активных сессий посетителей
visible_sessions Gauge account_name - имя аккаунта Webim Количество видимых сессий посетителей
visited_pages Gauge account_name - имя аккаунта Webim Количество посещённых посетителями страниц
alive_visited_pages Gauge account_name - имя аккаунта Webim Количество страниц, посещённых активными посетителями
agent_statuses Gauge account_name - имя аккаунта Webim
status - идентификатор статуса
Количество операторов в статусе
bg_storager_objects_added Counter account_name - имя аккаунта Webim
storager_idx - индекс хранилища
object_class - класс объекта
Количество объектов, добавленных в хранилище
bg_storager_objects_stored Counter account_name - имя аккаунта Webim
storager_idx - индекс хранилища
object_class - класс объекта
Количество объектов, загруженных в хранилище
bg_storager_objects_failed Gauge account_name - имя аккаунта Webim
storager_idx - индекс хранилища
object_class - класс объекта
Количество объектов, загрузка которых в хранилище окончилась неудачно