@breautek/storm
Version:
Object-Oriented REST API framework
40 lines (39 loc) • 1.4 kB
TypeScript
export interface IMetricConfig {
name: string;
help: string;
labelNames?: string[];
}
export interface IMetricData {
type: string;
content: string;
}
export interface IHistogramConfig extends IMetricConfig {
buckets?: number[];
}
export interface IMetricCounter {
inc(value?: number): void;
inc(labels: Record<string, string | number>, value?: number): void;
}
export interface IMetricGauge {
set(value: number): void;
set(labels: Record<string, string | number>, value: number): void;
inc(value?: number): void;
inc(labels: Record<string, string | number>, value?: number): void;
dec(value?: number): void;
dec(labels: Record<string, string | number>, value?: number): void;
}
export interface IMetricHistogram {
observe(value: number): void;
observe(labels: Record<string, string | number>, value: number): void;
startTimer(labels?: Record<string, string | number>): (labels?: Record<string, string | number>) => number;
}
export declare class MetricStore {
private static $instance;
private constructor();
static getInstance(): MetricStore;
setDefaultLabels(labels: Record<string, string>): void;
createCounter(config: IMetricConfig): IMetricCounter;
createGauge(config: IMetricConfig): IMetricGauge;
createHistogram(config: IHistogramConfig): IMetricHistogram;
getMetrics(): Promise<IMetricData>;
}