Created
March 19, 2019 13:38
-
-
Save sysdig-blog/ed98dcf647edcac88d9dc4aaab70fb51 to your computer and use it in GitHub Desktop.
Prometheus metrics code instrumentation Javascript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const client = require('prom-client'); | |
const express = require('express'); | |
const server = express(); | |
const register = new client.Registry(); | |
// Probe every 5th second. | |
const intervalCollector = client.collectDefaultMetrics({prefix: 'node_', timeout: 5000, register}); | |
const counter = new client.Counter({ | |
name: "node_my_counter", | |
help: "This is my counter" | |
}); | |
const gauge = new client.Gauge({ | |
name: "node_my_gauge", | |
help: "This is my gauge" | |
}); | |
const histogram = new client.Histogram({ | |
name: "node_my_histogram", | |
help: "This is my histogram", | |
buckets: [0.1, 5, 15, 50, 100, 500] | |
}); | |
const summary = new client.Summary({ | |
name: "node_my_summary", | |
help: "This is my summary", | |
percentiles: [0.01, 0.05, 0.5, 0.9, 0.95, 0.99, 0.999] | |
}); | |
register.registerMetric(counter); | |
register.registerMetric(gauge); | |
register.registerMetric(histogram); | |
register.registerMetric(summary); | |
const rand = (low, high) => Math.random() * (high - low) + low; | |
setInterval(() => { | |
counter.inc(rand(0, 1)); | |
gauge.set(rand(0, 15)); | |
histogram.observe(rand(0,10)); | |
summary.observe(rand(0, 10)); | |
}, 1000); | |
server.get('/metrics', (req, res) => { | |
res.set('Content-Type', register.contentType); | |
res.end(register.metrics()); | |
}); | |
console.log('Server listening to 8080, metrics exposed on /metrics endpoint'); | |
server.listen(8080); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment