oneuptime/Telemetry/Config.ts

57 lines
1.5 KiB
TypeScript

let concurrency: string | number = process.env["TELEMETRY_CONCURRENCY"] || 100;
if (typeof concurrency === "string") {
const parsed: number = parseInt(concurrency, 10);
concurrency = !isNaN(parsed) && parsed > 0 ? parsed : 100;
}
export const TELEMETRY_CONCURRENCY: number = concurrency as number;
type ParseBatchSizeFunction = (envKey: string, defaultValue: number) => number;
const parseBatchSize: ParseBatchSizeFunction = (
envKey: string,
defaultValue: number,
): number => {
const value: string | undefined = process.env[envKey];
if (!value) {
return defaultValue;
}
const parsed: number = parseInt(value, 10);
if (isNaN(parsed) || parsed <= 0) {
return defaultValue;
}
return parsed;
};
export const TELEMETRY_LOG_FLUSH_BATCH_SIZE: number = parseBatchSize(
"TELEMETRY_LOG_FLUSH_BATCH_SIZE",
1000,
);
export const TELEMETRY_METRIC_FLUSH_BATCH_SIZE: number = parseBatchSize(
"TELEMETRY_METRIC_FLUSH_BATCH_SIZE",
750,
);
export const TELEMETRY_TRACE_FLUSH_BATCH_SIZE: number = parseBatchSize(
"TELEMETRY_TRACE_FLUSH_BATCH_SIZE",
750,
);
export const TELEMETRY_EXCEPTION_FLUSH_BATCH_SIZE: number = parseBatchSize(
"TELEMETRY_EXCEPTION_FLUSH_BATCH_SIZE",
500,
);
/*
* Some telemetry batches can be large and take >30s (BullMQ default lock) to process.
* Allow configuring a longer lock duration (in ms) to avoid premature stall detection.
*/
// 10 minutes.
export const TELEMETRY_LOCK_DURATION_MS: number = 10 * 60 * 1000;