@operate-first/probot-metrics
v1.0.0
Published
Probot extension to expose Prometheus metrics
Downloads
101
Readme
Probot metrics endpoint
This extension enables you to expose Prometheus metrics from Probot with ease. It's a simple wrapper on top of prom-client
.
Installation
npm install --save @operate-first/probot-metrics
Overview
useCounter(options)
: registers a Counter metric, consumes options for Counter.useGauge(options)
: registers a Gauge metric, consumes options for Gauge.useHistogram(options)
: registers a Histogram metric, consumes options for Histogram.useSummary(options)
: registers a Summary metric, consumes options for Summary.exposeMetrics(route)
to expose HTTP route from Probot on<route>
(defaults to/metrics
). Use as a Probot HTTP route:
Usage
If you want to leverage this extension, it is required that your Probot instance has a server exposed (This extension currently supports Prometheus PULL mode only, serverless deployments don't work like that.)
const metrics = require('@operate-first/probot-metrics');
module.exports = (app, { getRouter }) => {
const router = getRouter();
metrics.exposeMetrics(router, '/metrics');
}
By default this extension tracks default Node.js metrics and exposes them (with probot_
prefix). In addition to that you can define your own custom metrics.
Define custom metrics
You can use useCounter
, useGauge
, useHistogram
and useSummary
to define custom metrics.
const metrics = require('@operate-first/probot-metrics');
module.exports = app => {
// Exposing the route is required in all cases
//...
const numberOfActionsTotal = metrics.useCounter({
name: 'num_of_actions_total',
help: 'Total number of actions received',
labelNames: ['install', 'action'],
});
app.onAny((context) => {
numberOfActionsTotal
.labels({
install: context.payload.installation.id,
action: context.payload.action,
})
.inc();
});
}