master
md 36.5 KB

PostgreSQL

Plugin: go.d.plugin Module: postgres

Overview

This collector monitors the activity and performance of Postgres servers, collects replication statistics, metrics for each database, table and index, and more.

It establishes a connection to the Postgres instance via a TCP or UNIX socket. To collect metrics for database tables and indexes, it establishes an additional connection for each discovered database.

This collector is supported on all platforms.

This collector supports collecting metrics from multiple instances of this integration, including remote instances.

PostgreSQL can be monitored further using the following other integrations:

Default Behavior

Auto-Detection

By default, it detects instances running on localhost by trying to connect as root and netdata using known PostgreSQL TCP and UNIX sockets:

  • 127.0.0.1:5432
  • /var/run/postgresql/

Limits

Table and index metrics are not collected for databases with more than 50 tables or 250 indexes. These limits can be changed in the configuration file.

Performance Impact

The default configuration for this integration is not expected to impose a significant performance impact on the system.

Setup

You can configure the postgres collector in two ways:

Method Best for How to
UI Fast setup without editing files Go to Nodes → Configure this node → Collectors → Jobs, search for postgres, then click + to add a job.
File If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) Edit go.d/postgres.conf and add a job.

:::important

UI configuration requires paid Netdata Cloud plan.

:::

Prerequisites

Create netdata user

Create a user with granted pg_monitor or pg_read_all_stat built-in role.

To create the netdata user with these permissions, execute the following in the psql session, as a user with CREATEROLE privileges:

CREATE USER netdata;
GRANT pg_monitor TO netdata;

After creating the new user, restart the Netdata Agent with sudo systemctl restart netdata, or the appropriate method for your system.

Configuration

Options

The following options can be defined globally: update_every, autodetection_retry.

Config options | Group | Option | Description | Default | Required | |:------|:-----|:------------|:--------|:---------:| | **Collection** | update_every | Data collection interval (seconds). | 1 | no | | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | dsn | Postgres connection string (DSN). See [DSN syntax](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING). | postgres://postgres:postgres@127.0.0.1:5432/postgres | yes | | **Cloud Auth** | cloud_auth.provider | Cloud auth provider (`none` or `azure_ad`). | none | no | | **Cloud Auth/Azure** | cloud_auth.azure_ad.mode | Azure AD credential mode (`service_principal`, `managed_identity`, or `default`). Required when `cloud_auth.provider` is `azure_ad`. | | yes | | | cloud_auth.azure_ad.mode_service_principal.tenant_id | Azure tenant ID. Required for `service_principal` mode. | | no | | | cloud_auth.azure_ad.mode_service_principal.client_id | Azure client ID. Required for `service_principal` mode. | | no | | | cloud_auth.azure_ad.mode_service_principal.client_secret | Azure client secret for `service_principal` mode. | | no | | | cloud_auth.azure_ad.mode_managed_identity.client_id | Optional client ID of a user-assigned managed identity (`managed_identity` mode). | | no | | **Target** | timeout | Query timeout (seconds). | 2 | no | | **Filters** | collect_databases_matching | Database selector. Controls which databases are included. Uses [simple patterns](https://github.com/netdata/netdata/tree/master/src/go/pkg/matcher#simple-patterns-matcher). | | no | | **Limits** | max_db_tables | Maximum number of tables per database to collect metrics for (0 = no limit). | 50 | no | | | max_db_indexes | Maximum number of indexes per database to collect metrics for (0 = no limit). | 250 | no | | **Functions** | functions.top_queries.disabled | Disable the [top-queries](#top-queries) function. | no | no | | | functions.top_queries.timeout | Query timeout (seconds). Uses collector timeout if not set. | | no | | | functions.top_queries.limit | Maximum number of queries to return. | 500 | no | | **Virtual Node** | vnode | Associates this data collection job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes). | | no |

via UI

