From 0ce44722a5b0d1ed9734fb0cbceff2cee1c22bbd Mon Sep 17 00:00:00 2001 From: Konstantin Pogorelov Date: Sat, 6 Jan 2024 10:48:57 +0100 Subject: [PATCH] use collectDefaultMetrics.prefix for up metric --- spec/index.spec.js | 36 +++++++++++++++++++++++++++++------- src/index.js | 6 +++++- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/spec/index.spec.js b/spec/index.spec.js index 665850c..193e4b9 100644 --- a/spec/index.spec.js +++ b/spec/index.spec.js @@ -546,15 +546,37 @@ describe('index', () => { }); }); - it('calls promClient.collectDefaultMetrics', () => { - const spy = spyOn(promClient, 'collectDefaultMetrics'); - bundle({ - promClient: { - collectDefaultMetrics: { + describe('option collectDefaultMetrics', () => { + it('it gets called', () => { + const spy = spyOn(promClient, 'collectDefaultMetrics'); + bundle({ + promClient: { + collectDefaultMetrics: { + } } - } + }); + expect(spy).toHaveBeenCalledWith({}); + }); + + it('prefix is used for up metric', (done) => { + const instance = bundle({ + promClient: { + collectDefaultMetrics: { + prefix: 'hello_' + } + } + }); + const app = express(); + app.use(instance); + const agent = supertest(app); + agent + .get('/metrics') + .end((err, res) => { + expect(res.status).toBe(200); + expect(res.text).toMatch(/^hello_up\s1/m); + done(); + }); }); - expect(spy).toHaveBeenCalledWith({}); }); describe('usage of clusterMetrics()', () => { diff --git a/src/index.js b/src/index.js index 0c96dfb..187de0d 100644 --- a/src/index.js +++ b/src/index.js @@ -132,8 +132,12 @@ function main(opts) { }; if (opts.includeUp !== false) { + let prefix = ''; + if (opts.promClient && opts.promClient.collectDefaultMetrics) { + prefix = opts.promClient.collectDefaultMetrics.prefix || ''; + } metrics.up = new promClient.Gauge({ - name: 'up', + name: `${prefix}up`, help: '1 = up, 0 = not up', registers: [opts.promRegistry] });