Narnia's Poofy Meatcleaver
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

moleculer-prometheus

0.2.0 • Public • Published

Moleculer logo

moleculer-prometheus NPM version

Moleculer metrics module for Prometheus.

Grafana screenshot

Features

  • collect default Node.js metrics.
  • measure service calls.
  • support custom metrics.
  • Grafana dashboard example.

Install

$ npm install moleculer-prometheus

Usage

// services/metrics.prometheus.js
 
const PromService = require("moleculer-prometheus");
 
module.exports = {
    mixins: [PromService],
    settings: {
        port: 3030,
        collectDefaultMetrics: true,
        timeout: 5 * 1000, 
    }
});
 
// moleculer.config.js
module.exports = {
    // ...
    metrics: true,
    // ...
}

Add custom metric

// services/metrics.prometheus.js
const PromService = require("moleculer-prometheus");
 
module.exports = {
    mixins: [PromService],
    settings: {
        metrics: {
           "custom_value": { type: "Gauge", help: "Moleculer Prometheus custom metric" } 
        } 
    }
});

Broadcast a metrics.update event to set the metric value

broker.broadcast("metrics.update", {
    name: "custom_value",
    method: "set",
    value: Math.round(Math.random() * 100)
});

Settings

Property Type Default Description
port Number 3030 Exposed HTTP port.
collectDefaultMetrics Boolean true Enable to collect default metrics.
timeout Number 10000 Timeout option for 'collectDefaultMetrics' in milliseconds.
metrics Object {} Metric definitions.

Default Moleculer metrics

Name Type Labels Description
moleculer_nodes_total Gauge - Moleculer nodes count
moleculer_services_total Gauge - Moleculer services count
moleculer_actions_total Gauge - Moleculer actions count
moleculer_events_total Gauge - Moleculer event subscription count
moleculer_nodes Gauge nodeID, type, version, langVersion Moleculer node list
moleculer_action_endpoints_total Gauge action Moleculer action endpoints
moleculer_service_endpoints_total Gauge service, version Moleculer service endpoints
moleculer_event_endpoints_total Gauge event, group Moleculer event endpoints
moleculer_req_total Counter action, service, nodeID Moleculer request count
moleculer_req_errors_total Counter action, service, nodeID, errorCode, errorName, errorType Moleculer request error count
moleculer_req_duration_ms Histogram action, service, nodeID Moleculer request durations

Methods

update

Update a metric value.

Parameters

Property Type Default Description
name String required
method String required
labels Object -
value any required
timestamp any required

Test

$ npm test

In development with watching

$ npm run ci

License

The project is available under the MIT license.

Contact

Copyright (c) 2016-2018 MoleculerJS

@moleculerjs @MoleculerJS

install

npm i moleculer-prometheus

Downloadsweekly downloads

60

version

0.2.0

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar