Описание эндпоинтов мониторинга
Возможности мониторинга работы сервиса Webim и его компонентов, а также рекомендации по настройке мониторинга описаны в этой статье. Ниже будут изложены конкретные эндпоинты, которые можно использовать в рамках мониторинга.
Структура 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": "wmdemo5",
"port": 8267,
"startTs": 1622648958.2465138,
"startTime": "02-06-2021 18:49:18",
"version": "10.3.4",
"ubuntuVersion": "16.04",
"branch": "release-10.3",
"revision": "09523fed398a6351c595df37d6f5b1a2904952b7",
"avgNTries": 0,
"n": 0,
"storingEnabled": true
},
"host": "wmdemo5.webim.ru"
}
Сервер возвращает ответ, содержащий следующие параметры:
Параметр | Тип | Пример | Описание |
---|---|---|---|
env |
String |
wmdemo5 |
Окружение (environment) Webim |
port |
Integer |
8267 |
Номер порта |
startTs |
Float |
1622648958.2465138 |
Время последнего рестарта бэкенда |
startTime |
String |
02-06-2021 18:49:18 |
Время последнего рестарта бэкенда |
version |
String |
10.3.4 |
Версия (сборка) Webim |
ubuntuVersion |
String |
16.04 |
Версия ОС |
branch |
String |
release-10.3 |
Ветка кода Webim |
revision |
String |
09523fed398a6351c595df37d6f5b1a2904952b7 |
Хэш коммита, по которому сделана данная сборка **Webim, в guid-формате |
avgNTries |
Integer |
0 |
Среднее число попыток связи фронтэнда клиента с бэкендом Webim при использовании long polling — чем больше значение, тем хуже связь |
n |
Integer |
0 |
Количество циклов обновления числа попыток связи фронтэнда клиента с бэкендом Webim |
storingEnabled |
Boolean |
true |
Возможна ли запись в базу данных |
host |
String |
wmdemo5.webim.ru |
Имя хоста Webim |
/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: hide_chats_if_necessary": {
"count": 2,
"execution_times": [
4.220008850097656e-05,
4.3392181396484375e-05
],
"func_name": "t"
},
"timer: recheck_all_session_subset": {
"count": 1,
"execution_times": [
4.2438507080078125e-05
],
"func_name": "t"
},
...
"failed": [
{
"timer_name": "CachedBelongingToCurrentTornadoInstance update_data async",
"func_name": "__update_data",
"execution_time": 15.081258773803711,
"ts": 1623233952.7438087
},
{
"timer_name": "CachedPrevPeriodsStatistics update_data async",
"func_name": "__update_data",
"execution_time": 27.347047567367554,
"ts": 1623246738.8386502
},
...
]
}
Сервер возвращает ответ, содержащий следующие параметры:
Параметр | Описание |
---|---|
last_min |
Словарь текущих задач, запущенных в таймерах за последние 60 секунд |
failed |
Словарь задач, запущенных в таймерах и завершившихся ошибкой |
Параметры словаря last_min
:
Параметр | Тип | Пример | Описание |
---|---|---|---|
<имя таймера>.count |
Integer |
2 |
Количество раз выполнения текущей задачи, запущенной в последние 60 секунд |
<имя функции>.execution_times |
Array of floats |
[4.220008850097656e-05, 4.3392181396484375e-05] |
Массив, содержащий значения времени выполнения задачи (количество значений соответствует количеству раз выполнения задачи) |
<имя функции>.func_name |
String |
t |
Наименование задачи, запущенной в таймере в течение последних 60 секунд |
Параметры словаря 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": 10,
"visible_sessions_cnt": 10,
"alive_sessions_cnt": 10,
"pages_cnt": 5,
"alive_pages_cnt": 5,
"online_operators_cnt": 6,
"working_operators_cnt": 6,
"chats_cnt": 10,
"offline_chats_cnt": 1,
"in_queue_cnt": 2,
"failed_to_store_objects_cnt": 1,
"collected_to_store_objects_cnt": 2,
"being_stored_now_objects_cnt": 5,
"being_stored_now_processed_objects_cnt": 11,
"not_belongs_to_tornado_instance": 1
},
{
"name": "companyname",
"domain": "companyname.webim.ru",
"sessions_cnt": 10,
"visible_sessions_cnt": 10,
"alive_sessions_cnt": 10,
"pages_cnt": 5,
"alive_pages_cnt": 5,
"online_operators_cnt": 6,
"working_operators_cnt": 6,
"chats_cnt": 10,
"offline_chats_cnt": 1,
"in_queue_cnt": 2,
"failed_to_store_objects_cnt": 1,
"collected_to_store_objects_cnt": 2,
"being_stored_now_objects_cnt": 5,
"being_stored_now_processed_objects_cnt": 11,
"not_belongs_to_tornado_instance": 1,
"ignore_not_belongs_to_tornado_instance": false
}
]
Сервер возвращает ответ, содержащий следующие параметры:
Параметр | Тип | Пример | Описание |
---|---|---|---|
sessions_cnt |
Integer |
10 |
Количество чат-сессий (VisitSession ) |
visible_sessions_cnt |
Integer |
10 |
Количество отображаемых чат-сессий |
alive_sessions_cnt |
Integer |
10 |
Количество alive чат-сессий |
pages_cnt |
Integer |
5 |
Всего посещаемых страниц (VisitedPage ) |
alive_pages_cnt |
Integer |
5 |
Количество посещаемых страниц (alive ) |
online_operators_cnt |
Integer |
6 |
Количество операторов онлайн |
working_operators_cnt |
Integer |
6 |
Количество работающих операторов |
chats_cnt |
Integer |
10 |
Всего чатов |
offline_chats_cnt |
Integer |
1 |
Всего офлайн-чатов |
in_queue_cnt |
Integer |
2 |
Количество чатов в очереди |
failed_to_store_objects_cnt |
Integer |
1 |
Количество объектов для сохранения в базу данных с ошибкой сохранения |
collected_to_store_objects_cnt |
Integer |
2 |
Количество объектов в очереди |
being_stored_now_objects_cnt |
Integer |
5 |
Количество объектов в процессе сохранения |
being_stored_now_processed_objects_cnt |
Integer |
11 |
Количество обработанных объектов (в процессе) |
not_belongs_to_tornado_instance |
Integer |
1 |
Количество запросов, направленных не к тому экземпляру tornado |
/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": 1,
"working_operators_cnt": 0,
"chats_cnt": 0,
"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/monitor/object-stats
Возвращает словарь системных объектов со статистикой ObjGraph по ним с лимитом 50 штук.
Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.
Пример curl-запроса:
curl --request GET \
--url https://companyname.webim.ru/l/a/monitor/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/aux/check-php.php
Проверяет работоспособность всех PHP-пулов Webim. Результаты пишутся в файл php-check.log
и my_php.log
.
Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.
Пример curl-запроса:
curl --request GET \
--url https://companyname.webim.ru/webim/service/aux/check-php.php \
--header 'Authorization: Basic S0me7eX7' \
--cookie 'WEBIM_LOCALE=ru; PHPSESSID=asur94phj3fdnm5aut1sukc7f4'
/service/aux/check-tornados.php
Проверяет работоспособность всех Chat Backend. Результаты пишутся в файл tornado-check.log
и my_php.log
.
Для проверки будет необходимо авторизоваться в системе по сервисному логину и паролю.
Пример curl-запроса:
curl --request GET \
--url https://companyname.webim.ru/webim/service/aux/check-tornados.php \
--header 'Authorization: Basic S0me7eX7' \
--cookie 'WEBIM_LOCALE=ru; PHPSESSID=asur94phj3fdnm5aut1sukc7f4'
/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) "6015"
["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.3
"
["revision"]=>
string(41) "09523fed398a6351c5kfh637d6f5b1a6875232b7
"
["version"]=>
string(6) "10.3.4"
["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 |
6015 |
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.3 |
Имя ветки с исходным кодом |
revision |
String |
09523fed398a6351c595df37d6f5b1a2904952b7 |
Ревизия исходного кода |
version |
String |
10.3.4 |
Версия 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 POST \
--url 'https://companyname.webim.ru/l/a/monitor/set-log-level' \
--header 'Authorization: Basic S0me7eX7' \
--header 'Content-Type: application/json' \
--data '{
"name": "auth",
"level": "DEBUG"
}'
Параметр | Тип | Пример | Описание |
---|---|---|---|
name |
String |
auth |
Имя компонента или подсистемы, для которой необходимо изменить уровень логирования |
level |
String |
DEBUG |
Уровень логирования, который необходимо установить для указанного компонента. Допустимые значения: DEBUG , INFO , WARN , ERROR , FATAL |
Возвращаемые значения:
200 OK
при успешном изменении уровня логирования.
400 Bad Request
если параметры не заданы или заданы неверно.
500 Internal Server Error
при возникновении ошибки на сервере.