Skip to content

Commit 689dfab

Browse files
authored
Merge pull request #455 from podium-lib/add_podium_client_registered_podlet_count_metric
feat: add metric to track register podlets
2 parents 7100faa + 673a4e7 commit 689dfab

File tree

2 files changed

+42
-10
lines changed

2 files changed

+42
-10
lines changed

lib/client.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ export default class PodiumClient extends EventEmitter {
6868
#resources;
6969
#registry;
7070
#metrics;
71+
#counter;
7172
#histogram;
7273
#options;
7374
#state;
@@ -144,6 +145,16 @@ export default class PodiumClient extends EventEmitter {
144145
},
145146
});
146147

148+
this.#counter = this.#metrics.counter({
149+
name: 'podium_client_registered_podlet_count',
150+
description: 'Number of podlets registered with the client',
151+
labels: {
152+
clientName: this.#options.name,
153+
resourceName: undefined,
154+
resourceUri: undefined,
155+
},
156+
});
157+
147158
this.#histogram = this.#metrics.histogram({
148159
name: 'podium_client_refresh_manifests',
149160
description: 'Time taken for podium client to refresh manifests',
@@ -221,6 +232,13 @@ export default class PodiumClient extends EventEmitter {
221232
resourceOptions,
222233
);
223234

235+
this.#counter.inc({
236+
labels: {
237+
resourceName: options.name,
238+
resourceUri: options.uri,
239+
},
240+
});
241+
224242
resource.metrics.pipe(this.#metrics);
225243

226244
Object.defineProperty(this, options.name, {

tests/integration.basic.test.js

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -390,29 +390,43 @@ tap.test(
390390

391391
tap.test('integration basic - metrics stream objects created', async (t) => {
392392
const server = new PodletServer({ name: 'podlet' });
393-
const client = new Client({ name: 'clientName' });
393+
const client = new Client({ name: 'someClientName' });
394394

395395
const metrics = [];
396396
client.metrics.on('data', (metric) => metrics.push(metric));
397397
client.metrics.on('end', async () => {
398-
t.equal(metrics.length, 3);
399-
t.equal(metrics[0].name, 'podium_client_resolver_manifest_resolve');
400-
t.equal(metrics[0].type, 5);
398+
t.equal(metrics.length, 4);
399+
t.equal(metrics[0].name, 'podium_client_registered_podlet_count');
400+
t.equal(metrics[0].type, 2);
401401
t.same(metrics[0].labels[0], {
402-
name: 'name',
403-
value: 'clientName',
402+
name: 'clientName',
403+
value: 'someClientName',
404+
});
405+
t.same(metrics[0].labels[1], {
406+
name: 'resourceName',
407+
value: service.options.name,
408+
});
409+
t.same(metrics[0].labels[2], {
410+
name: 'resourceUri',
411+
value: service.options.uri,
404412
});
405-
t.equal(metrics[1].name, 'podium_client_resolver_fallback_resolve');
413+
t.equal(metrics[1].name, 'podium_client_resolver_manifest_resolve');
406414
t.equal(metrics[1].type, 5);
407415
t.same(metrics[1].labels[0], {
408416
name: 'name',
409-
value: 'clientName',
417+
value: 'someClientName',
410418
});
411-
t.equal(metrics[2].name, 'podium_client_resolver_content_resolve');
419+
t.equal(metrics[2].name, 'podium_client_resolver_fallback_resolve');
412420
t.equal(metrics[2].type, 5);
413421
t.same(metrics[2].labels[0], {
414422
name: 'name',
415-
value: 'clientName',
423+
value: 'someClientName',
424+
});
425+
t.equal(metrics[3].name, 'podium_client_resolver_content_resolve');
426+
t.equal(metrics[3].type, 5);
427+
t.same(metrics[3].labels[0], {
428+
name: 'name',
429+
value: 'someClientName',
416430
});
417431

418432
t.end();

0 commit comments

Comments
 (0)