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

Описание эндпоинтов мониторинга

Возможности мониторинга работы сервиса Webim и его компонентов, а также рекомендации по настройке мониторинга описаны в этой статье. Ниже будут изложены конкретные эндпоинты, которые можно использовать в рамках мониторинга.

О версии и составе эндпоинтов

Эта статья описывает стандартный набор эндпоинтов для Webim 10.7. В других версиях состав может отличаться.

Структура URL для проверки следующая:

https://{hostname}{endpoint}

где {hostname} — имя хоста, на котором размещается сервер Webim, вида {account}.webim.ru для облачных клиентов и chat.mycompany.com для hosted; {endpoint} — эндпоинт мониторинга.

Для проверки для большинства эндпоинтов будет необходимо авторизоваться с сервисным логином и паролем Webim (базовая авторизация).

/metrics

Внимание!

Эндпоинт был добавлен в версии Webim 10.6 и не будет работать на более ранних версиях продукта!

Эндпоинт используется для получения метрик Prometheus из Chat Backend и Admin Backend. Подробную информацию об этом эндпоинте можно прочитать в соответствующей статье.

/l/o/pingservice

Данный эндпоинт используется для проверки работоспособности Chat Backend. Для проверки будет необходимо осуществить авторизацию в Agent Frontend. Авторизация осуществляется при помощи токена авторизации, передаваемого в файле cookie.

Для данного эндпоинта также необходимы query-параметры pinger-id и ts.

Пример curl-запроса:

curl --request GET   --url 'https://companyname.webim.ru/l/o/pingservice?pinger-id=17595&ts=123'   --header 'Connection: keep-alive'   --header 'Cookie: WEBIM_LOCALE=ru; WEBIM_AUTH_TOKEN=SOME_TOKEN; WEBIM_ONLINE=true; WEBIM_URL=https%3A%2F%2Fcompanyname.webim.ru%2Fwebim; WEBIM_STATUS=online'

В случае успеха сервер возвращает ответ:

200 {'result': 'ok'}

В противном случае вернёт ошибку сервера (5xx). Если пропущены query-параметры, то вернёт ошибку с кодом 4хх.


/l/a/monitor

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.

Пример curl-запроса:

curl --request GET   --url 'https://companyname.webim.ru/l/a/monitor?='   --header 'Authorization: Basic S0me7eX7'

Пример ответа:

{
  "mainInfo": 
  {
    "env": "wmtest107", 
    "port": 8248, 
    "multinodeMode": "", 
    "nodeName": "", 
    "startTs": 1759500493.7488275, 
    "startTime": "03-10-2025 17:08:13", 
    "version": "10.7.134", 
    "osName": "Ubuntu", 
    "osVersion": "20.04", 
    "ubuntuVersion": "20.04", 
    "branch": "remotes/webim-server/release-10.7", 
    "revision": "xxx", 
    "tag": "remotes/webim-server/release-10.7", 
    "avgNTries": 0.0, 
    "n": 2, 
    "storingEnabled": true
  }, 
  "host": "wmtest107.webim.ru"
}

Сервер возвращает ответ, содержащий следующие параметры:

Параметр Тип Пример Описание
env String wmtest107 Окружение (environment) Webim
port Integer 8248 Номер порта
startTs Float 1759500493.7488275 Время последнего рестарта бэкенда (unix timestamp)
startTime String 03-10-2025 17:08:13 Человекочитаемое время последнего рестарта
version String 10.7.134 Версия (сборка) Webim
osName String Ubuntu Название ОС
osVersion String 20.04 Версия ОС
ubuntuVersion String 20.04 Версия Ubuntu
branch String remotes/webim-server/release-10.7 Ветка исходного кода
revision String xxx Хэш ревизии исходного кода
tag String remotes/webim-server/release-10.7 Тег/метка сборки
avgNTries Float 0.0 Среднее число попыток связи фронтенда клиента с бэкендом при long polling
n Integer 2 Количество циклов обновления числа попыток связи
storingEnabled Boolean true Возможна ли запись в БД
nodeName String "" Имя узла (если задано)
multinodeMode String "" Признак мультинодного режима
host String wmtest107.webim.ru Имя хоста

/l/a/monitor/connect-to-db

Эндпоинт проверяет, что у Chat Backend есть подключение к базе данных. Проверка выполняется простейшим способом и предназначена для использования в системах мониторинга.

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.

Пример curl-запроса:

curl --request GET --url 'https://companyname.webim.ru/l/a/monitor/connect-to-db' --header 'Authorization: Basic S0me7eX7'

В случае успеха сервер возвращает ответ:

200
{'result': 'ok'}

Если подключение к базе данных отсутствует или проверка завершилась ошибкой, сервер возвращает:

500
{'result': 'error', 'e': 'Failed to connect to database meta'}

