mirror of
https://github.com/BreizhHardware/express-prom-bundle.git
synced 2026-03-18 21:30:38 +01:00
add promClient option for smuggling collectDefaultMetrics, upgrade prom-client to ~10.2.2, version 3.3.0
This commit is contained in:
16
README.md
16
README.md
@@ -60,6 +60,9 @@ Other options:
|
|||||||
|
|
||||||
* **buckets**: buckets used for `http_request_duration_seconds` histogram
|
* **buckets**: buckets used for `http_request_duration_seconds` histogram
|
||||||
* **autoregister**: if `/metrics` endpoint should be registered. (Default: **true**)
|
* **autoregister**: if `/metrics` endpoint should be registered. (Default: **true**)
|
||||||
|
* **promClient**: options for promClient startup, e.g. **collectDefaultMetrics**. This option was added
|
||||||
|
to keep `express-prom-bundle` runnable using confit (e.g. with kraken.js) without writing any JS code,
|
||||||
|
see [advanced example](https://github.com/jochen-schweizer/express-prom-bundle/blob/master/advanced-example.js)
|
||||||
|
|
||||||
Deprecated:
|
Deprecated:
|
||||||
|
|
||||||
@@ -171,19 +174,32 @@ Here is meddleware config sample, which can be used in a standard **kraken.js**
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
* **3.3.0**
|
||||||
|
* added option **promClient** to be able to call collectDefaultMetrics
|
||||||
|
* upgrade **prom-client** to ~10.2.2 (switch to semver "approximately")
|
||||||
|
|
||||||
|
|
||||||
* **3.2.0**
|
* **3.2.0**
|
||||||
* added options **customLabels**, **transformLabels**
|
* added options **customLabels**, **transformLabels**
|
||||||
* upgrade **prom-client** to 10.1.0
|
* upgrade **prom-client** to 10.1.0
|
||||||
|
|
||||||
|
|
||||||
* **3.1.0**
|
* **3.1.0**
|
||||||
* upgrade **prom-client** to 10.0.0
|
* upgrade **prom-client** to 10.0.0
|
||||||
|
|
||||||
|
|
||||||
* **3.0.0**
|
* **3.0.0**
|
||||||
* upgrade dependencies, most notably **prom-client** to 9.0.0
|
* upgrade dependencies, most notably **prom-client** to 9.0.0
|
||||||
* switch to koa v2 in koa unittest
|
* switch to koa v2 in koa unittest
|
||||||
* only node v6 or higher is supported (stop supporting node v4 and v5)
|
* only node v6 or higher is supported (stop supporting node v4 and v5)
|
||||||
* switch to npm5 and use package-lock.json
|
* switch to npm5 and use package-lock.json
|
||||||
* options added: includeStatusCode, formatStatusCode
|
* options added: includeStatusCode, formatStatusCode
|
||||||
|
|
||||||
|
|
||||||
* **2.1.0**
|
* **2.1.0**
|
||||||
* deprecate **excludeRoutes**, use **req.originalUrl** instead of **req.path**
|
* deprecate **excludeRoutes**, use **req.originalUrl** instead of **req.path**
|
||||||
|
|
||||||
|
|
||||||
* **2.0.0**
|
* **2.0.0**
|
||||||
* the reason for the version lift were:
|
* the reason for the version lift were:
|
||||||
* compliance to official naming recommendation: https://prometheus.io/docs/practices/naming/
|
* compliance to official naming recommendation: https://prometheus.io/docs/practices/naming/
|
||||||
|
|||||||
@@ -10,13 +10,18 @@ const bundle = promBundle({
|
|||||||
includeMethod: true,
|
includeMethod: true,
|
||||||
includePath: true,
|
includePath: true,
|
||||||
customLabels: {year: null},
|
customLabels: {year: null},
|
||||||
transformLabels: labels => Object.assign(labels, {year: new Date().getFullYear()})
|
transformLabels: labels => Object.assign(labels, {year: new Date().getFullYear()}),
|
||||||
|
promClient: {
|
||||||
|
collectDefaultMetrics: {
|
||||||
|
timeout: 1000
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
app.use(bundle);
|
app.use(bundle);
|
||||||
|
|
||||||
// native prom-client metric (no prefix)
|
// native prom-client metric (no prefix)
|
||||||
const c1 = new bundle.promClient.Counter('c1', 'c1 help');
|
const c1 = new bundle.promClient.Counter({name: 'c1', help: 'c1 help'});
|
||||||
c1.inc(10);
|
c1.inc(10);
|
||||||
|
|
||||||
app.get('/foo/:id', (req, res) => {
|
app.get('/foo/:id', (req, res) => {
|
||||||
|
|||||||
8
package-lock.json
generated
8
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "express-prom-bundle",
|
"name": "express-prom-bundle",
|
||||||
"version": "3.2.0",
|
"version": "3.3.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1896,9 +1896,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"prom-client": {
|
"prom-client": {
|
||||||
"version": "10.1.0",
|
"version": "10.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/prom-client/-/prom-client-10.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/prom-client/-/prom-client-10.2.2.tgz",
|
||||||
"integrity": "sha512-ny9EdxpG6UcNnuc3W3LedE9qC3RFLSD+aBCv1i9OtcLS/nyHFck5uncoWHpD+rxmdttUPVd8qYRT1rb15Lpmjg==",
|
"integrity": "sha512-d3qCBK41qZx00/WVzWOX4tau9FinCztqaECZiGuMI5vGYD//5VSdKMOZPRQKjVh5RkI4Ex98DI0YPsoFnEo1QQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tdigest": "0.1.1"
|
"tdigest": "0.1.1"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "express-prom-bundle",
|
"name": "express-prom-bundle",
|
||||||
"version": "3.2.1",
|
"version": "3.3.0",
|
||||||
"description": "express middleware with popular prometheus metrics in one bundle",
|
"description": "express middleware with popular prometheus metrics in one bundle",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"on-finished": "^2.3.0",
|
"on-finished": "^2.3.0",
|
||||||
"prom-client": "^10.1.0",
|
"prom-client": "~10.2.2",
|
||||||
"url-value-parser": "^1.0.0"
|
"url-value-parser": "^1.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -343,4 +343,16 @@ describe('index', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('calls promClient.collectDefaultMetrics', () => {
|
||||||
|
const spy = spyOn(promClient, 'collectDefaultMetrics');
|
||||||
|
bundle({
|
||||||
|
promClient: {
|
||||||
|
collectDefaultMetrics: {
|
||||||
|
timeout: 3000
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
expect(spy).toHaveBeenCalledWith({timeout: 3000});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -44,7 +44,8 @@ function main(opts) {
|
|||||||
autoregister: true,
|
autoregister: true,
|
||||||
includeStatusCode: true,
|
includeStatusCode: true,
|
||||||
normalizePath: main.normalizePath,
|
normalizePath: main.normalizePath,
|
||||||
formatStatusCode: main.normalizeStatusCode
|
formatStatusCode: main.normalizeStatusCode,
|
||||||
|
promClient: {}
|
||||||
},
|
},
|
||||||
opts
|
opts
|
||||||
);
|
);
|
||||||
@@ -66,6 +67,10 @@ function main(opts) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opts.promClient.collectDefaultMetrics) {
|
||||||
|
promClient.collectDefaultMetrics(opts.promClient.collectDefaultMetrics);
|
||||||
|
}
|
||||||
|
|
||||||
const httpMetricName = opts.httpDurationMetricName || 'http_request_duration_seconds';
|
const httpMetricName = opts.httpDurationMetricName || 'http_request_duration_seconds';
|
||||||
|
|
||||||
const metricTemplates = {
|
const metricTemplates = {
|
||||||
|
|||||||
Reference in New Issue
Block a user