Эндпоинты¶
Проект организован с использованием фреймворка FastAPI. Все вызовы реализованы асинхронно.
Включает в себя следующие ключевые эндпоинты:
URL проекта: https://statspy.lineclub.ru
Техническая документация: https://statspy.lineclub.ru/docs
1. CheckServerStats¶
| Ссылка | Метод | Название | Описание |
|---|---|---|---|
| /check/server | post | CheckServerStats | Текущее состояние сервера |
CURL
## 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=[YOUR_SERVER_KEY]"
Пример ответа
{
"index": {
"load_average": {
"1_minute": 2.22021484375,
"5_minutes": 2.646484375,
"15_minutes": 2.36083984375
},
"memory": {
"total": 80103116800,
"used_gb": 13.6884765625,
"used_percent": 18.3,
"free_gb": 60.91336441040039,
"free_percent": 81.7
},
"swap": {
"total": 4294963200,
"used_gb": 0.005771636962890625,
"used_percent": 0.1,
"free_gb": 3.9942245483398438,
"free_percent": 99.9
},
"cpu_percent": [
1.0,
6.1,
6.9,
7.1,
3.0,
6.1,
6.9,
5.9,
4.0,
1.0,
5.0,
5.1,
7.1,
6.1,
5.0,
2.9,
4.0,
9.0,
6.0,
7.0,
12.0,
3.0,
3.9,
10.0
]
},
"time": 1.0140101909637451
}
Код Python, который выполняет этот CURL
import requests
url = "https://statspy.lineclub.ru/check/server"
server_key = "[YOUR_SERVER_KEY]"
headers = {
"Content-Type": "multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__"
}
data = {
"SERVER_KEY": server_key
}
response = requests.post(url, headers=headers, data=data)
print(response.text)
2. Приём данных¶
| Ссылка | Метод | Название | Описание |
|---|---|---|---|
| /add/event | post | AddEvent | Мониторинг. Прием функциональных данных от рабочих мест (опция) |
| /add/event/json | post | AddEventJSON | Мониторинг. Прием функциональных данных от рабочих мест одним JSON ключом (опция) |
2.1 AddEvent¶
Описание
Метод для приема объекта от пользователей в Мониторинг
Параметры¶
SERVER_KEY* (строка): Ключ для выполнения транзакции.TYPE_ID* (строка): Тип события.HOOK_ID* (строка): Получатель события.MESSAGE* (строка): Системное сообщение в формате JSON.AGENT(строка): Агентское сообщение в формате JSON.
* - обязательное поле
2.1.1 Типовой запрос (без Агентских данных)¶
CURL
## AddEvent - Master
curl -X "POST" "https://statspy.lineclub.ru/add/event" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "SERVER_KEY=[YOUR_SERVER_KEY]" \
-F "TYPE_ID=[YOUR_TYPE_ID]" \
-F "HOOK_ID=[YOUR_HOOK_ID]" \
-F "MESSAGE={\"jobID\":\"[your_jbID]\",\"application\":\"[your_application]\",\"module\":\"[your_module]\",\"function\":\"[your_function]\",\"user\":{\"ID\":0,\"login\":\"system\",\"post\":\"system\",\"role\":\"monitor\",\"ip\":\"192.168.88.1\"},\"URL\":\"https://zabbix/?index=12432423423_324234.123\",\"queryParams\":\"\",\"event\":\"Warning! [и что-то там из результата инцидента ]\",\"contour\":\"master\",\"layer\":\"Infrastructure\",\"traceback\":\"Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, \"}"
Пример ответа
{
"b24": 289536,
"error": 0,
"jobID": "549e82516e15adb2d0e32851e263dmam",
"time": 1.27
}
Код Python, который выполняет этот CURL
import requests
url = "https://statspy.lineclub.ru/add/event"
server_key = "[YOUR_SERVER_KEY]"
type_id = "[YOUR_TYPE_ID]"
hook_id = "[YOUR_HOOK_ID]"
your_jbID = "[your_jbID]" # Замените на реальное значение
your_application = "[your_application]" # Замените на реальное значение
your_module = "[your_module]" # Замените на реальное значение
your_function = "[your_function]" # Замените на реальное значение
your_username = "[your_username]" # Замените на реальное значение
headers = {
"Content-Type": "multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__"
}
data = {
"SERVER_KEY": server_key,
"TYPE_ID": type_id,
"HOOK_ID": hook_id,
"MESSAGE": f'{{"jobID":"{your_jbID}","application":"{your_application}","module":"{your_module}","function":"{your_function}","user":{{"ID":0,"login":"system","post":"system","role":"monitor","ip":"192.168.88.1"}},"URL":"https://zabbix/?index=12432423423_324234.123","queryParams":"","event":"Warning! [и что-то там из результата инцидента ]","contour":"master","layer":"Infrastructure","traceback":"Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, "}}',
"AGENT": f'{{"hostname":"any-virtualbox","ip":"192.168.66.135","os_version":"#1 SMP PREEMPT_DYNAMIC Wed Aug 9 09:02:26 UTC 2023","os_name":"Linux","os_release":"6.1.44-1-MANJARO","cpu":"","cpu_usage":"48.2","memory":"15997","memory_used":"8272","memory_avail":"7168","boot_time":"2023-08-22T11:04:38","uptime":18038.426505,"username":"{your_username}","mac_address":"08:00:27:25:b1:a5","processes":{{"Xorg":428,"insomnia":235,"xfwm4":165,"copilot-agent-linux":158,"remmina":157}}}}'
}
response = requests.post(url, headers=headers, data=data)
print(response.text)
2.1.2 Расширенный запрос с полными агентскими данными (опция)¶
CURL
## AddEvent - Master
curl -X "POST" "https://statspy.lineclub.ru/add/event" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "SERVER_KEY=[YOUR_SERVER_KEY]" \
-F "TYPE_ID=[YOUR_TYPE_ID]" \
-F "HOOK_ID=[YOUR_HOOK_ID]" \
-F "MESSAGE={\"jobID\":\"[your_jbID]\",\"application\":\"[your_application]\",\"module\":\"[your_module]\",\"function\":\"[your_function]\",\"user\":{\"ID\":0,\"login\":\"system\",\"post\":\"system\",\"role\":\"monitor\",\"ip\":\"192.168.88.1\"},\"URL\":\"https://zabbix/?index=12432423423_324234.123\",\"queryParams\":\"\",\"event\":\"Warning! [и что-то там из результата инцидента ]\",\"contour\":\"master\",\"layer\":\"Infrastructure\",\"traceback\":\"Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, \"}" \
-F "AGENT={\"hostname\":\"any-virtualbox\",\"ip\":\"192.168.66.135\",\"os_version\":\"#1 SMP PREEMPT_DYNAMIC Wed Aug 9 09:02:26 UTC 2023\",\"os_name\":\"Linux\",\"os_release\":\"6.1.44-1-MANJARO\",\"cpu\":\"\",\"cpu_usage\":\"48.2\",\"memory\":\"15997\",\"memory_used\":\"8272\",\"memory_avail\":\"7168\",\"boot_time\":\"2023-08-22T11:04:38\",\"uptime\":18038.426505,\"username\":\"[your_username]\",\"mac_address\":\"08:00:27:25:b1:a5\",\"processes\":{\"Xorg\":428,\"insomnia\":235,\"xfwm4\":165,\"copilot-agent-linux\":158,\"remmina\":157}}"
Пример ответа
{
"b24": 289527,
"error": 0,
"jobID": "549e82516e15adb2d0e32851e263dmam",
"time": 1.32
}
Код Python, который выполняет этот CURL
pip install requests
import requests
url = "https://statspy.lineclub.ru/add/event"
server_key = "[YOUR_SERVER_KEY]"
type_id = "[YOUR_TYPE_ID]"
hook_id = "[YOUR_HOOK_ID]"
message = {
"jobID": "[your_jbID]",
"application": "[your_application]",
"module": "[your_module]",
"function": "[your_function]",
"user": {
"ID": 0,
"login": "system",
"post": "system",
"role": "monitor",
"ip": "192.168.88.1"
},
"URL": "https://zabbix/?index=12432423423_324234.123",
"queryParams": "",
"event": "Warning! [и что-то там из результата инцидента ]",
"contour": "master",
"layer": "Infrastructure",
"traceback": "Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, "
}
agent = {
"hostname": "any-virtualbox",
"ip": "192.168.66.135",
"os_version": "#1 SMP PREEMPT_DYNAMIC Wed Aug 9 09:02:26 UTC 2023",
"os_name": "Linux",
"os_release": "6.1.44-1-MANJARO",
"cpu": "",
"cpu_usage": "48.2",
"memory": "15997",
"memory_used": "8272",
"memory_avail": "7168",
"boot_time": "2023-08-22T11:04:38",
"uptime": 18038.426505,
"username": "[your_username]",
"mac_address": "08:00:27:25:b1:a5",
"processes": {
"Xorg": 428,
"insomnia": 235,
"xfwm4": 165,
"copilot-agent-linux": 158,
"remmina": 157
}
}
files = {
'MESSAGE': (None, str(message)),
'AGENT': (None, str(agent)),
}
headers = {
'Content-Type': 'multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__',
}
params = {
'SERVER_KEY': server_key,
'TYPE_ID': type_id,
'HOOK_ID': hook_id,
}
response = requests.post(url, headers=headers, files=files, params=params)
print(response.status_code)
print(response.text)
2.1.3 Расширенный запрос с агентскими данными, типа ping (опция при сбоях сети)¶
CURL
## AddEvent - Master
curl -X "POST" "https://statspy.lineclub.ru/add/event" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "SERVER_KEY=h5IX7dtWKuO13VMhzxhd9H21IkTTI4wL7ibvlQ7W7i4vX8FKikiUrGB5XWuCLbrd" \
-F "TYPE_ID=error" \
-F "HOOK_ID=chat1418" \
-F "MESSAGE={\"jobID\":\"[your_jbID]\",\"application\":\"[your_application]\",\"module\":\"[your_module]\",\"function\":\"[your_function]\",\"user\":{\"ID\":0,\"login\":\"system\",\"post\":\"system\",\"role\":\"monitor\",\"ip\":\"192.168.88.1\"},\"URL\":\"https://zabbix/?index=12432423423_324234.123\",\"queryParams\":\"\",\"event\":\"Warning! [и что-то там из результата инцидента ]\",\"contour\":\"master\",\"layer\":\"Infrastructure\",\"traceback\":\"Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, \"}" \
-F "AGENT={\"ping\":{\"avg\":\"87.782µs\",\"hostname\":\"any-virtualbox\",\"ip\":\"127.0.1.1\",\"max\":\"116.464µs\",\"min\":\"66.656µs\",\"packet_loss\":{\"percent\":0,\"received\":3,\"sent\":3}}}"
Пример ответа
{
"b24": 289535,
"error": 0,
"jobID": "549e82516e15adb2d0e32851e263dmam",
"time": 1.35
}
Код Python, который выполняет этот CURL
pip install requests
import requests
url = "https://statspy.lineclub.ru/add/event"
server_key = "[YOUR_SERVER_KEY]"
type_id = "[YOUR_TYPE_ID]"
hook_id = "[YOUR_HOOK_ID]"
message = {
"jobID": "[your_jbID]",
"application": "[your_application]",
"module": "[your_module]",
"function": "[your_function]",
"user": {
"ID": 0,
"login": "system",
"post": "system",
"role": "monitor",
"ip": "192.168.88.1"
},
"URL": "https://zabbix/?index=12432423423_324234.123",
"queryParams": "",
"event": "Warning! [и что-то там из результата инцидента ]",
"contour": "master",
"layer": "Infrastructure",
"traceback": "Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, "
}
agent = {
"hostname": "any-virtualbox",
"ip": "192.168.66.135",
"os_version": "#1 SMP PREEMPT_DYNAMIC Wed Aug 9 09:02:26 UTC 2023",
"os_name": "Linux",
"os_release": "6.1.44-1-MANJARO",
"cpu": "",
"cpu_usage": "48.2",
"memory": "15997",
"memory_used": "8272",
"memory_avail": "7168",
"boot_time": "2023-08-22T11:04:38",
"uptime": 18038.426505,
"username": "[your_username]",
"mac_address": "08:00:27:25:b1:a5",
"processes": {
"Xorg": 428,
"insomnia": 235,
"xfwm4": 165,
"copilot-agent-linux": 158,
"remmina": 157
}
}
files = {
'MESSAGE': (None, str(message)),
'AGENT': (None, str(agent)),
}
headers = {
'Content-Type': 'multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__',
}
params = {
'SERVER_KEY': server_key,
'TYPE_ID': type_id,
'HOOK_ID': hook_id,
}
response = requests.post(url, headers=headers, files=files, params=params)
print(response.status_code)
print(response.text)
2.2 AddEventJSON¶
Транзакционный метод!
Описание
Метод для приема функциональных данных от рабочих мест одним, объединенным JSON ключом.
Параметры
JSON_OBJECT(строка): Объект с описанием события в формате минимизированного JSON.
2.2.1 Типовой запрос (без Агентских данных)¶
Пример базового запроса
## AddEvent - Master JSON
curl -X "POST" "https://statspy.lineclub.ru/add/event/json" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "JSON_OBJECT={\"SERVER_KEY\":\"[YOUR_SERVER_KEY]\",\"TYPE_ID\":\"error\",\"HOOK_ID\":\"[YOUR_HOOK_ID]]\",\"MESSAGE\":{\"jobID\":\"yIJCtA9URWfxdvUCCwhUnT3bwkC7xr6Z\",\"application\":\"Server\",\"module\":\"vistatest\",\"function\":\"CPU\",\"user\":{\"ID\":0,\"login\":\"system\",\"department\":\"Подразделение 1\",\"post\":\"system\",\"role\":\"monitor\",\"ip\":\"192.168.88.1\"},\"URL\":\"https://zabbix/?index=12432423423_324234.123\",\"queryParams\":\"\",\"event\":\"Warning! [и что-то там из результата инцидента ]\",\"contour\":\"master\",\"layer\":\"Infrastructure\",\"traceback\":\"Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, \"}}"
Пример ответа
{
"b24": 289570,
"error": 0,
"jobID": "yIJCtA9URWfxdvUCCwhUnT3bwkC7xr6Z",
"time": 1.15
}
Код Python, который выполняет этот CURL
pip install requests
import requests
url = "https://statspy.lineclub.ru/add/event"
server_key = "[YOUR_SERVER_KEY]"
type_id = "[YOUR_TYPE_ID]"
hook_id = "[YOUR_HOOK_ID]"
message = {
"jobID": "[your_jbID]",
"application": "[your_application]",
"module": "[your_module]",
"function": "[your_function]",
"user": {
"ID": 0,
"login": "system",
"post": "system",
"role": "monitor",
"ip": "192.168.88.1"
},
"URL": "https://zabbix/?index=12432423423_324234.123",
"queryParams": "",
"event": "Warning! [и что-то там из результата инцидента ]",
"contour": "master",
"layer": "Infrastructure",
"traceback": "Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, "
}
agent = {
"hostname": "any-virtualbox",
"ip": "192.168.66.135",
"os_version": "#1 SMP PREEMPT_DYNAMIC Wed Aug 9 09:02:26 UTC 2023",
"os_name": "Linux",
"os_release": "6.1.44-1-MANJARO",
"cpu": "",
"cpu_usage": "48.2",
"memory": "15997",
"memory_used": "8272",
"memory_avail": "7168",
"boot_time": "2023-08-22T11:04:38",
"uptime": 18038.426505,
"username": "[your_username]",
"mac_address": "08:00:27:25:b1:a5",
"processes": {
"Xorg": 428,
"insomnia": 235,
"xfwm4": 165,
"copilot-agent-linux": 158,
"remmina": 157
}
}
files = {
'MESSAGE': (None, str(message)),
'AGENT': (None, str(agent)),
}
headers = {
'Content-Type': 'multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__',
}
params = {
'SERVER_KEY': server_key,
'TYPE_ID': type_id,
'HOOK_ID': hook_id,
}
response = requests.post(url, headers=headers, files=files, params=params)
print(response.status_code)
print(response.text)
2.2.2 Расширенный запрос с полными агентскими данными (опция)¶
Пример базового запроса
## AddEvent - Master JSON
curl -X "POST" "https://statspy.lineclub.ru/add/event/json" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "JSON_OBJECT={\"SERVER_KEY\":\"h5IX7dtWKuO13VMhzxhd9H21IkTTI4wL7ibvlQ7W7i4vX8FKikiUrGB5XWuCLbrd\",\"TYPE_ID\":\"error\",\"HOOK_ID\":\"chat1418\",\"MESSAGE\":{\"jobID\":\"yIJCtA9URWfxdvUCCwhUnT3bwkC7xr6Z\",\"application\":\"Server\",\"module\":\"vistatest\",\"function\":\"CPU\",\"user\":{\"ID\":0,\"login\":\"system\",\"department\":\"Название подразделения\",\"post\":\"system\",\"role\":\"monitor\",\"ip\":\"192.168.88.1\"},\"URL\":\"https://zabbix/?index=12432423423_324234.123\",\"queryParams\":\"\",\"event\":\"Warning! [и что-то там из результата инцидента ]\",\"contour\":\"master\",\"layer\":\"Infrastructure\",\"traceback\":\"Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, \"},\"AGENT\":{\"hostname\":\"hostname\",\"ip\":\"192.168.66.135\",\"os_version\":\"#1 SMP PREEMPT_DYNAMIC Wed Aug 9 09:02:26 UTC 2023\",\"os_name\":\"Linux\",\"os_release\":\"6.1.44-1-MANJARO\",\"cpu\":\"\",\"cpu_usage\":\"48.2\",\"memory\":\"15997\",\"memory_used\":\"8272\",\"memory_avail\":\"7168\",\"boot_time\":\"2023-08-22T11:04:38\",\"uptime\":18038.426505,\"username\":\"wladbelsky\",\"mac_address\":\"08:00:27:25:b1:a5\",\"processes\":{\"Xorg\":428,\"insomnia\":235,\"xfwm4\":165,\"copilot-agent-linux\":158,\"remmina\":157}}}"
Пример ответа
{
"b24": 289570,
"error": 0,
"jobID": "yIJCtA9URWfxdvUCCwhUnT3bwkC7xr6Z",
"time": 1.04
}
Код Python, который выполняет этот CURL
import requests
url = "https://statspy.lineclub.ru/add/event/json"
headers = {
'Content-Type': 'multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__',
}
json_data = {
"SERVER_KEY": "[YOUR_SERVER_KEY]",
"TYPE_ID": "[YOUR_TYPE_ID]",
"HOOK_ID": "[YOUR_HOOK_ID]",
"MESSAGE": {
"jobID": "[YOUR_JOB_ID]",
"application": "[YOUR_APP_NAME]",
"module": "[YOUR_MOD_NAME]",
"function": "[YOUR_FUNC_NAME]",
"user": {
"ID": 0,
"login": "system",
"department": "Название подразделения",
"post": "system",
"role": "monitor",
"ip": "192.168.88.1"
},
"URL": "https://zabbix/?index=12432423423_324234.123",
"queryParams": "",
"event": "Warning! [и что-то там из результата инцидента ]",
"contour": "master",
"layer": "Infrastructure",
"traceback": "Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, "
},
"AGENT": {
"hostname": "any-virtualbox",
"ip": "192.168.66.135",
"os_version": "#1 SMP PREEMPT_DYNAMIC Wed Aug 9 09:02:26 UTC 2023",
"os_name": "Linux",
"os_release": "6.1.44-1-MANJARO",
"cpu": "",
"cpu_usage": "48.2",
"memory": "15997",
"memory_used": "8272",
"memory_avail": "7168",
"boot_time": "2023-08-22T11:04:38",
"uptime": 18038.426505,
"username": "UserName",
"mac_address": "08:00:27:25:b1:a5",
"processes": {
"Xorg": 428,
"insomnia": 235,
"xfwm4": 165,
"copilot-agent-linux": 158,
"remmina": 157
}
}
}
response = requests.post(url, headers=headers, json=json_data)
print(response.text)
2.2.3 Расширенный запрос с агентскими данными, типа ping (опция при сбоях сети)¶
Пример базового запроса
## AddEvent - Master JSON
curl -X "POST" "https://statspy.lineclub.ru/add/event/json" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "JSON_OBJECT={\"SERVER_KEY\":\"[YOUR_SERVER_KEY]\",\"TYPE_ID\":\"[YOUR_TYPE_ID]\",\"HOOK_ID\":\"[YOUR_HOOK_ID]]\",\"MESSAGE\":{\"jobID\":\"yIJCtA9URWfxdvUCCwhUnT3bwkC7xr6Z\",\"application\":\"Server\",\"module\":\"vistatest\",\"function\":\"CPU\",\"user\":{\"ID\":0,\"login\":\"system\",\"department\":\"Название подразделения\",\"post\":\"system\",\"role\":\"monitor\",\"ip\":\"192.168.88.1\"},\"URL\":\"https://zabbix/?index=12432423423_324234.123\",\"queryParams\":\"\",\"event\":\"Warning! [и что-то там из результата инцидента ]\",\"contour\":\"master\",\"layer\":\"Infrastructure\",\"traceback\":\"Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, \"},\"AGENT\":{\"hostname\":\"hostname\",\"ip\":\"192.168.66.135\",\"os_version\":\"#1 SMP PREEMPT_DYNAMIC Wed Aug 9 09:02:26 UTC 2023\",\"os_name\":\"Linux\",\"os_release\":\"6.1.44-1-MANJARO\",\"cpu\":\"\",\"cpu_usage\":\"48.2\",\"memory\":\"15997\",\"memory_used\":\"8272\",\"memory_avail\":\"7168\",\"boot_time\":\"2023-08-22T11:04:38\",\"uptime\":18038.426505,\"username\":\"wladbelsky\",\"mac_address\":\"08:00:27:25:b1:a5\",\"processes\":{\"Xorg\":428,\"insomnia\":235,\"xfwm4\":165,\"copilot-agent-linux\":158,\"remmina\":157}}}"
Пример ответа
{
"b24": 289570,
"error": 0,
"jobID": "yIJCtA9URWfxdvUCCwhUnT3bwkC7xr6Z",
"time": 1.04
}
Код Python, который выполняет этот CURL
import requests
url = "https://statspy.lineclub.ru/add/event/json"
headers = {
'Content-Type': 'multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__',
}
json_data = {
"SERVER_KEY": "[YOUR_SERVER_KEY]",
"TYPE_ID": "[YOUR_TYPE_ID]",
"HOOK_ID": "[YOUR_HOOK_ID]",
"MESSAGE": {
"jobID": "[YOUR_JOB_ID]",
"application": "[YOUR_APP_NAME]",
"module": "[YOUR_MOD_NAME]",
"function": "[YOUR_FUNC_NAME]",
"user": {
"ID": 0,
"login": "system",
"department": "Название подразделения",
"post": "system",
"role": "monitor",
"ip": "192.168.88.1"
},
"URL": "https://zabbix/?index=12432423423_324234.123",
"queryParams": "",
"event": "Warning! [и что-то там из результата инцидента ]",
"contour": "master",
"layer": "Infrastructure",
"traceback": "Полная детализация по инциденту snils : 720 660 490 74, mail: it@it.ru, "
},
"AGENT": {
"ping": {
"avg": "87.782µs",
"hostname": "any-virtualbox",
"ip": "127.0.1.1",
"max": "116.464µs",
"min": "66.656µs",
"packet_loss": {
"percent": 0,
"received": 3,
"sent": 3
}
}
}
}
response = requests.post(url, headers=headers, json=json_data)
print(response.text)
3. AddAutoTask¶
Описание¶
Метод для постановки автозадач по следующей логике:
1. Берем все события за определенный период, исключая TYPE_ID=start, TYPE_ID=finish. Обрабатываем выдачу, учитывая уникальный архитектурный путь и состояние. Результатом является уникальный taskCode.
2. Если у taskCode событий больше 2-х, проверяем наличие задачи с таким taskCode в Битрикс24. Если задачи нет - она создается по методике SMART. Если задача есть, проверяется ее статус. Если задача в сталдии "Ждёт контроля" или "Завершена" - она будет возобновлена автоматически.
Метод выполняется автоматически, каждую минуту и не требует интеграций
Параметры¶
SERVER_KEY(строка): Ключ для выполнения транзакции.
Пример запроса¶
## Autotask.ADD
curl -X "POST" "https://statspy.lineclub.ru/add/autotask" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "SERVER_KEY=[YOUR_SERVER_KEY]"
Пример ответа¶
{
"index": "Нет новых задач",
"time": 0.28
}
4. Поиск и фильтрация¶
Описание¶
Методы расширенного поиска в базе инцидентов
4.1 Поиск заданий по jobID¶
Параметры¶
SERVER_KEY(строка): Ключ для выполнения транзакции.JOB_IDИдентификатор задания.
Пример запроса¶
## FindJob
curl -X "POST" "https://statspy.lineclub.ru/find/job/" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "SERVER_KEY=[YOUR_SERVER_KEY]" \
-F "JOB_ID=[JOB_ID]"
Пример ответа¶
{
"index": {
"[TASK_CODE]": {
"error": [
{
"contour": "[CONTOUR]",
"application": "[APPLICATION]",
"module": "[MODULE]",
"function": "[FUNCTION]",
"layer": "[LAYER]",
"locale": "[LOCALE]",
"user": "{\"ID\": [USER_ID], \"login\": \"[USER_LOGIN]\", \"department\": \"[DEPARTMENT]\", \"post\": \"[POST]\", \"role\": \"[ROLE]\", \"ip\": \"[IP-ADDRESS]\"}",
"jobID": "[JOB_ID]",
"istype": "[TYPE_ID]",
"logURL": "[URL]",
"queryParams": "[QUERY_PARAMS]",
"isevent": "[EVENT]",
"traceback": "0 | SELECT * FROM Table c WHERE id = 404081tins .Unknown column \\'404081tins\\' in \\'where clause\\' | [DOCUMENT_ROOT]/framework/class/mysql.php | 276 | #0 [DOCUMENT_ROOT]/framework/class/mysql.php(260): mysql->q()#1 [DOCUMENT_ROOT]/framework/class/Patient.php(14): mysql->query()#2 [DOCUMENT_ROOT]/[APPLICATION]/ajax/[MODULE]/[PHP_FILE].inc.php(24): Event->__construct()#3 [DOCUMENT_ROOT]/[APPLICATION]/ajax.php(57): include_once(\\'/var/www/html/w...\\')#4 [DOCUMENT_ROOT]/[APPLICATION]/doctorroom/ajax.php(87): run()#5 {main}",
"agent": "{\"avg\":\"0s\",\"hostname\":\"[AGENT_HOSTNAME]\",\"ip\":\"[AGENT_IP]\",\"max\":\"0s\",\"min\":\"0s\",\"packet_loss\":{\"percent\":100,\"received\":2,\"sent\":0}}",
"userAgent": "Нет данных",
"userHost": "Нет данных",
"currdate": "2023-12-21 13:27:05",
"task_code": "[TASK_CODE]"
}
],
"start": [
{
"contour": "[CONTOUR]",
"application": "[APPLICATION]",
"module": "[MODULE]",
"function": "[FUNCTION]",
"layer": "[LAYER]",
"locale": "[LOCALE]",
"user": "{\"ID\": [USER_ID], \"login\": \"[USER_LOGIN]\", \"department\": \"[DEPARTMENT]\", \"post\": \"[POST]\", \"role\": \"[ROLE]\", \"ip\": \"[IP-ADDRESS]\"}",
"jobID": "[JOB_ID]",
"istype": "[TYPE_ID]",
"logURL": "[URL]",
"queryParams": "[QUERY_PARAMS]",
"isevent": "[EVENT]",
"traceback": "",
"agent": "{\"avg\":\"0s\",\"hostname\":\"[AGENT_HOSTNAME]\",\"ip\":\"[AGENT_IP]\",\"max\":\"0s\",\"min\":\"0s\",\"packet_loss\":{\"percent\":100,\"received\":2,\"sent\":0}}",
"userAgent": "Нет данных",
"userHost": "Нет данных",
"currdate": "2023-12-21 13:27:05",
"task_code": "[TASK_CODE]"
}
]
}
},
"time": 0.7268619537353516
}
Данная выдача является типовой для всех эндпоинтов этого раздела
4.2 Поиск заданий по параметрам¶
Параметры¶
SERVER_KEY(строка): Ключ для выполнения транзакции.JOB_IDИдентификатор задания.TYPE_IDТип события.HOOK_IDИдентификатор чата.CONTOURКонтур.APPLICATIONПриложение.LAYERАрхитектурный слой.MODULEМодуль.FUNCTIONФункция.TRACEBACKДетализация ошибки.
SERVER_KEY - обязательный параметр.
Остальные параметры работают по логике И и могут быть скомбинированы. Имейте в виду, что обобщенные результаты (например, ни одного параметра, кроме SERVER_KEY могут содержать значительный объем данных. Чтобы уменьшить время выполнения - конкретизируйте выдачу с помощью остальных параметров)
Пример запроса №1¶
Получить все события типа error в контуре master
## FindParams
curl -X "POST" "https://statspy.lineclub.ru/find/params/" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "SERVER_KEY=[SERVER_KEY]" \
-F "CONTOUR=master" \
-F "TYPE_ID=error"
Пример запроса №2¶
Получить все события, содержащие в описании принадлежность к PHP в контуре master
## FindParams
curl -X "POST" "https://statspy.lineclub.ru/find/params/" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "SERVER_KEY=[SERVER_KEY]" \
-F "CONTOUR=master" \
-F "TRACEBACK=.php"
Пример запроса №3¶
Получить все события типа error в контуре master, которые содержат обращение к БД типа SELECT
## FindParams
curl -X "POST" "https://statspy.lineclub.ru/find/params/" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "SERVER_KEY=[SERVER_KEY]" \
-F "CONTOUR=master" \
-F "TYPE_ID=error" \
-F "TRACEBACK=SELECT"
Пример запроса №4¶
Получить все события по полному архитектурному пути (CALMF)
## FindParams
curl -X "POST" "https://statspy.lineclub.ru/find/params/" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "SERVER_KEY=[SERVER_KEY]" \
-F "CONTOUR=[CONTOUR]" \
-F "APPLICATION=[APPLICATION]" \
-F "LAYER=[LAYER]" \
-F "MODULE=[MODULE]" \
-F "FUNCTION=[FUNCTION]"
4.3 Поиск заданий по jobID¶
Получить все транзакции с указанным jobID методом GET
Параметры¶
SERVER_KEY(строка): Ключ для выполнения транзакции.JOB_IDИдентификатор задания.
Пример запроса¶
## GetJobID
curl "https://statspy.lineclub.ru/get/job/[SERVER_KEY]/[JOB_ID]" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__'
Пример ответа¶
{
"index": {
"[JOB_ID]": {
"finish": [
{
"contour": "[CONTOUR]",
"application": "[APPLICATION]",
"module": "SEMD",
"function": "get",
"layer": "Backend",
"locale": "ru_RU",
"user": "{\"ID\": 1, \"login\": \"System\", \"department\": \"\\u041b\\u041e\\u041a\\u0411\", \"post\": \"System\", \"role\": \"System\", \"ip\": \"127.0.0.1\"}",
"jobID": "[JOB_ID]",
"istype": "[TYPE_ID]",
"logURL": "[URL]",
"queryParams": "[QUERY_PARAMS]",
"isevent": "Выполнение запроса SEMD",
"traceback": "args: ImmutableMultiDict([(\\'doc_oid\\', \\'41\\'), (\\'event_id\\', \\'953170\\'), (\\'client_id\\', \\'491562\\'), (\\'person_id\\', \\'3299\\'), (\\'template_id\\', \\'3182\\'), (\\'action_id\\', \\'1937783\\')]);host: localhost",
"agent": "{\"avg\":\"75.952\\u00b5s\",\"hostname\":\"localhost\",\"ip\":\"127.0.0.1\",\"max\":\"85.421\\u00b5s\",\"min\":\"66.482\\u00b5s\",\"packet_loss\":{\"percent\":0,\"received\":2,\"sent\":2}}",
"userAgent": "python-requests/2.24.0",
"userHost": "localhost",
"currdate": "2024-01-21 14:35:26",
"task_code": "9B092F60D3E61790C64C5EE9A71EDC0E"
}
]
}
},
"time": 0.6771585941314697
}
4.4 Поиск заданий по jobID¶
Параметры¶
SERVER_KEY(строка): Ключ для выполнения транзакции.JOB_IDИдентификатор задания.
Пример запроса¶
Пример ответа¶
4. Anomaly¶
Описание¶
Метод для поиска аномальных транзакций.
Параметры¶
SERVER_KEY(строка): Ключ для выполнения транзакции.
Пример запроса¶
Пример ответа¶
{
"time": 1.23,
"index": ["anomaly1", "anomaly2"]
}
5. HourlyStats¶
Описание¶
Метод для получения сводки за час.
Параметры¶
SERVER_KEY(строка): Ключ для выполнения транзакции.SILENT_MODE(булево): Режим выполнения.
Пример запроса¶
Пример ответа¶
{
"time": 1.23,
"index": {"stat1": 123, "stat2": 456}
}
6. Structure¶
Описание¶
Метод для получения аналитической структуры АПК на основе активности данных мониторинга.
Параметры¶
SERVER_KEY(строка): Ключ для выполнения транзакции.
Пример запроса¶
Пример ответа¶
{
"time": 1.23,
"index": {"structure1": {"substructure1": 123}, "structure2": {"substructure2": 456}}
}
7. FindJob¶
Описание¶
Метод для поиска jobID по параметрам.
Параметры¶
(См. код для полного списка параметров)
Пример запроса¶
Пример ответа¶
{
"time": 1.23,
"index": {"result1": {"details": "details1"}, "result2": {"details": "details2"}}
}
8. GetTask¶
Описание¶
Метод для поиска задачи по ее уникальному коду.
Параметры¶
server_key(строка): Ключ для выполнения транзакции.taskCode(строка): Уникальный код задачи.
Пример запроса¶
httpCopy codeGET /get/task/your_server_key/your_task_code HTTP/1.1
Host: example.com
Пример ответа¶
{
"time": 1.23,
"index": {"task_details": "details"}
}
9. GetJob¶
Описание¶
Метод для поиска jobID.
Параметры¶
server_key(строка): Ключ для выполнения транзакции.job_id(строка): Идентификатор события.
Пример запроса¶
httpCopy codeGET /get/job/your_server_key/your_job_id HTTP/1.1
Host: example.com
Пример ответа¶
{
"time": 1.23,
"index": {"job_details": "details"}
}
10. ReverseChat¶
Описание¶
Анализировать все сообщения в чате Б24 типа "Работа мониторинга" методом реверс-инжиниринга
Параметры¶
server_key(строка): Ключ для выполнения транзакции.hook_id(строка): Идентификатор чата.
Пример запроса¶
httpCopy codeGET /reverse/chat/your_server_key/your_hook_id HTTP/1.1
Host: example.com
Пример ответа¶
{
"time": 1.23,
"Index": {"chat_content": ["message1", "message2"]}
}
11. Invent¶
Описание¶
Инвентаризация оборудования, ПО, драйверов. Инспектор активности и нагрузки на парк ПК в реальном времени и ретроспективе.
Собранные агентом данные поступают на регистрацию в основную БД через брокер очередей. В ответ будет возвращён ключ uuid, указывающий на уникальный идентификатор сообщения в очереди.
Доступные значения OS_FAMILY: Windows, Linux, MacOSX с учётом регистра/
Примеры передаваемой структуры для каждой ОС:
Параметры¶
JSON_OBJECTсловарь в формате JSON.
Его структура
* SERVER_KEY (строка): Идентификатор чата.
* OS_FAMILY (строка): Идентификатор чата.
* MESSAGE (строка): Идентификатор чата.
Пример запроса¶
## AgentAddState
curl -X "POST" "https://statspy.lineclub.ru/invent/add" \
-H 'Content-Type: multipart/form-data; charset=utf-8; boundary=__X_PAW_BOUNDARY__' \
-F "JSON_OBJECT={\"SERVER_KEY\":\"[YOUR_SERVER_KEY]\",\"OS_FAMILY\":\"Linux\",\"MESSAGE\":{\"hostname\":\"hostname\",\"ip\":\"127.0.0.1\",\"os_version\":\"os_version\",\"os_name\":\"os_name\",\"os_release\":\"os_release\",\"cpu\":\"cpu_name\",\"cpu_usage\":\"cpu_usage\",\"memory\":\"memory_total\",\"memory_used\":\"memory_used\",\"memory_avail\":\"memory_avail\",\"disk_partitions\":[[\"/dev/disk1s4s1\",\"/\",\"apfs\",\"ro,local,rootfs,dovolfs,journaled,multilabel\",255,1024]],\"boot_time\":\"2023-11-22 11:05:04\",\"uptime\":\"0:31:40.766228\",\"username\":\"username\",\"mac_address\":\"00:0c:29:9a:9e:89\",\"hard\":{\"SPCameraDataType\":[],\"SPAudioDataType\":[{\"_items\":[{\"_name\":\"Built-in Line Input\",\"coreaudio_device_input\":2,\"coreaudio_device_manufacturer\":\"Apple Inc.\",\"coreaudio_device_srate\":44100,\"coreaudio_device_transport\":\"coreaudio_device_type_builtin\",\"coreaudio_input_source\":\"Line In\"}],\"_name\":\"coreaudio_device\"}],\"SPNetworkVolumeDataType\":[{\"_name\":\"home\",\"spnetworkvolume_automounted\":\"Yes\",\"spnetworkvolume_fsmtnonname\":\"/System/Volumes/Data/home\",\"spnetworkvolume_fstypename\":\"autofs\",\"spnetworkvolume_mntfromname\":\"map auto_home\"}],\"SPNetworkDataType\":[],\"SPPowerDataType\":[],\"SPBluetoothDataType\":[],\"SPNVMeDataType\":[],\"SPAirPortDataType\":[],\"SPHardwareDataType\":[],\"SPDisplaysDataType\":[]},\"soft\":{\"SPApplicationsDataType\":[{\"_name\":\"com.apple.ctcategories\",\"arch_kind\":\"arch_other\",\"lastModified\":\"2023-11-21T17:26:41Z\",\"obtained_from\":\"unknown\",\"path\":\"/Users/username/Library/HTTPStorages/com.apple.ctcategories.service\"}],\"SPLegacySoftwareDataType\":[]},\"drivers\":{\"com.apple.kpi.bsd\":{\"Index\":\"1\",\"Refs\":\"103\",\"Address\":\"0\",\"Size\":\"0\",\"Wired\":\"0\",\"Name\":\"com.apple.kpi.bsd\",\"Version\":\"(22.0.0)\",\"UUID\":\"198748B0-2858-345A-957A-45C9ACB4C2F2\",\"Description\":\"<>\"}},\"rndname\":\"rndname\"}}"
Пример ответа¶
{
"index": {
"uuid": "04613661-1469-4f3a-912c-cf66de9ec33c",
"status": "Queued",
"actions": {
"create": "2024-02-10T13:39:38.137825",
"update": "2024-02-10T13:39:38.137830"
}
},
"time": 0.07014656066894531
}
Обработка ошибок
Все ошибки выводятся стандартным способом, в виде:
{
"status": status,
"detail": detail_string
}
Например:
| Статус | Подробнее |
|---|---|
| 417 | Параметр SERVER_KEY указан некорректно |
| 417 | Параметр TYPE_ID не может быть пустым |
| 417 | Параметр TYPE_ID не соответствует ожидаемому значению |
| 417 | Параметр MESSAGE не указан или указан некорректно. jobID не найден |
| 417 | Параметр MESSAGE не указан или указан некорректно. jobID не соответствует формату |