GitHub Actions CI Status codecov Coverage Status Known Vulnerabilities npm downloads npm version npm license semver Conventional Commits renovate code style: prettier github stars
A prometheus exporter exposing metrics for node-postgres.
The exporter provides the following metrics.
Metric Name | Description | Labels | Since |
---|---|---|---|
pg_client_errors_total | The total number of connection errors with a database |
|
1.0.0 |
pg_client_disconnects_total | The total number of disconnected connections |
|
1.0.0 |
Metric Name | Description | Labels | Since |
---|---|---|---|
pg_pool_connections_created_total | The total number of created connections |
|
1.0.0 |
pg_pool_size | The current size of the connection pool, including active and idle members |
|
1.0.0 |
pg_pool_active_connections | The total number of active connections |
|
1.0.0 |
pg_pool_errors_total | The total number of connection errors with a database |
|
1.0.0 |
pg_pool_connections_removed_total | The total number of removed connections |
|
1.0.0 |
Here an example output in the prometheus format of the provided metrics.
# HELP pg_client_errors_total The total number of connection errors with a database. # TYPE pg_client_errors_total counter pg_client_errors_total{host="localhost:5432",database="node_postgres_test1"} 1 # HELP pg_client_disconnects_total The total number of disconnected connections. # TYPE pg_client_disconnects_total counter pg_client_disconnects_total{host="localhost:5432",database="node_postgres_test1"} 1 # HELP pg_pool_connections_created_total The total number of created connections. # TYPE pg_pool_connections_created_total counter pg_pool_connections_created_total{host="localhost:5432",database="node_postgres_test1"} 19 # HELP pg_pool_size The current size of the connection pool, including active and idle members. # TYPE pg_pool_size gauge pg_pool_size{host="localhost:5432",database="node_postgres_test1"} 10 # HELP pg_pool_max The maximum size of the connection pool. # TYPE pg_pool_max gauge pg_pool_max{host="localhost:5432",database="node_postgres_test1"} 10 # HELP pg_pool_active_connections The total number of active connections. # TYPE pg_pool_active_connections gauge pg_pool_active_connections{host="localhost:5432",database="node_postgres_test1"} 10 # HELP pg_pool_waiting_connections The total number of waiting connections. # TYPE pg_pool_waiting_connections gauge pg_pool_waiting_connections{host="localhost:5432",database="node_postgres_test1"} 1 # HELP pg_pool_idle_connections The total number of idle connections. # TYPE pg_pool_idle_connections gauge pg_pool_idle_connections{host="localhost:5432",database="node_postgres_test1"} 0 # HELP pg_pool_errors_total The total number of connection errors with a database. # TYPE pg_pool_errors_total counter pg_pool_errors_total{host="localhost:5432",database="node_postgres_test1"} 1 # HELP pg_pool_connections_removed_total The total number of removed connections. # TYPE pg_pool_connections_removed_total counter pg_pool_connections_removed_total{host="localhost:5432",database="node_postgres_test1"} 9
Add the following dependency to your project to download the package from npm.
npm i @christiangalsterer/node-postgres-prometheus-exporter
The following example illustrates how to use the exporter to enable monitoring for the node-postgres.
import { Client, Pool } from 'pg' import { Registry, collectDefaultMetrics } from 'prom-client' import { monitorPgClient, monitorPgPool } from '@christiangalsterer/node-postgres-prometheus-exporter' ... // set up a pg.Client const client = new Client() // set up a pg.Pool const pool = new Pool() // set up the prometheus client const register = new Registry(); collectDefaultMetrics({ register }) // monitor the pg.Client monitorPgClient(client, register) // monitor the pg.Pool monitorPgPool(pool, register) ... // connect to PostgreSQL *after* calling monitorPgClient() / monitorPgPool() await client.connect() await pool.connect()
The following example illustrates how to use the exporter to enable monitoring for node-postgres.
const pg = require('pg') const promClient = require( 'prom-client'); const postgresExporter = require('@christiangalsterer/node-postgres-prometheus-exporter') // set up a pg.Client const client = new pg.Client() // set up a pg.Pool const pool = new pg.Pool() // set up the prometheus client const collectDefaultMetrics = promClient.collectDefaultMetrics; const Registry = promClient.Registry; const register = new Registry(); collectDefaultMetrics({ register }); // monitor the pg.Client postgresExporter.monitorPgClient(client, register) // monitor the pg.Pool postgresExporter.monitorPgPool(pool, register) // connect to Postgres *after* calling monitorPgClient() / monitorPgPool() await client.connect() await pool.connect()
The exporter can be configured via properties specified on the optional parameter of type PgClientExporterOptions and PgPoolExporterOptions respectively.
property | Description | Example | Since |
---|---|---|---|
defaultLabels | Default labels added to each metrics. | {'foo':'bar', 'alice': 3} | 1.0.0 |
property | Description | Example | Since |
---|---|---|---|
defaultLabels | Default labels added to each metrics. | {'foo':'bar', 'alice': 3} | 1.0.0 |
An example dashboard for Grafana is available here displaying the provided metrics by the exporter.
Here an example for node-postgres client metrics: Grafana:node-postgres Client Metrics
Here an example for node-postgres pool metrics: Grafana:node-postgres Pool Metrics
The changes to project can be found in the changelog.
The following table list the compatibility of exporter versions with different node-postgres and prom-client versions.
Exporter Version | node-postgres Version | prom-client version |
---|---|---|
^1.0.0 | ^8.11.0 | ^15.0.0 |
Contributions are highly welcome. If you want to contribute to this project please follow the steps described in the contribution guidelines.
If you want to support this project, please add a link to your project and/or company when you use this exporter.
If you are looking for a way to monitor your MongoDB Driver for Node.js you may have a look at https://github.com/christiangalsterer/mongodb-driver-prometheus-exporter.
If you are looking for a way to monitor KafkaJs for Node.js you may have a look at https://github.com/christiangalsterer/kafkajs-prometheus-exporter.