Overview

Send PgBouncer metrics to Axiom

The Prometheus receiver is part of the contrib distribution of the OpenTelemetry Collector (otelcol-contrib). It isn’t included in the core distribution.

Prerequisites#

When you create the dataset, select Metrics as the dataset type. Metrics require their own dedicated dataset. For more information, see Create dataset.

Expose PgBouncer stats with pgbouncer_exporter#

In pgbouncer.ini, allow a user to read stats and let the exporter connect:

stats_users = stats
ignore_startup_parameters = extra_float_digits

Then run the exporter, pointing it at PgBouncer’s special pgbouncer admin database:

docker run -d -p 9127:9127 prometheuscommunity/pgbouncer-exporter \
  --pgBouncer.connectionString="postgres://stats:PASSWORD@pgbouncer:6432/pgbouncer?sslmode=disable"

Replace the connection string with your PgBouncer host, port, and stats user. You can also set it with the PGBOUNCER_EXPORTER_CONNECTION_STRING environment variable. The exporter then serves metrics at http://localhost:9127/metrics.

Configure the OpenTelemetry Collector#

Add a Prometheus receiver that scrapes the exporter and an OTLP/HTTP exporter that sends data to Axiom:

receivers:
  prometheus:
    config:
      scrape_configs:
        - job_name: pgbouncer
          scrape_interval: 15s
          static_configs:
            - targets: ["pgbouncer-exporter:9127"] # host:port of pgbouncer_exporter
 
processors:
  memory_limiter:
    check_interval: 1s
    limit_percentage: 80
    spike_limit_percentage: 25
  batch:
    send_batch_max_size: 8192
 
exporters:
  otlphttp:
    compression: zstd
    endpoint: https://AXIOM_DOMAIN
    headers:
      authorization: Bearer API_TOKEN
      x-axiom-metrics-dataset: DATASET_NAME
 
service:
  pipelines:
    metrics:
      receivers:
        - prometheus
      processors:
        - memory_limiter
        - batch
      exporters:
        - otlphttp

Replace AXIOM_DOMAIN with the base domain of your edge deployment. For more information, see Edge deployments.

Replace API_TOKEN with the Axiom API token you have generated. For added security, store the API token in an environment variable.

Replace DATASET_NAME with the name of the Axiom dataset where you send your data.

For metrics, use the x-axiom-metrics-dataset header instead of x-axiom-dataset.

Query your metrics#

Once data is flowing, query your PgBouncer metrics like any other OTel metrics in Axiom. Pool metrics carry database and user tags. For example, to chart active client connections per database:

`DATASET_NAME`:`pgbouncer_pools_client_active_connections`
| align to $__interval using last
| group by `database` using sum

For more information, see Metrics.

Updated

Was this page helpful?