wiki:UseCaseUC1PrototypeImplementation

Version 3 (modified by 231118, 4 days ago) ( diff )

--

Use-case UC1 Prototype Implementation – Испраќање и обработка на податоци

Актер кој го иницира:

  • Клиентска апликација (Agent / Collector)

Други актери:

  • Администратор

Опис

Клиентската апликација периодично собира системски информации од компјутерот и ги испраќа до серверот преку POST барање. Серверот го валидира X-Env-Token, го пронаоѓа или креира компјутерот и ги зачувува сите примени информации во базата.

Сценарио

Чекор 1

Корисник

Клиентската апликација испраќа POST барање кон серверот со X-Env-Token и собраните податоци.

Систем

Го проверува токенот и го пронаоѓа Environment-от.

SQL

SELECT env_name, tenant_id
FROM env_tokens
WHERE token = ?
  AND (expires_at IS NULL OR expires_at > datetime('now'))
LIMIT 1;

Чекор 2

Системот проверува дали компјутерот веќе постои.

SQL

SELECT id
FROM computers
WHERE tenant_id = ? AND name = ?
LIMIT 1;

Чекор 3

Доколку компјутерот веќе постои, се ажурираат неговите информации.

SQL

UPDATE computers
SET user=?, ip=?, os=?, last_seen=?, sysmon_available=?, env_name=?
WHERE id=? AND tenant_id=?;

Доколку компјутерот не постои, се додава нов запис.

SQL

INSERT INTO computers
(tenant_id, env_name, name, user, ip, os, first_seen, last_seen, sysmon_available)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);

Чекор 4

Системот ги зачувува перформансите. Најпрво ги освежува тековните метрики (snapshot што се препишува), а потоа додава запис во историјата.

SQL

DELETE FROM computer_history_current WHERE computer_id=?;

INSERT INTO computer_history_current
(computer_id, cpu_usage, ram_usage, disk_usage, network_sent_mb, network_recv_mb, timestamp)
VALUES (?, ?, ?, ?, ?, ?, ?);

INSERT INTO computer_history
(computer_id, cpu_usage, ram_usage, disk_usage, network_sent_mb, network_recv_mb, timestamp)
VALUES (?, ?, ?, ?, ?, ?, ?);

Чекор 5

Системот ги освежува тековните процеси. Најпрво ги брише старите, потоа ги внесува новите.

SQL

DELETE FROM computer_processes_current WHERE computer_id=?;

INSERT INTO computer_processes_current
(computer_id, pid, name, cpu_percent, memory_mb, username, cmdline, timestamp)
VALUES (?, ?, ?, ?, ?, ?, ?, ?);

Чекор 6

Доколку е овозможено чување историја (env_settings.save_process_history), процесите се зачувуваат и во history.

SQL

INSERT INTO computer_processes_history
(computer_id, pid, name, cpu_percent, memory_mb, username, cmdline, timestamp)
VALUES (?, ?, ?, ?, ?, ?, ?, ?);

Чекор 7

Системот ги зачувува Sysmon настаните.

SQL

INSERT INTO sysmon_events
(computer_id, event_id, event_type, message, timestamp, details)
VALUES (?, ?, ?, ?, ?, ?);

Чекор 8

Системот ги зачувува мрежните конекции — тековен snapshot, и историја доколку е овозможено (env_settings.save_network_history).

SQL

DELETE FROM network_connections_current WHERE computer_id=?;

INSERT INTO network_connections_current
(computer_id, pid, local_address, remote_address, status, process_name, timestamp)
VALUES (?, ?, ?, ?, ?, ?, ?);

INSERT INTO network_connections
(computer_id, pid, local_address, remote_address, status, process_name, timestamp)
VALUES (?, ?, ?, ?, ?, ?, ?);

Чекор 9

Системот успешно ја обработува испратената информација и враќа успешен одговор.

Attachments (9)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.