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/eprints' });

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/eprints'
});

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: 'eprints' });

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: 'indexEprint' });
try {
await indexEprint(eprint);
} finally {
endTimer(); // Records duration in histogram
}