| | 1 | = Use-case UC1 Prototype Implementation – Испраќање и обработка на податоци = |
| | 2 | |
| | 3 | '''Актер кој го иницира:''' |
| | 4 | * Клиентска апликација (Agent / Collector) |
| | 5 | |
| | 6 | '''Други актери:''' |
| | 7 | * Администратор |
| | 8 | |
| | 9 | '''Опис''' |
| | 10 | |
| | 11 | Клиентската апликација периодично собира системски информации од компјутерот и ги испраќа до серверот преку POST барање. Серверот го валидира X-Env-Token, го пронаоѓа или креира компјутерот и ги зачувува сите примени информации во базата. |
| | 12 | |
| | 13 | == Сценарио == |
| | 14 | |
| | 15 | === Чекор 1 === |
| | 16 | |
| | 17 | '''Корисник''' |
| | 18 | |
| | 19 | Клиентската апликација испраќа POST барање кон серверот со X-Env-Token и собраните податоци. |
| | 20 | |
| | 21 | [[Image(UC1_step1.png,700px)]] |
| | 22 | |
| | 23 | '''Систем''' |
| | 24 | |
| | 25 | Го проверува токенот и го пронаоѓа Environment-от. |
| | 26 | |
| | 27 | '''SQL''' |
| | 28 | |
| | 29 | {{{ |
| | 30 | SELECT env_name, |
| | 31 | tenant_id |
| | 32 | FROM env_tokens |
| | 33 | WHERE token = ? |
| | 34 | AND (expires_at IS NULL |
| | 35 | OR expires_at > datetime('now')) |
| | 36 | LIMIT 1; |
| | 37 | }}} |
| | 38 | |
| | 39 | --- |
| | 40 | |
| | 41 | ### Чекор 2 |
| | 42 | |
| | 43 | Системот проверува дали компјутерот веќе постои. |
| | 44 | |
| | 45 | [[Image(UC1_step2.png,700px)]] |
| | 46 | |
| | 47 | '''SQL''' |
| | 48 | |
| | 49 | {{{ |
| | 50 | SELECT id |
| | 51 | FROM computers |
| | 52 | WHERE tenant_id = ? |
| | 53 | AND name = ? |
| | 54 | LIMIT 1; |
| | 55 | }}} |
| | 56 | |
| | 57 | --- |
| | 58 | |
| | 59 | ### Чекор 3 |
| | 60 | |
| | 61 | Доколку компјутерот веќе постои, се ажурираат неговите информации. |
| | 62 | |
| | 63 | '''SQL''' |
| | 64 | |
| | 65 | {{{ |
| | 66 | UPDATE computers |
| | 67 | SET |
| | 68 | user=?, |
| | 69 | ip=?, |
| | 70 | os=?, |
| | 71 | last_seen=?, |
| | 72 | sysmon_available=?, |
| | 73 | env_name=? |
| | 74 | WHERE |
| | 75 | id=? |
| | 76 | AND |
| | 77 | tenant_id=?; |
| | 78 | }}} |
| | 79 | |
| | 80 | Доколку компјутерот не постои, се додава нов запис. |
| | 81 | |
| | 82 | '''SQL''' |
| | 83 | |
| | 84 | {{{ |
| | 85 | INSERT INTO computers |
| | 86 | ( |
| | 87 | tenant_id, |
| | 88 | env_name, |
| | 89 | name, |
| | 90 | user, |
| | 91 | ip, |
| | 92 | os, |
| | 93 | first_seen, |
| | 94 | last_seen, |
| | 95 | sysmon_available |
| | 96 | ) |
| | 97 | VALUES |
| | 98 | ( |
| | 99 | ?, |
| | 100 | ?, |
| | 101 | ?, |
| | 102 | ?, |
| | 103 | ?, |
| | 104 | ?, |
| | 105 | ?, |
| | 106 | ?, |
| | 107 | ? |
| | 108 | ); |
| | 109 | }}} |
| | 110 | |
| | 111 | [[Image(UC1_step3.png,700px)]] |
| | 112 | |
| | 113 | --- |
| | 114 | |
| | 115 | ### Чекор 4 |
| | 116 | |
| | 117 | Системот ги зачувува моменталните перформанси. |
| | 118 | |
| | 119 | '''SQL''' |
| | 120 | |
| | 121 | {{{ |
| | 122 | INSERT INTO computer_history |
| | 123 | ( |
| | 124 | computer_id, |
| | 125 | cpu_usage, |
| | 126 | ram_usage, |
| | 127 | disk_usage, |
| | 128 | network_sent_mb, |
| | 129 | network_recv_mb, |
| | 130 | timestamp |
| | 131 | ) |
| | 132 | VALUES |
| | 133 | ( |
| | 134 | ?, |
| | 135 | ?, |
| | 136 | ?, |
| | 137 | ?, |
| | 138 | ?, |
| | 139 | ?, |
| | 140 | ? |
| | 141 | ); |
| | 142 | }}} |
| | 143 | |
| | 144 | [[Image(UC1_step4.png,700px)]] |
| | 145 | |
| | 146 | --- |
| | 147 | |
| | 148 | ### Чекор 5 |
| | 149 | |
| | 150 | Системот ги освежува тековните процеси. |
| | 151 | |
| | 152 | Најпрво ги брише старите. |
| | 153 | |
| | 154 | '''SQL''' |
| | 155 | |
| | 156 | {{{ |
| | 157 | DELETE |
| | 158 | FROM computer_processes_current |
| | 159 | WHERE computer_id=?; |
| | 160 | }}} |
| | 161 | |
| | 162 | Потоа ги внесува новите. |
| | 163 | |
| | 164 | '''SQL''' |
| | 165 | |
| | 166 | {{{ |
| | 167 | INSERT INTO computer_processes_current |
| | 168 | ( |
| | 169 | computer_id, |
| | 170 | pid, |
| | 171 | name, |
| | 172 | cpu_percent, |
| | 173 | memory_mb, |
| | 174 | username, |
| | 175 | cmdline, |
| | 176 | timestamp |
| | 177 | ) |
| | 178 | VALUES |
| | 179 | ( |
| | 180 | ?, |
| | 181 | ?, |
| | 182 | ?, |
| | 183 | ?, |
| | 184 | ?, |
| | 185 | ?, |
| | 186 | ?, |
| | 187 | ? |
| | 188 | ); |
| | 189 | }}} |
| | 190 | |
| | 191 | [[Image(UC1_step5.png,700px)]] |
| | 192 | |
| | 193 | --- |
| | 194 | |
| | 195 | ### Чекор 6 |
| | 196 | |
| | 197 | Доколку е овозможено чување на историја, процесите се зачувуваат и во history. |
| | 198 | |
| | 199 | '''SQL''' |
| | 200 | |
| | 201 | {{{ |
| | 202 | INSERT INTO computer_processes_history |
| | 203 | ( |
| | 204 | computer_id, |
| | 205 | pid, |
| | 206 | name, |
| | 207 | cpu_percent, |
| | 208 | memory_mb, |
| | 209 | username, |
| | 210 | cmdline, |
| | 211 | timestamp |
| | 212 | ) |
| | 213 | VALUES |
| | 214 | ( |
| | 215 | ?, |
| | 216 | ?, |
| | 217 | ?, |
| | 218 | ?, |
| | 219 | ?, |
| | 220 | ?, |
| | 221 | ?, |
| | 222 | ? |
| | 223 | ); |
| | 224 | }}} |
| | 225 | |
| | 226 | [[Image(UC1_step6.png,700px)]] |
| | 227 | |
| | 228 | --- |
| | 229 | |
| | 230 | ### Чекор 7 |
| | 231 | |
| | 232 | Системот ги зачувува Sysmon настаните. |
| | 233 | |
| | 234 | '''SQL''' |
| | 235 | |
| | 236 | {{{ |
| | 237 | INSERT INTO sysmon_events |
| | 238 | ( |
| | 239 | computer_id, |
| | 240 | event_id, |
| | 241 | event_type, |
| | 242 | message, |
| | 243 | timestamp, |
| | 244 | details |
| | 245 | ) |
| | 246 | VALUES |
| | 247 | ( |
| | 248 | ?, |
| | 249 | ?, |
| | 250 | ?, |
| | 251 | ?, |
| | 252 | ?, |
| | 253 | ? |
| | 254 | ); |
| | 255 | }}} |
| | 256 | |
| | 257 | [[Image(UC1_step7.png,700px)]] |
| | 258 | |
| | 259 | --- |
| | 260 | |
| | 261 | ### Чекор 8 |
| | 262 | |
| | 263 | Системот ги зачувува мрежните конекции. |
| | 264 | |
| | 265 | '''SQL''' |
| | 266 | |
| | 267 | {{{ |
| | 268 | INSERT INTO network_connections |
| | 269 | ( |
| | 270 | computer_id, |
| | 271 | pid, |
| | 272 | local_address, |
| | 273 | remote_address, |
| | 274 | status, |
| | 275 | process_name, |
| | 276 | timestamp |
| | 277 | ) |
| | 278 | VALUES |
| | 279 | ( |
| | 280 | ?, |
| | 281 | ?, |
| | 282 | ?, |
| | 283 | ?, |
| | 284 | ?, |
| | 285 | ?, |
| | 286 | ? |
| | 287 | ); |
| | 288 | }}} |
| | 289 | |
| | 290 | [[Image(UC1_step8.png,700px)]] |
| | 291 | |
| | 292 | --- |
| | 293 | |
| | 294 | ### Чекор 9 |
| | 295 | |
| | 296 | Системот успешно ја обработува испратената информација и враќа успешен одговор. |
| | 297 | |
| | 298 | [[Image(UC1_step9.png,700px)]] |