in src/autoscaler-common/counters-base.js [326:372]
async function createCounters(counterDefinitions) {
await initMetrics();
const meter = meterProvider.getMeter(COUNTERS_PREFIX);
for (const counterDef of counterDefinitions) {
if (!counterDef.counterName || !counterDef.counterDesc) {
throw new Error(
'invalid counter definition: ' + JSON.stringify(counterDef),
);
}
if (COUNTERS.get(counterDef.counterName)) {
throw new Error('Counter already created: ' + counterDef.counterName);
}
switch (counterDef.counterType || 'CUMULATIVE') {
case 'CUMULATIVE':
COUNTERS.set(counterDef.counterName, {
cumulative: meter.createCounter(
COUNTERS_PREFIX + counterDef.counterName,
{
description: counterDef.counterDesc,
unit: counterDef.counterUnits,
},
),
});
break;
case 'HISTOGRAM':
COUNTERS.set(counterDef.counterName, {
histogram: meter.createHistogram(
COUNTERS_PREFIX + counterDef.counterName,
{
description: counterDef.counterDesc,
unit: counterDef.counterUnits,
advice: {
explicitBucketBoundaries: counterDef.counterHistogramBuckets,
},
},
),
});
break;
default:
throw new Error(
`Invalid counter type for ${counterDef.counterName}: ${counterDef.counterType}`,
);
}
}
}