Эндпоинты

Проект организован с использованием фреймворка 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

Транзакционный метод

Описание

Метод для приема объекта от пользователей в Мониторинг

Параметры

* - обязательное поле


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 ключом.

Параметры


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. Если задача есть, проверяется ее статус. Если задача в сталдии "Ждёт контроля" или "Завершена" - она будет возобновлена автоматически.

Метод выполняется автоматически, каждую минуту и не требует интеграций

Параметры

Пример запроса

## 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

Параметры

Пример запроса

## 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 - обязательный параметр.

Остальные параметры работают по логике И и могут быть скомбинированы. Имейте в виду, что обобщенные результаты (например, ни одного параметра, кроме 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

Параметры

Пример запроса

## 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

Параметры

Пример запроса


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




4. Anomaly

Описание

Метод для поиска аномальных транзакций.

Параметры

Пример запроса


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

{
  "time": 1.23,
  "index": ["anomaly1", "anomaly2"]
}

5. HourlyStats

Описание

Метод для получения сводки за час.

Параметры

Пример запроса


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

{
  "time": 1.23,
  "index": {"stat1": 123, "stat2": 456}
}

6. Structure

Описание

Метод для получения аналитической структуры АПК на основе активности данных мониторинга.

Параметры

Пример запроса


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

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

Описание

Метод для поиска задачи по ее уникальному коду.

Параметры

Пример запроса

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.

Параметры

Пример запроса

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 типа "Работа мониторинга" методом реверс-инжиниринга

Параметры

Пример запроса

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 с учётом регистра/

Примеры передаваемой структуры для каждой ОС:

Параметры

Его структура * 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 не соответствует формату