Skip to content

jgchenu/egg-prometheus

 
 

Repository files navigation

egg-prometheus

Prometheus plugin for egg framework

NPM version build status Test coverage David deps Known Vulnerabilities npm download

Prometheus plugin for egg framework

Install

$ npm i egg-prometheus --save

Usage

Enable the plugin

Change ${app_root}/config/plugin.js to enable Prometheus plugin:

exports.prometheus = {
  enable: true,
  package: "egg-prometheus",
};

Configuration

exports.prometheus = {
  timeout: 3000,
  scrapePort: 3000,
  scrapePath: '/metrics',
  defaultHttpMetricsFilter: ({ method, status, routerName, path }) => true,
  defaultLabels: { ... },
};
  • timeout: metrics pull timeout
  • scrapePort: the port to scrape metrics from
  • scrapePath: the path to scrape metrics from
  • defaultLabels: static labels may be applied to every metric emitted by a registry
  • defaultHttpMetricsFilter: can custom filter default http metrics, return false can prevent metrics

Default Metrics

  • http_response_time_ms summary: ms to handle a request
  • http_request_rate counter: number of requests to a route

while egg-rpc-base is enabled

  • rpc_consumer_response_time_ms summary: ms of rpc time consuming
  • rpc_consumer_request_rate counter: number of rpc calls
  • rpc_consumer_fail_response_time_ms summary: ms of fail rpc time consuming
  • rpc_consumer_request_fail_rate counter: number of fail rpc calls
  • rpc_consumer_request_size_bytes summary: rpc request size in bytes
  • rpc_consumer_response_size_bytes summary: rpc response size in bytes
  • rpc_provider_response_time_ms summary: ms of request processed time
  • rpc_provider_request_rate counter: number of rpc calls
  • rpc_provider_fail_response_time_ms summary: ms of fail request processed time
  • rpc_provider_request_fail_rate counter: number of fail rpc calls

Custom Metrics

const counter = new app.prometheus.Counter({
  name: "xxx_total",
  help: "custom counter",
  labelNames: ["xxx"],
});

const gauge = new app.prometheus.Gauge({
  name: "xxx_gauge",
  help: "custom gauge",
  labelNames: ["xxx"],
});

const histogram = new app.prometheus.Histogram({
  name: "xxx_histogram",
  help: "custom histogram",
  labelNames: ["xxx"],
});

const summary = new app.prometheus.Summary({
  name: "xxx_summary",
  help: "custom summary",
  labelNames: ["xxx"],
});

How to Contribute

Please let us know how can we help. Do check out issues for bug reports or suggestions first.

To become a contributor, please follow our contributing guide.

License

MIT

About

Prometheus plugin for Egg.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.2%
  • Shell 0.8%