Поле e содержит текст исключения. Возможные варианты:

  • Failed to connect to database meta — отсутствует соединение с мета-БД.

  • Failed to connect to database pro @{account_name} — отсутствует соединение с pro-БД указанного аккаунта.


/l/a/monitor/timer-stats

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.

Пример curl-запроса:

curl --request GET   --url 'https://companyname.webim.ru/l/a/monitor/timer-stats?='   --header 'Authorization: Basic S0me7eX7'

Пример ответа:

{
  "last_min": {
    "timer: close_surveys_if_needed": {
      "count": 1,
      "execution_times": [
        0.00010848045349121094
      ],
      "func_name": "t"
    },
    "timer: hide_or_unhide_chats_if_necessary": {
      "count": 1,
      "execution_times": [
        0.00017142295837402344
      ],
      "func_name": "t"
    },
    "timer: recheck_all_session_subset": {
      "count": 1,
      "execution_times": [
        0.0003540515899658203
      ],
      "func_name": "t"
    },
    "timer: BackgroundStorager 0": {
      "count": 20,
      "execution_times": [
        0.0001277923583984375,
        ...
      ],
      "func_name": "t"
    },
    "timer: BackgroundStorager 1": {
      "count": 20,
      "execution_times": [
        0.00008273124694824219,
        ...
      ],
      "func_name": "t"
    },
    ...
  },
  "failed": []
}

Сервер возвращает ответ, содержащий следующие параметры:

Параметр Описание
last_min Словарь текущих задач, запущенных в таймерах за последние 60 секунд
failed Список задач, завершившихся ошибкой

Параметры словаря last_min (по каждой задаче):

Параметр Тип Пример Описание
<имя таймера>.count Integer 1 Количество выполнений за последние 60 секунд
<имя функции>.execution_times Array of floats [0.0001277923583984375, 0.0003540515899658203] Время выполнения по запускам
<имя функции>.func_name String t Имя задачи

Параметры словаря failed (для каждого элемента списка):

Параметр Тип Пример Описание
timer_name String CachedBelongingToCurrentTornadoInstance update_data async Имя таймера
func_name String update_data Имя функции
execution_time Float 27.347047567367554 Длительность выполнения
ts Float 1623246738.8386502 Метка времени

/l/a/monitor/accounts-stat

Мониторинг данных аккаунта.

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.

Пример curl-запроса:

curl --request GET   --url 'https://companyname.webim.ru/l/a/monitor/accounts-stat?='   --header 'Authorization: Basic S0me7eX7'

Пример ответа на запрос:

[
  {
    "name": "TOTAL",
    "sessions_cnt": 13,
    "visible_sessions_cnt": 13,
    "alive_sessions_cnt": 13,
    "pages_cnt": 12,
    "alive_pages_cnt": 0,
    "online_operators_cnt": 2,
    "working_operators_cnt": 2,
    "chats_cnt": 1,
    "offline_chats_cnt": 1,
    "in_queue_cnt": 2,
    "failed_to_store_objects_cnt": 0,
    "collected_to_store_objects_cnt": 0,
    "being_stored_now_objects_cnt": 0,
    "being_stored_now_processed_objects_cnt": 0,
    "failed_to_store_objects_cnt_1": 0,
    "collected_to_store_objects_cnt_1": 0,
    "being_stored_now_objects_cnt_1": 0,
    "being_stored_now_processed_objects_cnt_1": 0,
    "not_belongs_to_tornado_instance": 0
  },
  {
    "name": "wmtest107",
    "domain": "wmtest107.webim.ru",
    "sessions_cnt": 13,
    "visible_sessions_cnt": 13,
    "alive_sessions_cnt": 13,
    "pages_cnt": 12,
    "alive_pages_cnt": 0,
    "online_operators_cnt": 2,
    "working_operators_cnt": 2,
    "chats_cnt": 1,
    "offline_chats_cnt": 1,
    "in_queue_cnt": 2,
    "failed_to_store_objects_cnt": 0,
    "collected_to_store_objects_cnt": 0,
    "being_stored_now_objects_cnt": 0,
    "being_stored_now_processed_objects_cnt": 0,
    "failed_to_store_objects_cnt_1": 0,
    "collected_to_store_objects_cnt_1": 0,
    "being_stored_now_objects_cnt_1": 0,
    "being_stored_now_processed_objects_cnt_1": 0,
    "not_belongs_to_tornado_instance": false,
    "ignore_not_belongs_to_tornado_instance": false
  }
]

Сервер возвращает ответ, содержащий следующие параметры:

