diff --git a/src/lib/metrics-gauge.ts b/src/lib/metrics-gauge.ts index 7938759f6d..87a0269ed4 100644 --- a/src/lib/metrics-gauge.ts +++ b/src/lib/metrics-gauge.ts @@ -22,17 +22,19 @@ export class DbMetricsMonitor { constructor() {} - registerGaugeDbMetric(definition: GaugeDefinition) { + registerGaugeDbMetric(definition: GaugeDefinition): Task { const gauge = createGauge(definition); this.gauges.set(definition.name, gauge); - this.tasks.add(async () => { + const task = async () => { const result = await definition.query(); - if (result) { + if (result !== null && result !== undefined) { const { count, labels } = definition.map(result); gauge.reset(); gauge.labels(labels).set(count); } - }); + }; + this.tasks.add(task); + return task; } refreshDbMetrics = async () => { diff --git a/src/lib/metrics.ts b/src/lib/metrics.ts index 429f3478f4..d276e61e44 100644 --- a/src/lib/metrics.ts +++ b/src/lib/metrics.ts @@ -117,13 +117,16 @@ export default class MetricsMonitor { help: 'Number of times a feature flag has been used', labelNames: ['toggle', 'active', 'appName'], }); - dbMetrics.registerGaugeDbMetric({ + + // schedule and execute immediately + await dbMetrics.registerGaugeDbMetric({ name: 'feature_toggles_total', help: 'Number of feature flags', labelNames: ['version'], query: () => instanceStatsService.getToggleCount(), map: (count) => ({ count, labels: { version } }), - }); + })(); + dbMetrics.registerGaugeDbMetric({ name: 'max_feature_environment_strategies', help: 'Maximum number of environment strategies in one feature',