Configure the postgres collector from the Netdata web interface:

  1. Go to Nodes.
  2. Select the node where you want the postgres data-collection job to run and click the :gear: (Configure this node). That node will run the data collection.
  3. The Collectors → Jobs view opens by default.
  4. In the Search box, type postgres (or scroll the list) to locate the postgres collector.
  5. Click the + next to the postgres collector to add a new job.
  6. Fill in the job fields, then click Test to verify the configuration and Submit to save.
    • Test runs the job with the provided settings and shows whether data can be collected.
    • If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest.

via File

The configuration file name for this integration is go.d/postgres.conf.

The file format is YAML. Generally, the structure is:

update_every: 1
autodetection_retry: 0
jobs:
  - name: some_name1
  - name: some_name2

You can edit the configuration file using the edit-config script from the Netdata config directory.

cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata
sudo ./edit-config go.d/postgres.conf
Examples
TCP socket

An example configuration.

jobs:
  - name: local
    dsn: 'postgresql://netdata@127.0.0.1:5432/postgres'

Unix socket

An example configuration.

Config ```yaml jobs: - name: local dsn: 'host=/var/run/postgresql dbname=postgres user=netdata' ```
Unix socket (custom port)

Connect to PostgreSQL using a Unix socket with a non-default port (5433).

Config ```yaml jobs: - name: local dsn: 'host=/var/run/postgresql port=5433 dbname=postgres user=netdata' ```
Azure Database for PostgreSQL with service principal

Use Microsoft Entra service principal authentication.

Config ```yaml jobs: - name: azure_postgres_sp dsn: 'postgresql://netdata@myserver.postgres.database.azure.com:5432/postgres?sslmode=require' cloud_auth: provider: azure_ad azure_ad: mode: service_principal mode_service_principal: tenant_id: "00000000-0000-0000-0000-000000000000" client_id: "11111111-1111-1111-1111-111111111111" client_secret: "super-secret-value" ```
Azure Database for PostgreSQL with managed identity

Use managed identity authentication (system-assigned by default).

Config ```yaml jobs: - name: azure_postgres_mi dsn: 'postgresql://netdata@myserver.postgres.database.azure.com:5432/postgres?sslmode=require' cloud_auth: provider: azure_ad azure_ad: mode: managed_identity ```
Multi-instance

Note: When you define multiple jobs, their names must be unique.

Local and remote instances.

Config ```yaml jobs: - name: local dsn: 'postgresql://netdata@127.0.0.1:5432/postgres' - name: remote dsn: 'postgresql://netdata@203.0.113.0:5432/postgres' ```

Alerts

The following alerts are available:

Alert name On metric Description
postgres_total_connection_utilization postgres.connections_utilization average total connection utilization over the last minute
postgres_acquired_locks_utilization postgres.locks_utilization average acquired locks utilization over the last minute
postgres_txid_exhaustion_perc postgres.txid_exhaustion_perc percent towards TXID wraparound
postgres_db_cache_io_ratio postgres.db_cache_io_ratio average cache hit ratio in db ${label:database} over the last minute
postgres_db_transactions_rollback_ratio postgres.db_cache_io_ratio average aborted transactions percentage in db ${label:database} over the last five minutes
postgres_db_deadlocks_rate postgres.db_deadlocks_rate number of deadlocks detected in db ${label:database} in the last minute
postgres_table_cache_io_ratio postgres.table_cache_io_ratio average cache hit ratio in db ${label:database} table ${label:table} over the last minute
postgres_table_index_cache_io_ratio postgres.table_index_cache_io_ratio average index cache hit ratio in db ${label:database} table ${label:table} over the last minute
postgres_table_toast_cache_io_ratio postgres.table_toast_cache_io_ratio average TOAST hit ratio in db ${label:database} table ${label:table} over the last minute
postgres_table_toast_index_cache_io_ratio postgres.table_toast_index_cache_io_ratio average index TOAST hit ratio in db ${label:database} table ${label:table} over the last minute
postgres_table_bloat_size_perc postgres.table_bloat_size_perc bloat size percentage in db ${label:database} table ${label:table}
postgres_table_last_autovacuum_time postgres.table_autovacuum_since_time time elapsed since db ${label:database} table ${label:table} was vacuumed by the autovacuum daemon
postgres_table_last_autoanalyze_time postgres.table_autoanalyze_since_time time elapsed since db ${label:database} table ${label:table} was analyzed by the autovacuum daemon
postgres_index_bloat_size_perc postgres.index_bloat_size_perc bloat size percentage in db ${label:database} table ${label:table} index ${label:index}