Параметр Тип Пример Описание
name String wmtest107 Имя аккаунта или TOTAL для агрегированных значений
domain String wmtest107.webim.ru Домен аккаунта
sessions_cnt Integer 13 Количество чат-сессий (VisitSession)
visible_sessions_cnt Integer 13 Количество отображаемых чат-сессий
alive_sessions_cnt Integer 13 Количество активных (alive) чат-сессий
pages_cnt Integer 12 Всего посещаемых страниц (VisitedPage)
alive_pages_cnt Integer 0 Количество активных посещаемых страниц
online_operators_cnt Integer 2 Количество операторов онлайн
working_operators_cnt Integer 2 Количество работающих операторов
chats_cnt Integer 1 Всего чатов
offline_chats_cnt Integer 1 Всего офлайн-чатов
in_queue_cnt Integer 2 Количество чатов в очереди
failed_to_store_objects_cnt Integer 0 Объектов на запись с ошибкой (storager 0)
collected_to_store_objects_cnt Integer 0 Объектов в очереди на запись (storager 0)
being_stored_now_objects_cnt Integer 0 Объектов сейчас пишется (storager 0)
being_stored_now_processed_objects_cnt Integer 0 Обработанных объектов сейчас (storager 0)
failed_to_store_objects_cnt_1 Integer 0 Объектов на запись с ошибкой (storager 1)
collected_to_store_objects_cnt_1 Integer 0 Объектов в очереди на запись (storager 1)
being_stored_now_objects_cnt_1 Integer 0 Объектов сейчас пишется (storager 1)
being_stored_now_processed_objects_cnt_1 Integer 0 Обработанных объектов сейчас (storager 1)
not_belongs_to_tornado_instance Integer 0 Запросов, направленных не к тому экземпляру tornado
ignore_not_belongs_to_tornado_instance Boolean false Флаг игнорирования метки not_belongs_to_tornado_instance

/l/a/monitor/zabbix/tornado

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.

Пример curl-запроса:

curl --request GET   --url 'https://companyname.webim.ru/l/a/monitor/zabbix/tornado?='   --header 'Authorization: Basic S0me7eX7'

Пример ответа на запрос:

{
  "sessions_cnt": 13,
  "working_operators_cnt": 2,
  "chats_cnt": 2,
  "accounts_cnt": 1,
  "failed_to_store_objects_cnt": 0,
  "collected_to_store_objects_cnt": 0
}

Сервер возвращает ответ, содержащий следующие параметры:

Параметр Тип Пример Описание
sessions_cnt Integer 1 Количество чат-сессий (VisitSession)
working_operators_cnt Integer 0 Количество работающих операторов
chats_cnt Integer 0 Всего чатов
accounts_cnt Integer 1 Количество активных аккаунтов Webim на данном бэкенде
failed_to_store_objects_cnt Integer 0 Количество объектов для сохранения в базу данных с ошибкой сохранения
collected_to_store_objects_cnt Integer 0 Количество объектов для сохранения в базу данных (в очереди)

/l/a/monitor/zabbix/channels

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.

Пример curl-запроса:

curl --request GET   --url 'https://companyname.webim.ru/l/a/monitor/zabbix/channels?='   --header 'Authorization: Basic S0me7eX7'

Пример ответа на запрос:

{
  "channels": {
    "telegram": {
      "error_cnt": 1
    },
    "vk": {
      "error_cnt": 1
    }
  }
}

Сервер возвращает ответ, содержащий словарь из каналов, по которым были возвращены ошибки. Словарь содержит следующие параметры:

Параметр Тип Пример Описание
channels.<название канала>.error_cnt Integer 1 Общее число ошибок (для каждого канала)

/l/a/monitor/collected-to-store-objects

Возвращает словарь классов объектов на сохранение и количество ошибок по ним.

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю с указанием аргументов.

Пример curl-запроса:

curl --request GET   --url 'https://companyname.webim.ru/l/a/monitor/collected-to-store-objects?mode=stats&account_name=companyname&collector_name=collected_to_store&num=100'   --header 'Authorization: Basic S0me7eX7'

/l/a/object-stats

Возвращает словарь системных объектов со статистикой ObjGraph по ним с лимитом 50 штук.

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.

Пример curl-запроса:

curl --request GET   --url https://companyname.webim.ru/l/a/object-stats   --header 'Authorization: Basic S0me7eX7'

/l/i/instance-id

Возвращает значение параметра TORNADO_INSTANCE_ID, который генерируется во время запуска Chat Backend. Изменение значения параметра говорит о перезапуске Chat Backend.

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.

Пример curl-запроса:

curl --request GET   --url https://companyname.webim.ru/l/i/instance-id   --header 'Authorization: Basic S0me7eX7'

Пример ответа:

9b5ad6b158354197bcfb949c55756c4c

/l/i/account-state?action=get_state

Возвращает параметр blocked — заблокирован ли аккаунт (true/false).

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.

Пример curl-запроса:

