Skip to main content

Interface: IMetrics

Defined in: src/types/interfaces/metrics.interface.ts:60

Metrics interface for Prometheus.

Remarks

Provides metrics collection with Prometheus-compatible output.

Implementation notes:

  • Uses prom-client library
  • Exposes /metrics endpoint for scraping
  • Default buckets for histograms: [0.01, 0.05, 0.1, 0.5, 1, 5, 10]

Methods

incrementCounter()

incrementCounter(name, labels?, value?): void

Defined in: src/types/interfaces/metrics.interface.ts:75

Increments a counter.

Parameters

name

string

Metric name

labels?

Readonly<Record<string, string>>

Metric labels

value?

number

Increment value (default: 1)

Returns

void

Example

metrics.incrementCounter('http_requests_total', { method: 'GET', endpoint: '/api/preprints' });

observeHistogram()

observeHistogram(name, value, labels?): void

Defined in: src/types/interfaces/metrics.interface.ts:113

Observes a histogram value.

Parameters

name

string

Metric name

value

number

Observed value

labels?

Readonly<Record<string, string>>

Metric labels

Returns

void

Remarks

Typically used for request durations and sizes.

Example

metrics.observeHistogram('http_request_duration_seconds', duration, {
method: 'GET',
endpoint: '/api/preprints'
});

setGauge()

setGauge(name, value, labels?): void

Defined in: src/types/interfaces/metrics.interface.ts:91

Sets a gauge value.

Parameters

name

string

Metric name

value

number

Gauge value

labels?

Readonly<Record<string, string>>

Metric labels

Returns

void

Example

metrics.setGauge('indexing_queue_size', queueSize, { queue: 'preprints' });

startTimer()

startTimer(name, labels?): () => void

Defined in: src/types/interfaces/metrics.interface.ts:138

Starts a timer for duration measurement.

Parameters

name

string

Metric name

labels?

Readonly<Record<string, string>>

Metric labels

Returns

Function

End function to stop timer

Returns

void

Remarks

Convenience method for measuring operation duration. Call the returned function to record the duration.

Example

const endTimer = metrics.startTimer('operation_duration_seconds', { operation: 'indexPreprint' });
try {
await indexPreprint(preprint);
} finally {
endTimer(); // Records duration in histogram
}