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_INTERVAL_MINUTES = 5;
|
||||||
const DEFAULT_LOG_MAX_LINES = 500;
|
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 {
|
class LogBuffer {
|
||||||
@@ -350,8 +369,9 @@ function getSettingsFromUiSettings(uiSettings) {
|
|||||||
function initNetworkMapScheduler(logger, port) {
|
function initNetworkMapScheduler(logger, port) {
|
||||||
const log = logger || console;
|
const log = logger || console;
|
||||||
const baseUrl = `http://127.0.0.1:${port}`;
|
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();
|
lastScheduledRunAt = Date.now();
|
||||||
let uiSettings;
|
let uiSettings;
|
||||||
try {
|
try {
|
||||||
@@ -361,14 +381,27 @@ function initNetworkMapScheduler(logger, port) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const settings = getSettingsFromUiSettings(uiSettings);
|
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;
|
if (!settings.enabled) return;
|
||||||
|
|
||||||
logBuffer.setMaxLines(settings.logMaxLines);
|
logBuffer.setMaxLines(settings.logMaxLines);
|
||||||
logBuffer.push('--- Запуск по расписанию ---');
|
logBuffer.push('--- Запуск по расписанию ---');
|
||||||
|
sendDebugLog('backend/services/networkMapScheduler.js:tick-runjob', 'Tick starts runJob', {
|
||||||
|
source,
|
||||||
|
runPing: settings.runPing,
|
||||||
|
runSpeedTest: settings.runSpeedTest,
|
||||||
|
});
|
||||||
runJob({
|
runJob({
|
||||||
baseUrl,
|
baseUrl,
|
||||||
runPing: settings.runPing,
|
runPing: settings.runPing,
|
||||||
runSpeedTest: settings.runSpeedTest,
|
runSpeedTest: settings.runSpeedTest,
|
||||||
|
trigger: source === 'startup-delay' ? 'startup-delay' : 'scheduled',
|
||||||
log: (msg) => {
|
log: (msg) => {
|
||||||
logBuffer.push(msg);
|
logBuffer.push(msg);
|
||||||
log.info({ component: 'network-map-scheduler' }, msg);
|
log.info({ component: 'network-map-scheduler' }, msg);
|
||||||
@@ -388,6 +421,13 @@ function initNetworkMapScheduler(logger, port) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const settings = getSettingsFromUiSettings(uiSettings);
|
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) {
|
if (!settings.enabled) {
|
||||||
log.info({ component: 'network-map-scheduler' }, 'Scheduler disabled in settings');
|
log.info({ component: 'network-map-scheduler' }, 'Scheduler disabled in settings');
|
||||||
return;
|
return;
|
||||||
@@ -399,9 +439,13 @@ function initNetworkMapScheduler(logger, port) {
|
|||||||
'Network map scheduler started (first run in 10 s, then every %d min)',
|
'Network map scheduler started (first run in 10 s, then every %d min)',
|
||||||
settings.intervalMinutes
|
settings.intervalMinutes
|
||||||
);
|
);
|
||||||
schedulerTimer = setInterval(tick, intervalMs);
|
schedulerTimer = setInterval(() => tick('interval'), intervalMs);
|
||||||
// Первый запуск через 10 сек, чтобы кеш появился вскоре после старта сервера
|
// Первый запуск через 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();
|
schedule();
|
||||||
|
|||||||
Reference in New Issue
Block a user