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

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

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

https://{hostname}{endpoint}

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

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

/l/o/pingservice

Для проверки будет необходимо осуществить авторизацию в Agent Frontend. Авторизация осуществляется при помощи токена авторизации, передаваемого в cookies. Пример авторизации:

WEBIM_AUTH_TOKEN=MTc1OTU1fDIwMjBiMzgwYWY4ZTQ2NThhMjk1ZGI3NjY0ODVjYjI1; Expires=Tue, 25 Sep 2018 07:54:49 GMT; Domain=company.webim.ru; Path=/; HttpOnly

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

curl --request GET \
  --url 'https://companyname.webim.ru/l/o/pingservice?='

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

200 {'result': 'ok'}

В противном случае вернёт ошибку сервера (5xx).


/l/a/pingservice

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

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

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

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

200 {'result': 'ok'}

В противном случае вернёт ошибку сервера (5xx).


/l/a/monitor

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

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

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

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

{
  "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 «webimwebim» Окружение (environment) Webim.
port Integer 8260 Номер порта.
startTs Float 1623154017.400112 Время последнего рестарта бэкенда.
startTime String «08-06-2021 15:06:57» Время последнего рестарта бэкенда.
version String «10.3.25» Версия (сборка) Webim.
ubuntuVersion String «16.04» Версия ОС.
branch String «release-10.3» Ветка кода Webim.
revision String «18prk04ls3bd1715278d6987da7fbce95f60bfa2» Хэш коммита, по которому сделана данная сборка Webim, в guid-формате.
avgNTries Integer 0 Среднее число попыток связи фронтэнда клиента с бэкендом Webim при использовании long polling — чем больше значение, тем хуже связь.
n Integer 0 Количество циклов обновления числа попыток связи фронтэнда клиента с бэкендом Webim.
storingEnabled Boolean true Возможна ли запись в базу данных.
host String «companyname.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 d2FkbWluOm1lZ2FwYXNz'

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

{
  "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 d2FkbWluOm1lZ2FwYXNz'

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

[
  {
    "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": false,
    "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 d2FkbWluOm1lZ2FwYXNz'

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

{
  "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 10 Количество чат-сессий (VisitSession).
working_operators_cnt Integer 6 Количество работающих операторов.
chats_cnt Integer 10 Всего чатов.
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 d2FkbWluOm1lZ2FwYXNz'

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

{
  "channels": {
    "odnoklassniki": {
      "error_cnt": 1
    },
    "facebook": {
      "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 d2FkbWluOm1lZ2FwYXNz'

/l/a/monitor/object-stats

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

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

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

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

/l/i/instance-id

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

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

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

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

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

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 d2FkbWluOm1lZ2FwYXNz'

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

{
  "blocked": false
}

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

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

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

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

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

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

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

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

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

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

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

curl --request GET \
  --url https://companyname.webim.ru/webim/service/monitor/get-all-env-list.php \
  --header 'Authorization: Basic d2FkbWluOm1lZ2FwYXNz' \
  --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-адрес хоста.

/webim/service/aux/check-php.php

Проверяет работоспособность всех PHP-пулов Webim. Результаты пишутся в файл php-check.log и my php log.

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

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

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

/webim/service/aux/check-tornados.php

Проверяет работоспособность всех Webim Chat Backend. Результаты пишутся в файл tornado-check.log и my php log.

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

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

curl --request GET \
  --url https://companyname.webim.ru/webim/service/aux/check-tornados.php \
  --header 'Authorization: Basic d2FkbWluOm1lZ2FwYXNz' \
  --cookie 'WEBIM_LOCALE=ru; PHPSESSID=asur94phj3fdnm5aut1sukc7f4'

/webim/service/info.php

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

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

curl --request GET \
  --url https://companyname.webim.ru/webim/service/info.php \
  --header 'Authorization: Basic d2FkbWluOm1lZ2FwYXNz' \
  --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 порт Webim Chat Backend.
agent backend port String «6015» TCP/IP порт Webim Agent 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-бэкенда с СУБД.