curl --request GET   --url 'https://companyname.webim.ru/l/i/account-state?action=get_state'   --header 'Authorization: Basic S0me7eX7'

Пример ответа:

{
  "blocked": false
}

/service/monitor/get-tornado-ports.php

Возвращает список TCP-портов, на которых отвечает Chat Backend.

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.

Пример curl-запроса:

curl --request GET   --url https://companyname.webim.ru/webim/service/monitor/get-tornado-ports.php   --header 'Authorization: Basic S0me7eX7'   --cookie 'WEBIM_LOCALE=ru; PHPSESSID=asur94kg5skdnm5kdg7sukc7f4'

Пример ответа:

[
  "8364",
  "8366",
  "8378",
  "8239",
  "8371",
  "8320",
  "8290",
  "8280",
  "8264",
  "8263",
  "8370",
  "8266",
  "8267"
]

/service/monitor/get-all-env-list.php

Возвращает словарь окружений на сервере. Содержит названия хостов, ip-адреса и окружения.

Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.

Пример curl-запроса:

curl --request GET   --url https://companyname.webim.ru/webim/service/monitor/get-all-env-list.php   --header 'Authorization: Basic S0me7eX7'   --cookie 'WEBIM_LOCALE=ru; PHPSESSID=asur94phj6kfhm5akfh4tkc7f4'

Пример ответа:

[
  {
    "host": "s1",
    "env": "eta",
    "ip": "31.41.158.42"
  },
  {
    "host": "s1",
    "env": "epsilon",
    "ip": "31.41.158.42"
  }
]

Сервер возвращает ответ, содержащий следующие параметры:

Параметр Тип Пример Описание
host String s1 Название хоста
env String eta Окружение (environment) Webim
ip String 31.41.158.42 IP-адрес хоста

/service/info.php

Возвращает информацию о размещении Webim.

Для проверки будет необходимо авторизоваться с сервисным логином и паролем Webim.

Пример curl-запроса:

curl --request GET   --url https://companyname.webim.ru/webim/service/info.php   --header 'Authorization: Basic S0me7eX7'   --cookie 'WEBIM_LOCALE=ru; PHPSESSID=asur94phj3fdnm5aut1sukc7f4'

Пример ответа:

array(12) {
  ["tornado port"]=>
  string(4) "8267"
  ["agent backend port"]=>
  string(4) "6001"
  ["account name"]=>
  string(7) "companyname"
  ["script location"]=>
  string(7) "companyname"
  ["tornado location"]=>
  string(0) ""
  ["server"]=>
  string(14) "s999.webim.ru
"
  ["branch"]=>
  string(13) "release-10.7
"
  ["revision"]=>
  string(41) "09523fed398a6351c5kfh637d6f5b1a6875232b7
"
  ["version"]=>
  string(6) "10.7.x"
  ["https"]=>
  string(8) "https://"
  ["uptime"]=>
  string(71) " 21:48:59 up 36 days, 22:02,  0 users,  load average: 1.62, 0.65, 0.35
"
  ["connections"]=>
  NULL
}

Сервер возвращает ответ, содержащий следующие параметры:

Параметр Тип Пример Описание
tornado port String 8267 TCP/IP порт Chat Backend
agent backend port String 6001 TCP/IP порт Admin Backend
account name String companyname Название аккаунта Webim
script location String companyname Имя PHP-окружения
tornado location String Имя окружения Chat Backend
server String s999.webim.ru Hostname сервера, на котором работает PHP
branch String release-10.7 Имя ветки с исходным кодом
revision String 09523fed398a6351c595df37d6f5b1a2904952b7 Ревизия исходного кода
version String 10.7.x Версия Webim
https String https:// Протокол http/https
uptime String 21:48:59 up 36 days, 22:02, 0 users, load average: 1.62, 0.65, 0.35 Время с момента старта ОС на сервере, на котором запущен Webim
connections String Соединения PHP-бэкенда с СУБД

/l/a/monitor/set-log-level

{: #set-log-level}

Позволяет динамически изменять уровень логирования для определенных компонентов системы Webim.

Пример curl-запроса:

curl --request GET   --url 'https://companyname.webim.ru/l/a/monitor/set-log-level?name=auth&level=DEBUG&current_node_only=true'   --header 'Authorization: Basic S0me7eX7'
Параметр Тип Пример Описание
name String auth Имя компонента или подсистемы, для которой необходимо изменить уровень логирования
level String DEBUG Уровень логирования, который необходимо установить для указанного компонента. Допустимые значения: DEBUG, INFO, WARN, ERROR, FATAL
current_node_only Boolean true Применить изменение только на текущем узле (в мультинодной конфигурации)

Возвращаемые значения:

200 OK при успешном изменении уровня логирования.

400 Bad Request если параметры не заданы или заданы неверно.

500 Internal Server Error при возникновении ошибки на сервере.