Структура объекта¶
Принимаемый JSON-объект должен строго соответствовать нижеприведенной структуре.
Необходимый минимум структуры объектов представлен в виде структуры Python pydantic
1. Обязательная часть¶
class LogMessage(BaseModel):
SERVER_KEY: str
TYPE_ID: str
HOOK_ID: str
MESSAGE: Message
class Message(BaseModel):
jobID: constr(strip_whitespace=True, min_length=32, max_length=32)
contour: constr(strip_whitespace=True, min_length=3)
application: constr(strip_whitespace=True, min_length=3)
layer: constr(strip_whitespace=True, min_length=3)
module: constr(strip_whitespace=True, min_length=3)
function: constr(strip_whitespace=True, min_length=3)
user: User ## деперсонифицируется!
URL: Optional[str] = ""
queryParams: Optional[str] = ""
event: constr(strip_whitespace=True, min_length=50) ## деперсонифицируется!
traceback: constr(strip_whitespace=True, min_length=120) ## деперсонифицируется!
class User(BaseModel):
ip: constr(strip_whitespace=True, min_length=7)
ID: int
login: constr(strip_whitespace=True, min_length=5) ## деперсонифицируется как ИвановИИ!
post: constr(strip_whitespace=True, min_length=5)
role: constr(strip_whitespace=True, min_length=5)
department: constr(strip_whitespace=True, min_length=5)
2. Опциональная часть¶
Агентские данные - информация о состоянии рабочего места в момент инцидента. Является частью проекта Инвентаризация. Эта часть кода реализована командой профессионалов "ВистаМед" и может быть предоставлена по запросу. Представляет собой кроссплатформенный исполняемый файл для установки на локальные ПК с целью передачи данных в Мониторинг о состоянии клиента
Базовый исходный код проекта Агент на Python
class LogMessage(BaseModel):
SERVER_KEY: str
TYPE_ID: str
HOOK_ID: str
MESSAGE: Message
AGENT: Optional[Agent]
2.1 Полные агентские данные¶
class Agent_full(BaseModel):
hostname: constr(strip_whitespace=True, min_length=5)
ip: constr(strip_whitespace=True, min_length=7)
os_version: constr(strip_whitespace=True, min_length=3)
os_name: constr(strip_whitespace=True, min_length=5)
os_release: constr(strip_whitespace=True, min_length=1)
cpu: constr(strip_whitespace=True, min_length=3)
cpu_usage: constr(strip_whitespace=True, min_length=2)
memory: constr(strip_whitespace=True, min_length=3)
memory_used: constr(strip_whitespace=True, min_length=3)
memory_avail: constr(strip_whitespace=True, min_length=1)
boot_time: constr(strip_whitespace=True, min_length=3)
uptime: float
username: constr(strip_whitespace=True, min_length=3)
mac_address: constr(strip_whitespace=True, min_length=5)
processes: Optional[Dict[str, int]]
2.2 Агентские данные при сетевых сбоях¶
class Agent_ping(BaseModel):
avg: constr(strip_whitespace=True, min_length=5)
ip: constr(strip_whitespace=True, min_length=7)
hostname: constr(strip_whitespace=True, min_length=3)
max: constr(strip_whitespace=True, min_length=1)
min: constr(strip_whitespace=True, min_length=1)