feat(mikrotik): implement batch removal of address lists with fallback to individual deletes for improved efficiency and error handling
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m52s

This commit is contained in:
2026-02-24 14:39:25 +07:00
parent b56df61c8f
commit 1f391d9398
2 changed files with 123 additions and 210 deletions
+67 -200
View File
@@ -1,200 +1,67 @@
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915608308}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915608646}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915615281}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915615733}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915668305}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915668662}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915674375}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915680196}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915728302}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915728641}
{"sessionId":"378b5f","runId":"nm-startup-investigation","hypothesisId":"H_STARTUP_SPEEDTEST","location":"backend/services/networkMapScheduler.js:init","message":"initNetworkMapScheduler called","data":{"port":3001,"baseUrl":"http://127.0.0.1:3001"},"timestamp":1771915726890}
{"sessionId":"378b5f","runId":"nm-startup-investigation","hypothesisId":"H_STARTUP_SPEEDTEST","location":"backend/services/networkMapScheduler.js:schedule-settings","message":"Schedule loaded settings","data":{"enabled":true,"intervalMinutes":90,"runPing":true,"runSpeedTest":true,"logMaxLines":500},"timestamp":1771915727143}
{"sessionId":"378b5f","runId":"nm-startup-investigation","hypothesisId":"H_STARTUP_SPEEDTEST","location":"backend/services/networkMapScheduler.js:schedule-startup-tick-skipped","message":"Startup delayed tick skipped","data":{"reason":"disabled_to_avoid_immediate_speedtest_after_restart","intervalMs":5400000},"timestamp":1771915727144}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915727565}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":194,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":107,"hasError":false},{"serverId":"msk-vpsville","durationMs":105,"hasError":false},{"serverId":"msk-dc","durationMs":104,"hasError":false},{"serverId":"srv-5","durationMs":96,"hasError":false},{"serverId":"nsk-servhost","durationMs":20,"hasError":false}]},"timestamp":1771915727673}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915735275}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915732376}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":130,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":56,"hasError":false},{"serverId":"msk-vpsville","durationMs":55,"hasError":false},{"serverId":"msk-dc","durationMs":54,"hasError":false},{"serverId":"srv-5","durationMs":49,"hasError":false},{"serverId":"rtk-home","durationMs":10,"hasError":false}]},"timestamp":1771915732433}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915735559}
{"sessionId":"378b5f","runId":"resource-stats-fix","hypothesisId":"H_RS_RETRY","location":"frontend/src/ResourceStatsPage.jsx:fetchStats","message":"Resource stats request started with noRetry","data":{"timeoutMs":15000,"noRetry":true,"hasAbortSignal":true},"timestamp":1771915750420}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/resource-stats","layout":"fluid"},"timestamp":1771915750421}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/resources/stats"},"timestamp":1771915750422}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915750422}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915747398}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915747822}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":1426,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"mts-home","durationMs":1345,"hasError":false},{"serverId":"rtk-home","durationMs":1342,"hasError":false},{"serverId":"msk-ihor","durationMs":107,"hasError":false},{"serverId":"msk-dc","durationMs":106,"hasError":false},{"serverId":"msk-vpsville","durationMs":104,"hasError":false}]},"timestamp":1771915748744}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/resources/stats","status":200},"timestamp":1771915751868}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":2938,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":2819,"hasError":false},{"serverId":"msk-vpsville","durationMs":1853,"hasError":false},{"serverId":"mts-home","durationMs":928,"hasError":false},{"serverId":"rtk-home","durationMs":925,"hasError":false},{"serverId":"msk-dc","durationMs":53,"hasError":false}]},"timestamp":1771915750642}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915753763}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/dashboard","layout":"fluid"},"timestamp":1771915754247}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/domains-new"},"timestamp":1771915754255}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/servers"},"timestamp":1771915754256}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/ip-ranges"},"timestamp":1771915754256}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/asns"},"timestamp":1771915754256}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/servers/availability"},"timestamp":1771915754256}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/s3/last-modified"},"timestamp":1771915754256}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/ping-services-list"},"timestamp":1771915754256}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/ping-services"},"timestamp":1771915754256}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/ip-ranges","status":200},"timestamp":1771915754378}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/domains-new","status":200},"timestamp":1771915754378}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/ping-services-list","status":200},"timestamp":1771915754452}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/s3/last-modified","status":200},"timestamp":1771915754497}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/servers","status":200},"timestamp":1771915754498}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/asns","status":200},"timestamp":1771915754511}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/ping-services","status":200},"timestamp":1771915754665}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/servers/availability","status":200},"timestamp":1771915755483}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/ui-settings"},"timestamp":1771915756475}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/traffic/interface-stats"},"timestamp":1771915756475}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/traffic","layout":"fluid"},"timestamp":1771915756471}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/ui-settings","status":200},"timestamp":1771915756563}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/traffic/interface-stats","status":200},"timestamp":1771915760644}
{"sessionId":"378b5f","runId":"resource-stats-fix","hypothesisId":"H_RS_RETRY","location":"frontend/src/ResourceStatsPage.jsx:fetchStats","message":"Resource stats request started with noRetry","data":{"timeoutMs":15000,"noRetry":true,"hasAbortSignal":true},"timestamp":1771915762275}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/resources/stats"},"timestamp":1771915762279}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/resource-stats","layout":"fluid"},"timestamp":1771915762275}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915759248}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":631,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"nsk-servhost","durationMs":561,"hasError":false},{"serverId":"msk-ihor","durationMs":107,"hasError":false},{"serverId":"msk-vpsville","durationMs":105,"hasError":false},{"serverId":"msk-dc","durationMs":104,"hasError":false},{"serverId":"srv-5","durationMs":91,"hasError":false}]},"timestamp":1771915759810}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/resources/stats","status":200},"timestamp":1771915762934}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/servers"},"timestamp":1771915764242}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/network-config"},"timestamp":1771915764242}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/network-map","layout":"fluid"},"timestamp":1771915764240}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/ui-settings"},"timestamp":1771915764242}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/network-map-cache"},"timestamp":1771915764242}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/servers","status":304},"timestamp":1771915764331}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/network-config","status":200},"timestamp":1771915764338}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/ui-settings","status":304},"timestamp":1771915764337}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/network-map-cache","status":200},"timestamp":1771915764359}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/interface-speed","layout":"fluid"},"timestamp":1771915782869}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/servers"},"timestamp":1771915782877}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/network-config"},"timestamp":1771915782877}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/ui-settings"},"timestamp":1771915782877}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/ui-settings","status":304},"timestamp":1771915782980}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/servers","status":304},"timestamp":1771915782980}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/network-config","status":304},"timestamp":1771915782983}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/mikrotik-tools","layout":"fluid"},"timestamp":1771915783798}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/network-config"},"timestamp":1771915783803}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/servers"},"timestamp":1771915783803}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/network-config","status":304},"timestamp":1771915783890}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/servers","status":304},"timestamp":1771915783890}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/mikrotik-backups","layout":"fluid"},"timestamp":1771915784696}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/servers"},"timestamp":1771915784701}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/ui-settings"},"timestamp":1771915784702}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/servers","status":304},"timestamp":1771915784791}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/ui-settings","status":304},"timestamp":1771915784792}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/mikrotik/backups"},"timestamp":1771915784814}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/mikrotik/backups","status":200},"timestamp":1771915784933}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/auto-urls","layout":"fluid"},"timestamp":1771915787629}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/auto-urls"},"timestamp":1771915787637}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/auto-urls","status":200},"timestamp":1771915787714}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915788300}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915785416}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915785444}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":170,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":106,"hasError":false},{"serverId":"msk-vpsville","durationMs":105,"hasError":false},{"serverId":"msk-dc","durationMs":105,"hasError":false},{"serverId":"srv-5","durationMs":90,"hasError":false},{"serverId":"rtk-home","durationMs":17,"hasError":false}]},"timestamp":1771915785523}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915788642}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":181,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":106,"hasError":false},{"serverId":"msk-dc","durationMs":106,"hasError":false},{"serverId":"msk-vpsville","durationMs":104,"hasError":false},{"serverId":"srv-5","durationMs":89,"hasError":false},{"serverId":"rtk-home","durationMs":8,"hasError":false}]},"timestamp":1771915785551}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915785748}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":119,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":54,"hasError":false},{"serverId":"msk-vpsville","durationMs":53,"hasError":false},{"serverId":"msk-dc","durationMs":53,"hasError":false},{"serverId":"srv-5","durationMs":46,"hasError":false},{"serverId":"nsk-servhost","durationMs":24,"hasError":false}]},"timestamp":1771915785802}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915786000}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":118,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":54,"hasError":false},{"serverId":"msk-vpsville","durationMs":53,"hasError":false},{"serverId":"msk-dc","durationMs":52,"hasError":false},{"serverId":"srv-5","durationMs":45,"hasError":false},{"serverId":"mts-home","durationMs":13,"hasError":false}]},"timestamp":1771915786055}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/servers"},"timestamp":1771915794784}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/uptime-monitor","layout":"fluid"},"timestamp":1771915794781}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/ui-settings"},"timestamp":1771915794785}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/ui-settings","status":304},"timestamp":1771915794876}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/servers","status":304},"timestamp":1771915794876}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/uptime/cache"},"timestamp":1771915794882}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/uptime/cache","status":200},"timestamp":1771915795034}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915798889}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915798888}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915798889}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915798889}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915801307}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915801308}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915801330}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915801330}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915801346}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915801347}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915802315}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915803782}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915803896}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915806095}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/uptime-monitor","layout":"fluid"},"timestamp":1771915807766}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/servers"},"timestamp":1771915807769}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915807769}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/ui-settings"},"timestamp":1771915807769}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/servers","status":200},"timestamp":1771915807844}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/ui-settings","status":200},"timestamp":1771915807847}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/uptime/cache"},"timestamp":1771915807857}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/uptime/cache","status":200},"timestamp":1771915807937}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915804867}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":178,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":110,"hasError":false},{"serverId":"msk-vpsville","durationMs":104,"hasError":false},{"serverId":"msk-dc","durationMs":102,"hasError":false},{"serverId":"srv-5","durationMs":93,"hasError":false},{"serverId":"rtk-home","durationMs":12,"hasError":false}]},"timestamp":1771915804978}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915808100}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915811862}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915811862}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915811862}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915811862}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915814222}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915814221}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915814310}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915814310}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915814452}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915814452}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915815384}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915816567}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915816902}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915818621}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915848292}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915845424}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915845504}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":179,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-dc","durationMs":114,"hasError":false},{"serverId":"msk-ihor","durationMs":106,"hasError":false},{"serverId":"srv-5","durationMs":106,"hasError":false},{"serverId":"msk-vpsville","durationMs":105,"hasError":false},{"serverId":"nsk-servhost","durationMs":19,"hasError":false}]},"timestamp":1771915845539}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":255,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":104,"hasError":false},{"serverId":"msk-vpsville","durationMs":104,"hasError":false},{"serverId":"msk-dc","durationMs":104,"hasError":false},{"serverId":"srv-5","durationMs":94,"hasError":false},{"serverId":"rtk-home","durationMs":16,"hasError":false}]},"timestamp":1771915845609}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915848728}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915845921}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":235,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":53,"hasError":false},{"serverId":"msk-vpsville","durationMs":53,"hasError":false},{"serverId":"msk-dc","durationMs":53,"hasError":false},{"serverId":"srv-5","durationMs":48,"hasError":false},{"serverId":"nsk-servhost","durationMs":15,"hasError":false}]},"timestamp":1771915845974}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915846181}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":121,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":54,"hasError":false},{"serverId":"msk-vpsville","durationMs":53,"hasError":false},{"serverId":"msk-dc","durationMs":53,"hasError":false},{"serverId":"srv-5","durationMs":48,"hasError":false},{"serverId":"mts-home","durationMs":15,"hasError":false}]},"timestamp":1771915846235}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915868279}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915865487}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":291,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-vpsville","durationMs":107,"hasError":false},{"serverId":"msk-ihor","durationMs":106,"hasError":false},{"serverId":"msk-dc","durationMs":104,"hasError":false},{"serverId":"srv-5","durationMs":93,"hasError":false},{"serverId":"nsk-servhost","durationMs":21,"hasError":false}]},"timestamp":1771915865595}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915868718}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915908321}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915905436}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":182,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-dc","durationMs":114,"hasError":false},{"serverId":"msk-ihor","durationMs":107,"hasError":false},{"serverId":"msk-vpsville","durationMs":106,"hasError":false},{"serverId":"srv-5","durationMs":95,"hasError":false},{"serverId":"mts-home","durationMs":20,"hasError":false}]},"timestamp":1771915905550}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915908669}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915905569}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":133,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":54,"hasError":false},{"serverId":"msk-vpsville","durationMs":53,"hasError":false},{"serverId":"msk-dc","durationMs":53,"hasError":false},{"serverId":"srv-5","durationMs":48,"hasError":false},{"serverId":"rtk-home","durationMs":9,"hasError":false}]},"timestamp":1771915905623}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915905839}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":123,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":54,"hasError":false},{"serverId":"msk-dc","durationMs":53,"hasError":false},{"serverId":"msk-vpsville","durationMs":52,"hasError":false},{"serverId":"srv-5","durationMs":47,"hasError":false},{"serverId":"mts-home","durationMs":14,"hasError":false}]},"timestamp":1771915905893}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915906106}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":123,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":53,"hasError":false},{"serverId":"msk-vpsville","durationMs":53,"hasError":false},{"serverId":"msk-dc","durationMs":53,"hasError":false},{"serverId":"srv-5","durationMs":47,"hasError":false},{"serverId":"mts-home","durationMs":17,"hasError":false}]},"timestamp":1771915906160}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915928268}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915928269}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915928269}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915928270}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915928269}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915925527}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":2178,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"srv-5","durationMs":2105,"hasError":false},{"serverId":"msk-ihor","durationMs":108,"hasError":false},{"serverId":"msk-vpsville","durationMs":107,"hasError":false},{"serverId":"msk-dc","durationMs":105,"hasError":false},{"serverId":"nsk-servhost","durationMs":25,"hasError":false}]},"timestamp":1771915927633}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915930758}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915930761}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915930781}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915930890}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915930889}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/uptime/check"},"timestamp":1771915930917}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915930916}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915931830}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915933096}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915933355}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/uptime/check","status":200},"timestamp":1771915935261}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915968311}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915965553}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915965560}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":171,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":106,"hasError":false},{"serverId":"msk-vpsville","durationMs":105,"hasError":false},{"serverId":"msk-dc","durationMs":102,"hasError":false},{"serverId":"srv-5","durationMs":90,"hasError":false},{"serverId":"mts-home","durationMs":34,"hasError":false}]},"timestamp":1771915965659}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915968778}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":298,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":105,"hasError":false},{"serverId":"msk-vpsville","durationMs":105,"hasError":false},{"serverId":"msk-dc","durationMs":103,"hasError":false},{"serverId":"srv-5","durationMs":93,"hasError":false},{"serverId":"rtk-home","durationMs":33,"hasError":false}]},"timestamp":1771915965666}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915965889}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":127,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":54,"hasError":false},{"serverId":"msk-vpsville","durationMs":53,"hasError":false},{"serverId":"msk-dc","durationMs":52,"hasError":false},{"serverId":"srv-5","durationMs":48,"hasError":false},{"serverId":"rtk-home","durationMs":14,"hasError":false}]},"timestamp":1771915965943}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915966170}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":127,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-ihor","durationMs":55,"hasError":false},{"serverId":"msk-vpsville","durationMs":53,"hasError":false},{"serverId":"srv-5","durationMs":53,"hasError":false},{"serverId":"msk-dc","durationMs":53,"hasError":false},{"serverId":"nsk-servhost","durationMs":17,"hasError":false}]},"timestamp":1771915966225}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771915988276}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-routers","message":"Resource stats routers loaded","data":{"serversCount":12,"routersCount":7},"timestamp":1771915985368}
{"sessionId":"378b5f","runId":"resource-stats-investigation","hypothesisId":"H_RS_BACKEND_SLOW","location":"backend/routes/resourceStatsRoutes.js:getResourceStatsData-done","message":"Resource stats aggregate timing","data":{"totalDurationMs":175,"routersCount":7,"errorsCount":0,"slowRouters":[{"serverId":"msk-vpsville","durationMs":106,"hasError":false},{"serverId":"msk-dc","durationMs":106,"hasError":false},{"serverId":"msk-ihor","durationMs":105,"hasError":false},{"serverId":"srv-5","durationMs":90,"hasError":false},{"serverId":"rtk-home","durationMs":13,"hasError":false}]},"timestamp":1771915985475}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771915988597}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H5","location":"frontend/src/App.jsx:route-change","message":"Route changed in MainLayout","data":{"pathname":"/easy-switch","layout":"fluid"},"timestamp":1771918574971}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771918574974}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/communities"},"timestamp":1771918574974}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/communities","status":200},"timestamp":1771918575149}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/servers"},"timestamp":1771918575150}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771918575158}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/network-config"},"timestamp":1771918575261}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/servers","status":200},"timestamp":1771918575260}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/network-config","status":200},"timestamp":1771918575342}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/server-configs"},"timestamp":1771918575343}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/server-configs","status":200},"timestamp":1771918575431}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/server-filters/srv-5"},"timestamp":1771918575432}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/server-filters/msk-vpsville"},"timestamp":1771918575432}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/server-filters/msk-ihor"},"timestamp":1771918575431}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/server-filters/msk-dc"},"timestamp":1771918575432}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/server-filters/nsk-servhost"},"timestamp":1771918575432}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/server-filters/msk-vpsville","status":200},"timestamp":1771918575519}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/server-filters/msk-ihor","status":200},"timestamp":1771918575641}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/server-filters/srv-5","status":200},"timestamp":1771918575645}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/server-filters/nsk-servhost","status":200},"timestamp":1771918575648}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/server-filters/msk-dc","status":200},"timestamp":1771918575649}
{"sessionId":"378b5f","runId":"post-fix","hypothesisId":"H6","location":"frontend/src/contexts/PingContext.jsx:requestPings","message":"Ping batch scheduled","data":{"scope":"easy-switch","count":20,"force":false},"timestamp":1771918575650}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575651}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575651}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575651}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575651}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575651}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575651}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575652}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575652}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575652}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575652}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575652}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575652}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575653}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575652}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575652}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575652}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575653}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575653}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575653}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"POST","url":"/mikrotik/ping"},"timestamp":1771918575653}
{"sessionId":"378b5f","runId":"post-fix","hypothesisId":"H6","location":"frontend/src/contexts/PingContext.jsx:requestPings","message":"Ping batch scheduled","data":{"scope":"easy-switch","count":0,"force":false},"timestamp":1771918575667}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918581171}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918581264}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918585199}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918585287}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918589219}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918589300}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918590962}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918593250}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918593325}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918594992}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918596225}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918599017}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918600849}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918601366}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918603038}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918604878}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918606344}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918608918}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918610433}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"POST","url":"/mikrotik/ping","status":200},"timestamp":1771918614512}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771918634979}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771918635314}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771918694983}
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:response","message":"API response received","data":{"method":"GET","url":"/alerts","status":200},"timestamp":1771918695315}
+56 -10
View File
@@ -1475,6 +1475,58 @@ async function getAddressLists(req, res) {
}
const ADDRESS_LIST_PATH = 'ip/firewall/address-list';
const ADDRESS_LIST_REMOVE_CHUNK_SIZE = 100;
function chunkArray(items, size) {
if (!Array.isArray(items) || items.length === 0) return [];
const chunkSize = Math.max(1, Number(size) || 1);
const chunks = [];
for (let i = 0; i < items.length; i += chunkSize) {
chunks.push(items.slice(i, i + chunkSize));
}
return chunks;
}
/**
* Удаление address-list по .id:
* 1) пытаемся батчем через POST .../remove { numbers: "*1,*2" }
* 2) при ошибке откатываемся к поштучному DELETE, чтобы не ломать совместимость.
*/
async function removeAddressListIds(client, ids) {
const normalizedIds = [...new Set(
(Array.isArray(ids) ? ids : [])
.map((id) => String(id || '').trim())
.filter(Boolean)
)];
if (normalizedIds.length === 0) return 0;
let removed = 0;
const chunks = chunkArray(normalizedIds, ADDRESS_LIST_REMOVE_CHUNK_SIZE);
for (const chunk of chunks) {
try {
await client.command(`${ADDRESS_LIST_PATH}/remove`, { numbers: chunk.join(',') });
removed += chunk.length;
continue;
} catch (err) {
console.warn(
`[address-lists] batch remove fallback (${chunk.length} ids):`,
err?.message || String(err)
);
}
for (const id of chunk) {
try {
await rosRemove(client, ADDRESS_LIST_PATH, id);
removed++;
} catch (err) {
console.warn(`[address-lists] remove ${id}:`, err?.message);
}
}
}
return removed;
}
/**
* POST /api/mikrotik/address-lists/apply-summary
@@ -1487,7 +1539,9 @@ async function applyAddressListSummary(req, res) {
if (!serverId) {
return sendError(res, 400, 'serverId is required', 'E_BAD_REQUEST');
}
const ids = Array.isArray(removeIds) ? removeIds.filter((id) => id != null && String(id).trim()) : [];
const ids = Array.isArray(removeIds)
? [...new Set(removeIds.map((id) => String(id || '').trim()).filter(Boolean))]
: [];
const entries = Array.isArray(addEntries)
? addEntries.filter((e) => e && (e.address || e.list))
: [];
@@ -1507,15 +1561,7 @@ async function applyAddressListSummary(req, res) {
let removed = 0;
let added = 0;
for (const id of ids) {
try {
const pathId = String(id).trim();
await rosRemove(client, ADDRESS_LIST_PATH, pathId);
removed++;
} catch (err) {
console.warn(`[address-lists] remove ${id}:`, err?.message);
}
}
removed = await removeAddressListIds(client, ids);
for (const entry of entries) {
try {