84 lines
2.4 KiB
TypeScript
84 lines
2.4 KiB
TypeScript
import { metrics } from "@opentelemetry/api";
|
|
|
|
const meter = metrics.getMeter("@suaveplan/datetime");
|
|
|
|
/**
|
|
* Histogram tracking the wall-clock duration of `expandRecurrence` calls in
|
|
* milliseconds. Use this to detect expensive recurrence expansions in production.
|
|
*/
|
|
export const expandRecurrenceDuration = meter.createHistogram(
|
|
"datetime.expand_recurrence.duration_ms",
|
|
{
|
|
description: "Duration of expandRecurrence() calls in milliseconds",
|
|
unit: "ms",
|
|
}
|
|
);
|
|
|
|
/**
|
|
* Histogram tracking the size (number of dates emitted) by
|
|
* `expandRecurrence`. Pairs with {@link expandRecurrenceDuration} to
|
|
* correlate output size with latency.
|
|
*/
|
|
export const expandRecurrenceSize = meter.createHistogram(
|
|
"datetime.expand_recurrence.size",
|
|
{
|
|
description: "Number of dates emitted by expandRecurrence()",
|
|
unit: "{dates}",
|
|
}
|
|
);
|
|
|
|
/**
|
|
* Histogram tracking the wall-clock duration of `businessDaysBetween` calls
|
|
* in milliseconds.
|
|
*/
|
|
export const businessDaysBetweenDuration = meter.createHistogram(
|
|
"datetime.business_days_between.duration_ms",
|
|
{
|
|
description: "Duration of businessDaysBetween() calls in milliseconds",
|
|
unit: "ms",
|
|
}
|
|
);
|
|
|
|
/**
|
|
* Histogram tracking the calendar-day span evaluated by
|
|
* `businessDaysBetween` calls.
|
|
*/
|
|
export const businessDaysBetweenSize = meter.createHistogram(
|
|
"datetime.business_days_between.size",
|
|
{
|
|
description: "Calendar-day span evaluated by businessDaysBetween()",
|
|
unit: "{days}",
|
|
}
|
|
);
|
|
|
|
/**
|
|
* Counter tracking the cumulative number of intervals evaluated by
|
|
* `businessDaysBetween`. Use this to monitor workload distribution.
|
|
*/
|
|
export const businessDaysBetweenTotal = meter.createCounter(
|
|
"datetime.business_days_between.total",
|
|
{
|
|
description:
|
|
"Cumulative number of day-intervals evaluated by businessDaysBetween()",
|
|
unit: "{days}",
|
|
}
|
|
);
|
|
|
|
/**
|
|
* Record a `businessDaysBetween` observation.
|
|
*
|
|
* @param count - Number of calendar days evaluated in the call.
|
|
*/
|
|
export function recordBusinessDaysBetween(count: number): void {
|
|
businessDaysBetweenTotal.add(count);
|
|
}
|
|
|
|
/**
|
|
* Record an `expandRecurrence` duration observation.
|
|
*
|
|
* @param durationMs - Elapsed milliseconds for the expansion call.
|
|
*/
|
|
export function recordExpandRecurrence(durationMs: number): void {
|
|
expandRecurrenceDuration.record(durationMs);
|
|
}
|