Metrics

Metrics grouped by scope.

The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels.

Per PostgreSQL instance

These metrics refer to the entire monitored application.

This scope has no labels.

Metrics:

Metric Dimensions Unit
postgres.connections_utilization used percentage
postgres.connections_usage available, used connections
postgres.connections_state_count active, idle, idle_in_transaction, idle_in_transaction_aborted, disabled connections
postgres.transactions_duration a dimension per bucket transactions/s
postgres.queries_duration a dimension per bucket queries/s
postgres.locks_utilization used percentage
postgres.checkpoints_rate scheduled, requested checkpoints/s
postgres.checkpoints_time write, sync milliseconds
postgres.bgwriter_halts_rate maxwritten events/s
postgres.buffers_io_rate checkpoint, backend, bgwriter B/s
postgres.buffers_backend_fsync_rate fsync calls/s
postgres.buffers_allocated_rate allocated B/s
postgres.wal_io_rate write B/s
postgres.wal_files_count written, recycled files
postgres.wal_archiving_files_count ready, done files/s
postgres.autovacuum_workers_count analyze, vacuum_analyze, vacuum, vacuum_freeze, brin_summarize workers
postgres.txid_exhaustion_towards_autovacuum_perc emergency_autovacuum percentage
postgres.txid_exhaustion_perc txid_exhaustion percentage
postgres.txid_exhaustion_oldest_txid_num xid xid
postgres.catalog_relations_count ordinary_table, index, sequence, toast_table, view, materialized_view, composite_type, foreign_table, partitioned_table, partitioned_index relations
postgres.catalog_relations_size ordinary_table, index, sequence, toast_table, view, materialized_view, composite_type, foreign_table, partitioned_table, partitioned_index B
postgres.uptime uptime seconds
postgres.databases_count databases databases

Per repl application

These metrics refer to the replication application.

Labels:

Label Description
application application name

Metrics:

Metric Dimensions Unit
postgres.replication_app_wal_lag_size sent_lag, write_lag, flush_lag, replay_lag B
postgres.replication_app_wal_lag_time write_lag, flush_lag, replay_lag seconds

Per repl slot

These metrics refer to the replication slot.

Labels:

Label Description
slot replication slot name

Metrics:

Metric Dimensions Unit
postgres.replication_slot_files_count wal_keep, pg_replslot_files files

Per database

These metrics refer to the database.

Labels:

Label Description
database database name

Metrics:

Metric Dimensions Unit
postgres.db_transactions_ratio committed, rollback percentage
postgres.db_transactions_rate committed, rollback transactions/s
postgres.db_connections_utilization used percentage
postgres.db_connections_count connections connections
postgres.db_cache_io_ratio miss percentage
postgres.db_io_rate memory, disk B/s
postgres.db_ops_fetched_rows_ratio fetched percentage
postgres.db_ops_read_rows_rate returned, fetched rows/s
postgres.db_ops_write_rows_rate inserted, deleted, updated rows/s
postgres.db_conflicts_rate conflicts queries/s
postgres.db_conflicts_reason_rate tablespace, lock, snapshot, bufferpin, deadlock queries/s
postgres.db_deadlocks_rate deadlocks deadlocks/s
postgres.db_locks_held_count access_share, row_share, row_exclusive, share_update, share, share_row_exclusive, exclusive, access_exclusive locks
postgres.db_locks_awaited_count access_share, row_share, row_exclusive, share_update, share, share_row_exclusive, exclusive, access_exclusive locks
postgres.db_temp_files_created_rate created files/s
postgres.db_temp_files_io_rate written B/s
postgres.db_size size B

Per table

These metrics refer to the database table.

Labels:

Label Description
database database name
schema schema name
table table name
parent_table parent table name

Metrics:

Metric Dimensions Unit
postgres.table_rows_dead_ratio dead percentage
postgres.table_rows_count live, dead rows
postgres.table_ops_rows_rate inserted, deleted, updated rows/s
postgres.table_ops_rows_hot_ratio hot percentage
postgres.table_ops_rows_hot_rate hot rows/s
postgres.table_cache_io_ratio miss percentage
postgres.table_io_rate memory, disk B/s
postgres.table_index_cache_io_ratio miss percentage
postgres.table_index_io_rate memory, disk B/s
postgres.table_toast_cache_io_ratio miss percentage
postgres.table_toast_io_rate memory, disk B/s
postgres.table_toast_index_cache_io_ratio miss percentage
postgres.table_toast_index_io_rate memory, disk B/s
postgres.table_scans_rate index, sequential scans/s
postgres.table_scans_rows_rate index, sequential rows/s
postgres.table_autovacuum_since_time time seconds
postgres.table_vacuum_since_time time seconds
postgres.table_autoanalyze_since_time time seconds
postgres.table_analyze_since_time time seconds
postgres.table_null_columns null columns
postgres.table_size size B
postgres.table_bloat_size_perc bloat percentage
postgres.table_bloat_size bloat B

Per index

These metrics refer to the table index.

Labels:

Label Description
database database name
schema schema name
table table name
parent_table parent table name
index index name

Metrics:

Metric Dimensions Unit
postgres.index_size size B
postgres.index_bloat_size_perc bloat percentage
postgres.index_bloat_size bloat B
postgres.index_usage_status used, unused status

Live Data

This collector exposes real-time functions for interactive troubleshooting in the Live tab.

Top Queries

Retrieves aggregated SQL query performance metrics from PostgreSQL using either pg_stat_monitor (preferred) or pg_stat_statements.

The collector automatically detects which extension is available: - pg_stat_monitor (Percona): Enhanced statistics with additional columns like application name, client IP, CPU time, error info, and query classification - pg_stat_statements (standard): Core execution statistics available in all PostgreSQL installations

Statistics include execution counts, timing metrics, I/O operations, and resource consumption. Columns are dynamically detected based on your PostgreSQL version and available extension.

Use cases: - Identify slow queries consuming the most total execution time - Find queries with high shared block reads for I/O optimization - Analyze temp block usage to detect queries needing memory tuning - With pg_stat_monitor: Track queries by application, identify error patterns

Query text is truncated at 4096 characters for display purposes.

Aspect Description
Name Postgres:top-queries
Require Cloud yes
Performance Queries pg_stat_statements or pg_stat_monitor which maintain statistics in shared memory:
• On busy servers with many unique queries, the extension may consume significant memory
• Default limit of 500 rows balances usefulness with performance
• pg_stat_monitor uses time-based buckets which may have different memory characteristics
Security Query text may contain unmasked literal values including potentially sensitive data:
• Personal information in WHERE clauses or INSERT values
• Business data and internal identifiers
• Access should be restricted to authorized personnel only
Availability Available when:
• Either pg_stat_statements or pg_stat_monitor extension is installed
• The collector has successfully connected to PostgreSQL
• Returns HTTP 503 if no query statistics extension is installed
• Returns HTTP 500 if the query fails
• Returns HTTP 504 if the query times out

Prerequisites

