---
title: Troubleshooting PostgreSQL NRDOT monitoring
source: https://docs.newrelic.com/docs/opentelemetry/database/postgresql/troubleshooting
---

> #### 💡 PREVIEW
>
> We're still working on this feature, but we'd love for you to try it out!
>
> This feature is currently provided as part of a preview pursuant to our [pre-release policies](https://docs.newrelic.com/docs/licenses/license-information/referenced-policies/new-relic-pre-release-policy/).

Troubleshoot common issues you may encounter when monitoring your PostgreSQL with the NRDOT Collector.

## Test connectivity

### Test network connectivity to PostgreSQL

```bash
psql --host=<YOUR_DB_HOST> --port=<YOUR_DB_PORT> --username=<YOUR_DB_USERNAME> --dbname=<YOUR_DATABASE_NAME> --command 'SELECT 1;'
```

A successful connection and result confirms the monitoring user, host, and port are reachable before troubleshooting the collector itself.

### Test OTLP endpoint connectivity

Verify the NRDOT Collector can reach New Relic's OTLP endpoint:

```bash
curl -v <YOUR_NEWRELIC_OTLP_ENDPOINT>
```

## Common symptoms

| Symptom                                                                                             | Likely cause                                                                                                                                                                              |
| --------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| No `db.server.query_sample` / `db.server.top_query` events                                          | The `events` block not enabled in the receiver config (both are off by default)                                                                                                           |
| `db.server.top_query` events missing entirely                                                       | `pg_stat_statements` extension not created in that database                                                                                                                               |
| `db.server.query_sample` missing blocking-session detail                                            | Monitoring user lacks `pg_monitor`                                                                                                                                                        |
| Long queries truncated in `db.server.query_sample`                                                  | Default `track_activity_query_size` (1024 bytes) — raise it, see [Compatibility and prerequisites](https://docs.newrelic.com/docs/opentelemetry/database/postgresql/compatibility#params) |
| `postgresql.function.calls` always empty, or dashboard "Function Calls/min" widget empty            | `track_functions` not set to `pl` or `all` in `postgresql.conf`                                                                                                                           |
| Several dashboard widgets empty despite metrics flowing                                             | Those metrics are disabled by default — see [Metrics reference](https://docs.newrelic.com/docs/opentelemetry/database/postgresql/metrics-reference#dashboard)                             |
| `db.query.comment_tags.nr_service_guid` always empty                                                | `allowed_comment_keys: [nr_service_guid]` not set on `query_sample_collection` / `top_query_collection` — empty by default                                                                |
| Table/index/function metrics missing for some tables                                                | Monitoring user lacks `SELECT` on those tables/schemas — `pg_monitor` grants stat-visibility, not object-level `SELECT`                                                                   |
| `postgresql.wal.lag` / `.wal.age` missing                                                           | Requires WAL enabled with at least one connected replica — silently omitted on standalone/source-only instances, not zeroed                                                               |
| PostgreSQL entity doesn't appear, or app→PostgreSQL relationship doesn't resolve in Entity Explorer | `server.address`/`server.port` not present on the resource; the receiver alone doesn't emit these under the default (legacy) resource model                                               |

## Related documentation [#related]

[Instrumentation in self-hosted environments](https://docs.newrelic.com/docs/opentelemetry/database/postgresql/hosted)

Learn how to set up PostgreSQL monitoring in self-hosted environments with New Relic.

[Instrumentation in RDS environments](https://docs.newrelic.com/docs/opentelemetry/database/postgresql/rds)

Learn how to set up PostgreSQL monitoring in RDS environments with New Relic.

[Metrics reference](https://docs.newrelic.com/docs/opentelemetry/database/postgresql/metrics-reference)

Learn about the available metrics collected by the NRDOT Collector.
