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:
Here an example for 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.