Enable pg_stat_statements or pg_stat_monitor

Either pg_stat_statements (standard) or pg_stat_monitor (Percona) must be installed. The collector auto-detects which is available, preferring pg_stat_monitor when both are present.

Option 1: pg_stat_statements (standard PostgreSQL)

  1. Add to postgresql.conf:
   shared_preload_libraries = 'pg_stat_statements'
  1. Restart PostgreSQL, then create the extension:
   CREATE EXTENSION pg_stat_statements;

Option 2: pg_stat_monitor (Percona - recommended)

Provides additional columns: application name, client IP, CPU time, error tracking, and query classification.

  1. Install pg_stat_monitor (available in Percona distribution or as separate package)

  2. Add to postgresql.conf:

   shared_preload_libraries = 'pg_stat_monitor'
  1. Restart PostgreSQL, then create the extension:
   CREATE EXTENSION pg_stat_monitor;

:::info

  • Both extensions require a server restart to load the shared library
  • Statistics can be reset with SELECT pg_stat_statements_reset() or SELECT pg_stat_monitor_reset()
  • Enable track_io_timing for block read/write timing metrics

:::

Parameters

Parameter Type Description Required Default Options
Filter By select Select the primary sort column. Options include total time, mean time, calls, rows, shared blocks hit/read, and temp blocks written. Defaults to total time to focus on most resource-intensive queries. yes totalTime

Returns

Aggregated query statistics from pg_stat_statements or pg_stat_monitor. Each row represents a unique query pattern with cumulative metrics across all executions.

