egg-prometheus
TypeScript icon, indicating that this package has built-in type declarations

1.7.1 • Public • Published

egg-prometheus

Prometheus plugin for egg framework

NPM version CI Test coverage 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: 5000,
  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

// Here's an example senario:
// Some metric called 'pv' stands for 'page view'
// We are going to know its total count.
// To ensure that we know the pv of each visit source
// We define a label called from.
const counter = new app.prometheus.Counter({
  name: "pv_total",
  help: "custom counter",
  labelNames: ["from"],
});
// To use the from label, we do as the following.
counter.labels(['google_com']).inc();
counter.labels(['facebook_com']).inc();

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

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

// Summary
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

Contributors


gxcsoccer


xujihui1985


popomore


nightink


sjfkai


jgchenu

This project follows the git-contributor spec, auto updated at Fri Dec 15 2023 17:58:23 GMT+0800.

/egg-prometheus/

    Package Sidebar

    Install

    npm i egg-prometheus

    Weekly Downloads

    116

    Version

    1.7.1

    License

    MIT

    Unpacked Size

    33.6 kB

    Total Files

    20

    Last publish

    Collaborators

    • gxcsoccer
    • fengmk2