Структура запроса¶
Запрос на отправку данных состоит из 2-х частей: обязательной и опциональной.
1. Обязательная часть¶
В качестве примера, берем отправку данных на эндпоинт AddEventJSON
{
"SERVER_KEY": "[SERVER_KEY]", // ключ сервера LC.Мониторинг
"TYPE_ID": "start", // тип события
"HOOK_ID": "[HOOK_ID]]", // идентификатор чата Б24 Вашей Компании
"MESSAGE": {
"jobID": "[JOB_ID]", // идентификатор задания jobID. Для TYPE_ID=start допускается пустое значение. В этом случае, jobID сгенерирует Мониторинг и вернет его
"contour": "Мaster", // укажите контур приложения. Например: Master, RC, RC1, dev, dev1, dev_john_doe.
"application": "MyApp", // укажите название приложения
"layer": "Infrastructure", // укажите название архитектурного слоя, на котором вызывается функция. Напрмиер: Backend, Frontend, Database, Integration, Infrastructure, и пр.
"module": "test_module", // укажите название модуля, в котором находится функция
"function": "CPU", // укажите название текущей функции
"user": {
"ID": 0, // уникальный идентификатор пользователя
"login": "system", // уникальное имя пользователя
"department": "Core", // подразделение, к которому прикреплет пользователь. Например: Бот, Система, Администрация, HR и т.п.
"post": "system", // должность пользователя. Например: Генеральный директор, Зам.ГД по общим вопросам, Советник, Секретарь и т.п.
"role": "monitor", // роль пользователя в системе. Например: admin, ceo, cto, cpo, manager, и т.п.
"ip": "192.168.88.1" // текущий IP-адрес пользователя
},
"URL": "https://example.com/?index=12432423423_324234.123", // ссылка будет автоматически укорочена и показана в чате и задачах. Оригинальная сохраняется в БД и используется только в служебных целях
"queryParams": "[QUERY_PARAMS]", // параметры запроса POST, GET, PUT. Строка!
"event": "Warning! [и что-то там из результата инцидента ]",
"traceback": "Полная детализация по инциденту snils : 720 660 490 74, паспорт 12 21 123456, mail: it@it.ru, "
}
}
1.1 Прикладной пример транзакции¶
Давайте рассмотрим, один из прикладных примеров транзакции:
Допустим, у нас есть web-страница, на которой находится кнопка "Нажми меня". По клику, она запрашивает текущее состояние сервера LC.Мониторинг
## CheckServerStats
curl -X "POST" "https://statspy.lineclub.ru/check/server" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "SERVER_KEY=[SERVER_KEY]"
Код страницы будет выглядеть примерно так
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Button Click Example</title>
</head>
<body>
<button onclick="checkServerStats()">Нажми меня</button>
<script>
function checkServerStats() {
// BOF LC.Monitoring
// Здесь вызываем LC.Мониторинг с TYPE_ID=start
// EOF LC.Monitoring
var xhr = new XMLHttpRequest();
// Замените URL на ваш реальный эндпоинт сервера
var url = "https://statspy.lineclub.ru/check/server";
// Замените SERVER_KEY на ваш реальный ключ сервера
var serverKey = "[SERVER_KEY]";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-Type", "multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__");
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
// BOF LC.Monitoring
// Здесь вызываем LC.Мониторинг с TYPE_ID=finish
// EOF LC.Monitoring
alert("Результат запроса:\n" + JSON.stringify(response, null, 2));
} else if (xhr.readyState === 4) {
// BOF LC.Monitoring
// Здесь вызываем LC.Мониторинг с TYPE_ID={иное состояние}], где {иное состояние} - одно из значений TYPE_ID, кроме start и finish
// EOF LC.Monitoring
alert("Ошибка запроса. Статус: " + xhr.status);
}
};
// Сформируйте тело запроса с использованием FormData
var formData = new FormData();
formData.append("SERVER_KEY", serverKey);
xhr.send(formData);
}
</script>
</body>
</html>