Описание эндпоинтов мониторинга
Возможности мониторинга работы сервиса 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¤t_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 при возникновении ошибки на сервере.