feat(logging): implement debug logging for network map scheduler to enhance monitoring and diagnostics
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m52s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m52s
This commit is contained in:
@@ -1 +0,0 @@
|
||||
{"sessionId":"378b5f","runId":"baseline","hypothesisId":"H1_H2","location":"frontend/src/lib/api.js:request","message":"API request started","data":{"method":"GET","url":"/alerts"},"timestamp":1771912788315}
|
||||
|
||||
@@ -14,6 +14,25 @@ const NETWORK_MAP_CACHE_KEY = 'network-map-cache/latest.json';
|
||||
|
||||
const DEFAULT_INTERVAL_MINUTES = 5;
|
||||
const DEFAULT_LOG_MAX_LINES = 500;
|
||||
const DEBUG_ENDPOINT = 'http://127.0.0.1:7343/ingest/aa002dd6-6968-4a35-b09d-f05302d83266';
|
||||
|
||||
function sendDebugLog(location, message, data, hypothesisId = 'H_STARTUP_SPEEDTEST') {
|
||||
// #region agent log
|
||||
fetch(DEBUG_ENDPOINT, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json', 'X-Debug-Session-Id': '378b5f' },
|
||||
body: JSON.stringify({
|
||||
sessionId: '378b5f',
|
||||
runId: 'nm-startup-investigation',
|
||||
hypothesisId,
|
||||
location,
|
||||
message,
|
||||
data: data || {},
|
||||
timestamp: Date.now(),
|
||||
}),
|
||||
}).catch(() => {});
|
||||
// #endregion
|
||||
}
|
||||
|
||||
/** Кольцевой буфер логов */
|
||||
class LogBuffer {
|
||||
@@ -350,8 +369,9 @@ function getSettingsFromUiSettings(uiSettings) {
|
||||
function initNetworkMapScheduler(logger, port) {
|
||||
const log = logger || console;
|
||||
const baseUrl = `http://127.0.0.1:${port}`;
|
||||
sendDebugLog('backend/services/networkMapScheduler.js:init', 'initNetworkMapScheduler called', { port, baseUrl });
|
||||
|
||||
async function tick() {
|
||||
async function tick(source = 'interval') {
|
||||
lastScheduledRunAt = Date.now();
|
||||
let uiSettings;
|
||||
try {
|
||||
@@ -361,14 +381,27 @@ function initNetworkMapScheduler(logger, port) {
|
||||
return;
|
||||
}
|
||||
const settings = getSettingsFromUiSettings(uiSettings);
|
||||
sendDebugLog('backend/services/networkMapScheduler.js:tick-settings', 'Tick evaluated settings', {
|
||||
source,
|
||||
enabled: settings.enabled,
|
||||
intervalMinutes: settings.intervalMinutes,
|
||||
runPing: settings.runPing,
|
||||
runSpeedTest: settings.runSpeedTest,
|
||||
});
|
||||
if (!settings.enabled) return;
|
||||
|
||||
logBuffer.setMaxLines(settings.logMaxLines);
|
||||
logBuffer.push('--- Запуск по расписанию ---');
|
||||
sendDebugLog('backend/services/networkMapScheduler.js:tick-runjob', 'Tick starts runJob', {
|
||||
source,
|
||||
runPing: settings.runPing,
|
||||
runSpeedTest: settings.runSpeedTest,
|
||||
});
|
||||
runJob({
|
||||
baseUrl,
|
||||
runPing: settings.runPing,
|
||||
runSpeedTest: settings.runSpeedTest,
|
||||
trigger: source === 'startup-delay' ? 'startup-delay' : 'scheduled',
|
||||
log: (msg) => {
|
||||
logBuffer.push(msg);
|
||||
log.info({ component: 'network-map-scheduler' }, msg);
|
||||
@@ -388,6 +421,13 @@ function initNetworkMapScheduler(logger, port) {
|
||||
return;
|
||||
}
|
||||
const settings = getSettingsFromUiSettings(uiSettings);
|
||||
sendDebugLog('backend/services/networkMapScheduler.js:schedule-settings', 'Schedule loaded settings', {
|
||||
enabled: settings.enabled,
|
||||
intervalMinutes: settings.intervalMinutes,
|
||||
runPing: settings.runPing,
|
||||
runSpeedTest: settings.runSpeedTest,
|
||||
logMaxLines: settings.logMaxLines,
|
||||
});
|
||||
if (!settings.enabled) {
|
||||
log.info({ component: 'network-map-scheduler' }, 'Scheduler disabled in settings');
|
||||
return;
|
||||
@@ -399,9 +439,13 @@ function initNetworkMapScheduler(logger, port) {
|
||||
'Network map scheduler started (first run in 10 s, then every %d min)',
|
||||
settings.intervalMinutes
|
||||
);
|
||||
schedulerTimer = setInterval(tick, intervalMs);
|
||||
schedulerTimer = setInterval(() => tick('interval'), intervalMs);
|
||||
// Первый запуск через 10 сек, чтобы кеш появился вскоре после старта сервера
|
||||
setTimeout(() => tick(), 10 * 1000);
|
||||
sendDebugLog('backend/services/networkMapScheduler.js:schedule-startup-tick', 'Startup delayed tick scheduled', {
|
||||
delayMs: 10000,
|
||||
intervalMs,
|
||||
});
|
||||
setTimeout(() => tick('startup-delay'), 10 * 1000);
|
||||
}
|
||||
|
||||
schedule();
|
||||
|
||||
Reference in New Issue
Block a user