Skip to content

valamidev/grafana-cloud-graphite

Repository files navigation

Grafana Cloud Graphite Metrics Client

This package provides a simple way to send metrics to a Grafana Cloud Graphite server. It includes support for counters and interval metrics.

Provide easy use for:

https://grafana.com/docs/grafana-cloud/monitor-infrastructure/metrics/metrics-graphite/http-api/

Example Grafana Dashboard feeded by this package

Dashboard Screenshot Example

Installation

To install this package, use npm:

npm i grafana-cloud-graphite

Requirements

Usage

To use this package, first import the GraphiteMetrics class:

import { GraphiteMetrics } from "grafana-cloud-graphite";

Then, create a new instance of the class with your Graphite server options:

const Metrics = new GraphiteMetrics({
  userId: "5435231", // Grafana Graphite UserId
  token: "glc_kyupkp...", // Grafana Access Token
  ingestEndpointURL: "https://something.grafana.net/graphite/metrics",
  namespace: "e2e",
});

// Handle/Listen Metrics error
Metrics.on("error", (err) => {
  console.error(err);
});

You can then register counters and interval metrics with the registerCounter method:

// Register a counter metric with 60.000ms (1 minute) reporting interval
const dbCounterAll = Metrics.registerCounter("db.query.all", 60000);
const dbCounterError = Metrics.registerCounter("db.query.error", 60000);

Use counter example:

try {
  dbCounterAll.inc();
  await db.query("SELECT * FROM users");
  // do some DB query
} catch (error) {
  dbCounterError.inc();
  // some error handling
}

To stop reporting metrics / clearIntervals, call the stop method:

Metrics.stop();

Additional Metrics types

// Register a counter metric with 60.000ms (1 minute) reporting interval
const dbQueryTime = Metrics.registerStats("db.query.time", 60000);

dbCounterTime.add(100);
dbCounterTime.add(100);
dbCounterTime.add(200);
/* Result:
db.query.time.min: 100, 
db.query.time.max: 200, 
db.query.time.avg: 133
db.query.time.median: 100
*/

const gauge = Metrics.registerGauge("any.gauge", 60000);

gauge.inc(100);
gauge.dec(50);
// Result any.gauge: 50

Use metrics on Grafana Dashboard

Dashboard Screenshot Example

License

This package is licensed under the MIT License. See the LICENSE file for details.