Column Type Unit Visibility Description
Query ID string hidden Internal hash identifier for the normalized query. Can be used to track queries across statistics resets.
Query string Normalized SQL query text with literals replaced by parameter placeholders. Truncated to 4096 characters.
Database string Database name where the query was executed.
User string PostgreSQL user who executed the query.
Calls integer Total number of times this query pattern has been executed. High values indicate frequently run queries.
Total Time duration milliseconds Cumulative execution time across all executions. High values indicate queries consuming significant database resources.
Mean Time duration milliseconds Average execution time per call. Use this to compare typical performance across different query patterns.
Min Time duration milliseconds hidden Minimum execution time observed for a single execution.
Max Time duration milliseconds hidden Maximum execution time observed for a single execution. Large gaps between min and max may indicate performance variability.
Stddev Time duration milliseconds hidden Standard deviation of execution time. High values indicate inconsistent query performance.
Plans integer hidden Number of times the query was planned. Available in PostgreSQL 13+.
Total Plan Time duration milliseconds hidden Cumulative time spent planning the query. Available in PostgreSQL 13+.
Mean Plan Time duration milliseconds hidden Average time spent planning per execution. Available in PostgreSQL 13+.
Min Plan Time duration milliseconds hidden Minimum planning time observed. Available in PostgreSQL 13+.
Max Plan Time duration milliseconds hidden Maximum planning time observed. Available in PostgreSQL 13+.
Stddev Plan Time duration milliseconds hidden Standard deviation of planning time. Available in PostgreSQL 13+.
Rows integer Total number of rows retrieved or affected across all executions.
Shared Blocks Hit integer Total shared buffer cache hits. High values indicate good cache utilization.
Shared Blocks Read integer Total shared blocks read from disk. High values indicate queries that bypass the cache and may benefit from more shared_buffers.
Shared Blocks Dirtied integer hidden Total shared blocks dirtied by the query.
Shared Blocks Written integer hidden Total shared blocks written by the query.
Local Blocks Hit integer hidden Total local buffer cache hits (temporary tables).
Local Blocks Read integer hidden Total local blocks read from disk.
Local Blocks Dirtied integer hidden Total local blocks dirtied.
Local Blocks Written integer hidden Total local blocks written.
Temp Blocks Read integer Total temp blocks read. Non-zero values indicate queries spilling to disk due to insufficient work_mem.
Temp Blocks Written integer Total temp blocks written. High values suggest increasing work_mem may improve performance.
Block Read Time duration milliseconds Time spent reading blocks from disk. Requires track_io_timing to be enabled.
Block Write Time duration milliseconds Time spent writing blocks to disk. Requires track_io_timing to be enabled.
WAL Records integer hidden Total number of WAL records generated. Available in PostgreSQL 13+.
WAL Full Page Images integer hidden Total number of WAL full page images generated. Available in PostgreSQL 13+.
WAL Bytes integer hidden Total bytes of WAL generated. Available in PostgreSQL 13+.
JIT Functions integer hidden Total number of functions JIT-compiled. Available in PostgreSQL 15+.
JIT Generation Time duration milliseconds hidden Time spent generating JIT code. Available in PostgreSQL 15+.
JIT Inlining Count integer hidden Number of times JIT inlining was performed. Available in PostgreSQL 15+.
JIT Inlining Time duration milliseconds hidden Time spent on JIT inlining. Available in PostgreSQL 15+.
JIT Optimization Count integer hidden Number of times JIT optimization was performed. Available in PostgreSQL 15+.
JIT Optimization Time duration milliseconds hidden Time spent on JIT optimization. Available in PostgreSQL 15+.
JIT Emission Count integer hidden Number of times JIT code was emitted. Available in PostgreSQL 15+.
JIT Emission Time duration milliseconds hidden Time spent emitting JIT code. Available in PostgreSQL 15+.
Temp Block Read Time duration milliseconds hidden Time spent reading temp blocks. Available in PostgreSQL 15+. Requires track_io_timing.
Temp Block Write Time duration milliseconds hidden Time spent writing temp blocks. Available in PostgreSQL 15+. Requires track_io_timing.
Application Name string Name of the application that executed the query. Available with pg_stat_monitor only.
Client IP string hidden IP address of the client that executed the query. Available with pg_stat_monitor only.
Command Type string Type of SQL command (SELECT, INSERT, UPDATE, DELETE, etc.). Available with pg_stat_monitor only.
Comments string hidden SQL comments extracted from the query. Available with pg_stat_monitor only.
Relations string hidden Tables/relations involved in the query. Available with pg_stat_monitor only.
CPU User Time duration milliseconds hidden CPU time spent in user mode. Available with pg_stat_monitor only.
CPU System Time duration milliseconds hidden CPU time spent in system/kernel mode. Available with pg_stat_monitor only.
Error Level integer hidden PostgreSQL error level if query produced an error. Available with pg_stat_monitor only.
SQL Code string hidden PostgreSQL SQLSTATE error code if query produced an error. Available with pg_stat_monitor only.
Error Message string hidden Error message if query produced an error. Available with pg_stat_monitor only.
Top Level string hidden Whether this is a top-level statement (true) or nested (false). Available with pg_stat_monitor only.
Bucket Start Time string hidden Start time of the statistics bucket. Available with pg_stat_monitor only.

Running Queries

Retrieves currently executing queries from PostgreSQL pg_stat_activity system view.

This function queries pg_stat_activity which shows real-time information about each server process including the SQL query being executed, wait events, and session state. Unlike Top Queries which shows aggregated historical statistics, Running Queries shows live snapshots of active queries.

Use cases: - Identify long-running queries that may be blocking other operations - Debug stuck transactions or hanging connections - Monitor active workload during performance issues - Investigate wait events and lock contention in real-time

Query text is truncated at 4096 characters for display purposes.

Aspect Description
Name Postgres:running-queries
Require Cloud yes
Performance Queries pg_stat_activity which is a live system view:
• Very lightweight query, no impact on database performance
• Returns only active queries by default (state = 'active')
• Limited to 500 rows
Security Query text contains actual SQL being executed, which may include:
• Personal information in WHERE clauses or INSERT values
• Business data and internal identifiers
• Access should be restricted to authorized personnel only
Availability Available when:
• The collector has successfully connected to PostgreSQL
• Returns HTTP 503 if collector is still initializing
• Returns HTTP 500 if the query fails
• Returns HTTP 504 if the query times out

