JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 9310
  • Score
    100M100P100Q134106F
  • License MIT

Send samples to prometheus via remote_write from NodeJS

Package Exports

  • prometheus-remote-write
  • prometheus-remote-write/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (prometheus-remote-write) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Push timeseries to Prometheus via remote_write

NPM version NPM Size NPM Downloads

Using remote_write facility (see https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write) to send metrics to remote Prometheus from NodeJS app.

Pretty much anything from https://prometheus.io/docs/operating/integrations/#remote-endpoints-and-storage should be supported, but tested only with Grafana Cloud, Grafana Mimir Prometheus, AWS AMP and VictoriaMetrics.

(List copied from https://github.com/prometheus/docs/blob/main/content/docs/operating/integrations.md)

Usage:

import { pushTimeseries, pushMetrics } from "prometheus-remote-write";

// Just push some metrics metrics
await pushMetrics(
  {
    queue_depth_total: 100,
  },
  {
    url: process.env.GRAFANA_PUSH_URL || "http://localhost:9201",
    labels: { service: "queue-worker" },
  }
);

// Follows remote_write payload format (see https://github.com/prometheus/prometheus/blob/main/prompb/types.proto)
await pushTimeseries(
  {
    labels: {
      // Name should conform to https://prometheus.io/docs/practices/naming/
      __name__: "queue_depth_total",
      instance: "dev.example.com",
      service: "SQS",
    },
    samples: [
      {
        value: 150,
        timestamp: Date.now(),
      },
    ],
  },
  config
);


// Full config - only url is required
const config = {
  // Remote url
  url: "http://localhost:9201",
  // Auth settings
  auth: {
    username: "...",
    password: "...",
  },
  // Optional prometheus protocol descripton .proto/.json
  proto: undefined,
  // Override default console.name(...log) used
  console: undefined,
  // Be verbose
  verbose: false,
  timing: false,
  // Override used node-fetch
  fetch: undefined,
  // Additional labels to apply to each timeseries, i.e. [{ service: "SQS" }]
  labels: undefined,
  // Additional HTTP headers to send with each request
  headers: undefined
};