/
metric-data.ts
113 lines (93 loc) 路 2.97 KB
/
metric-data.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import {
Counter, MetricOptions, metrics, UpDownCounter,
Histogram, ObservableGauge, ObservableCounter, ObservableUpDownCounter,
} from '@opentelemetry/api-metrics';
import { OTEL_METER_NAME } from '../opentelemetry.constants';
export type GenericMetric =
Counter |
UpDownCounter |
Histogram |
ObservableGauge |
ObservableCounter |
ObservableUpDownCounter;
export enum MetricType {
'Counter' = 'Counter',
'UpDownCounter' = 'UpDownCounter',
'Histogram' = 'Histogram',
'ObservableGauge' = 'ObservableGauge',
'ObservableCounter' = 'ObservableCounter',
'ObservableUpDownCounter' = 'ObservableUpDownCounter',
}
export const meterData: Map<string, GenericMetric> = new Map();
export function getOrCreateHistogram(
name: string,
options: MetricOptions,
): Histogram {
if (meterData.has(name)) {
return meterData.get(name) as Histogram;
}
const meter = metrics.getMeterProvider().getMeter(OTEL_METER_NAME);
const histogram = meter.createHistogram(name, options);
meterData.set(name, histogram);
return histogram;
}
export function getOrCreateCounter(
name: string,
options: MetricOptions,
): Counter {
if (meterData.has(name)) {
return meterData.get(name) as Counter;
}
const meter = metrics.getMeterProvider().getMeter(OTEL_METER_NAME);
const counter = meter.createCounter(name, options);
meterData.set(name, counter);
return counter;
}
export function getOrCreateUpDownCounter(
name: string,
options: MetricOptions,
): UpDownCounter {
if (meterData.has(name)) {
return meterData.get(name) as UpDownCounter;
}
const meter = metrics.getMeterProvider().getMeter(OTEL_METER_NAME);
const upDownCounter = meter.createUpDownCounter(name, options);
meterData.set(name, upDownCounter);
return upDownCounter;
}
export function getOrCreateObservableGauge(
name: string,
options: MetricOptions,
): ObservableGauge {
if (meterData.has(name)) {
return meterData.get(name) as ObservableGauge;
}
const meter = metrics.getMeterProvider().getMeter(OTEL_METER_NAME);
const observableGauge = meter.createObservableGauge(name, options);
meterData.set(name, observableGauge);
return observableGauge;
}
export function getOrCreateObservableCounter(
name: string,
options: MetricOptions,
): ObservableCounter {
if (meterData.has(name)) {
return meterData.get(name) as ObservableCounter;
}
const meter = metrics.getMeterProvider().getMeter(OTEL_METER_NAME);
const observableCounter = meter.createObservableCounter(name, options);
meterData.set(name, observableCounter);
return observableCounter;
}
export function getOrCreateObservableUpDownCounter(
name: string,
options: MetricOptions,
): ObservableUpDownCounter {
if (meterData.has(name)) {
return meterData.get(name) as ObservableUpDownCounter;
}
const meter = metrics.getMeterProvider().getMeter(OTEL_METER_NAME);
const observableCounter = meter.createObservableCounter(name, options);
meterData.set(name, observableCounter);
return observableCounter;
}