Prerequisites

Database user permissions

The monitoring user needs pg_monitor role to view all sessions:

GRANT pg_monitor TO netdata;

Without this role, the user can only see their own sessions.

Parameters

Parameter Type Description Required Default Options
Sort By select Select the sort column. Defaults to query duration (longest running first). yes durationMs

Returns

Live query data from pg_stat_activity. Each row represents a currently active backend process.

Column Type Unit Visibility Description
Duration duration milliseconds Query duration in milliseconds (since query_start). High values indicate long-running queries.
Query string Query text of the currently executing or most recent query. May be truncated at track_activity_query_size.
Database string Name of the database this backend is connected to.
User string Name of the user logged into this backend.
Application Name string Name of the application connected to this backend.
Client Address string IP address of the client (NULL for Unix socket or internal process).
Wait Event string Specific wait event name if backend is currently waiting.
PID integer Process ID of this backend. Use with pg_terminate_backend() to kill a query.
Wait Event Type string hidden Type of event the backend is waiting for (Activity, BufferPin, Client, Extension, IO, IPC, Lock, LWLock, Timeout).
State string hidden Current state: active, idle, idle in transaction, idle in transaction (aborted), fastpath function call, disabled.
Backend Type string hidden Type of backend: client backend, autovacuum worker, parallel worker, walsender, walreceiver, etc. Available in PostgreSQL 10+.
Query Start timestamp hidden Time when the currently active query was started.
Transaction Start timestamp hidden Time when current transaction started (NULL if no transaction).
Backend Start timestamp hidden Time when this process/connection started.
State Change timestamp hidden Time when state was last changed.
Query ID string hidden Query identifier (requires compute_query_id or extension). Available in PostgreSQL 14+.
Leader PID integer hidden Process ID of parallel group leader (NULL if this is leader or not parallel). Available in PostgreSQL 13+.
Database ID integer hidden OID of the database this backend is connected to.
User ID integer hidden OID of the user logged into this backend.
Client Hostname string hidden Hostname of the client via reverse DNS (only if log_hostname enabled).
Client Port integer hidden TCP port of client (-1 for Unix socket, NULL for internal process).
Backend Xid string hidden Top-level transaction identifier of this backend.
Backend Xmin string hidden Backend's xmin horizon.

Troubleshooting

Debug Mode

Important: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature.

To troubleshoot issues with the postgres collector, run the go.d.plugin with the debug option enabled. The output should give you clues as to why the collector isn't working.

  • Navigate to the plugins.d directory, usually at /usr/libexec/netdata/plugins.d/. If that's not the case on your system, open netdata.conf and look for the plugins setting under [directories].
  cd /usr/libexec/netdata/plugins.d/
  • Switch to the netdata user.
  sudo -u netdata -s
  • Run the go.d.plugin to debug the collector:
  ./go.d.plugin -d -m postgres

To debug a specific job:

  ./go.d.plugin -d -m postgres -j jobName

Getting Logs

If you're encountering problems with the postgres collector, follow these steps to retrieve logs and identify potential issues:

  • Run the command specific to your system (systemd, non-systemd, or Docker container).
  • Examine the output for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem.

System with systemd

Use the following command to view logs generated since the last Netdata service restart:

journalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep postgres

System without systemd

Locate the collector log file, typically at /var/log/netdata/collector.log, and use grep to filter for collector's name:

grep postgres /var/log/netdata/collector.log

Note: This method shows logs from all restarts. Focus on the latest entries for troubleshooting current issues.

Docker Container

If your Netdata runs in a Docker container named "netdata" (replace if different), use this command:

docker logs netdata 2>&1 | grep postgres