Multi Instance PostgreSQL Problem

Problem/Question

I am trying to monitor 3 separate PostgreSQL instances with Netdata’s go.d.plugin on a Raspberry Pi 5.
Each instance has a separate job defined in /etc/netdata/go.d/postgres-*.conf with different name: and dsn: values.
However, when I open the Netdata UI, only a single exporter appears, and all metrics from 3 instances are merged into one screen.

Expected behavior:
Each job (dev, local, test) should appear as a separate PostgreSQL exporter with its own charts.


Relevant docs you followed/actions you took to solve the issue

  • I followed the official Netdata PostgreSQL integration guide[image]
  • Created 3 separate config files:
    • /etc/netdata/go.d/postgres-local.conf
    • /etc/netdata/go.d/postgres-dev.conf
    • /etc/netdata/go.d/postgres-test.conf
  • Each contains:

yaml

jobs:
  - name: dev
    enabled: true
    dsn: postgresql://netdata:PASSWORD@<host>:5432/postgres

(Each job uses different DSN and name)

  • Ensured ownership and permissions:

bash

chown netdata:netdata /etc/netdata/go.d/postgres-*.conf
chmod 644 /etc/netdata/go.d/postgres-*.conf
  • go.d.conf includes:

yaml

enabled: yes
default_run: yes
config_dirs:
  - /etc/netdata/go.d
  • modules.conf:

yaml

enabled: yes
postgres: yes
  • Confirmed config is being loaded with:

bash

sudo -u netdata /usr/libexec/netdata/plugins.d/go.d.plugin -d -m postgres

Only one job appears (either local or dev, not all 3).


Environment/Browser/Agent’s version etc

  • Device: Raspberry Pi 5
  • OS: Ubuntu 24.04
  • Netdata version: v2.3.2
  • Browser: Chrome 123+
  • Accessing directly via local Netdata Agent UI (not Cloud)

bash

netdata -v
netdata -W buildinfo

root@raspberrypi5:/etc/netdata/go.d# netdata -v
netdata -W buildinfo
netdata v2.3.2
time=2025-04-14T21:27:34.841+03:00 comm=netdata source=daemon level=notice errno="2, No such file or directory" tid=393194  msg="CONFIG: cannot load user config '/etc/netdata/stream.conf'. Will try stock config."
time=2025-04-14T21:27:34.841+03:00 comm=netdata source=daemon level=error errno="22, Invalid argument" tid=393194  msg="madvise(MADV_MERGEABLE) of size 16384, failed."
Packaging:
    Netdata Version ____________________________________________ : v2.3.2
    Installation Type __________________________________________ : binpkg-deb
    Package Architecture _______________________________________ : aarch64
    Package Distro _____________________________________________ : ubuntu 24.04
    Configure Options __________________________________________ : cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_C_STANDARD=11 -DCMAKE_CXX_STANDARD=14 -DBUILD_SHARED_LIBS= -DCMAKE_C_FLAGS=' -fexceptions -fexceptions -fno-omit-frame-pointer -funwind-tables -fasynchronous-unwind-tables' -DCMAKE_CXX_FLAGS='  -fexceptions -fexceptions -fno-omit-frame-pointer -funwind-tables -fasynchronous-unwind-tables' -DCMAKE_COMPILE_DEFINITIONS='_GNU_SOURCE' -DCMAKE_EXE_LINKER_FLAGS=' -fexceptions -fexceptions -rdynamic' -DCMAKE_SHARED_LINKER_FLAGS=''
Default Directories:
    User Configurations ________________________________________ : /etc/netdata
    Stock Configurations _______________________________________ : /usr/lib/netdata/conf.d
    Ephemeral Databases (metrics data, metadata) _______________ : /var/cache/netdata
    Permanent Databases ________________________________________ : /var/lib/netdata
    Plugins ____________________________________________________ : /usr/libexec/netdata/plugins.d
    Static Web Files ___________________________________________ : /usr/share/netdata/web
    Log Files __________________________________________________ : /var/log/netdata
    Lock Files _________________________________________________ : /var/lib/netdata/lock
    Home _______________________________________________________ : /var/lib/netdata
Operating System:
    Kernel _____________________________________________________ : Linux
    Kernel Version _____________________________________________ : 6.8.0-1020-raspi
    Operating System ___________________________________________ : Ubuntu
    Operating System ID ________________________________________ : ubuntu
    Operating System ID Like ___________________________________ : debian
    Operating System Version ___________________________________ : 24.04.2 LTS (Noble Numbat)
    Operating System Version ID ________________________________ : none
    Detection __________________________________________________ : /etc/os-release
Hardware:
    CPU Cores __________________________________________________ : 4
    CPU Frequency ______________________________________________ : 2400000000
    RAM Bytes __________________________________________________ : 8323276800
    Disk Capacity ______________________________________________ : 128177930240
    CPU Architecture ___________________________________________ : aarch64
    Virtualization Technology __________________________________ : none
    Virtualization Detection ___________________________________ : systemd-detect-virt
Container:
    Container __________________________________________________ : none
    Container Detection ________________________________________ : systemd-detect-virt
    Container Orchestrator _____________________________________ : none
    Container Operating System _________________________________ : none
    Container Operating System ID ______________________________ : none
    Container Operating System ID Like _________________________ : none
    Container Operating System Version _________________________ : none
    Container Operating System Version ID ______________________ : none
    Container Operating System Detection _______________________ : none
Features:
    Built For __________________________________________________ : Linux
    Netdata Cloud ______________________________________________ : YES
    Health (trigger alerts and send notifications) _____________ : YES
    Streaming (stream metrics to parent Netdata servers) _______ : YES
    Back-filling (of higher database tiers) ____________________ : YES
    Replication (fill the gaps of parent Netdata servers) ______ : YES
    Streaming and Replication Compression ______________________ : YES (zstd lz4 gzip)
    Contexts (index all active and archived metrics) ___________ : YES
    Tiering (multiple dbs with different metrics resolution) ___ : YES (5)
    Machine Learning ___________________________________________ : YES
    Memory Allocator ___________________________________________ : system
Database Engines:
    dbengine (compression) _____________________________________ : YES (zstd lz4)
    alloc ______________________________________________________ : YES
    ram ________________________________________________________ : YES
    none _______________________________________________________ : YES
Connectivity Capabilities:
    ACLK (Agent-Cloud Link: MQTT over WebSockets over TLS) _____ : YES
    static (Netdata internal web server) _______________________ : YES
    h2o (web server) ___________________________________________ : NO
    WebRTC (experimental) ______________________________________ : NO
    Native HTTPS (TLS Support) _________________________________ : YES
    TLS Host Verification ______________________________________ : YES
Libraries:
    LZ4 (extremely fast lossless compression algorithm) ________ : YES
    ZSTD (fast, lossless compression algorithm) ________________ : YES
    zlib (lossless data-compression library) ___________________ : YES
    Brotli (generic-purpose lossless compression algorithm) ____ : NO
    protobuf (platform-neutral data serialization protocol) ____ : YES (system)
    OpenSSL (cryptography) _____________________________________ : YES
    libdatachannel (stand-alone WebRTC data channels) __________ : NO
    JSON-C (lightweight JSON manipulation) _____________________ : YES
    libcap (Linux capabilities system operations) ______________ : NO
    libcrypto (cryptographic functions) ________________________ : YES
    libyaml (library for parsing and emitting YAML) ____________ : YES
    libmnl (library for working with netfilter) ________________ : YES
    stacktraces (library for getting stack traces) _____________ : libbacktrace (mmap, threads, data)
Plugins:
    apps (monitor processes) ___________________________________ : YES
    cgroups (monitor containers and VMs) _______________________ : YES
    cgroup-network (associate interfaces to CGROUPS) ___________ : YES
    proc (monitor Linux systems) _______________________________ : YES
    tc (monitor Linux network QoS) _____________________________ : YES
    diskspace (monitor Linux mount points) _____________________ : YES
    freebsd (monitor FreeBSD systems) __________________________ : NO
    macos (monitor MacOS systems) ______________________________ : NO
    windows (monitor Windows systems) __________________________ : NO
    statsd (collect custom application metrics) ________________ : YES
    timex (check system clock synchronization) _________________ : YES
    idlejitter (check system latency and jitter) _______________ : YES
    bash (support shell data collection jobs - charts.d) _______ : YES
    debugfs (kernel debugging metrics) _________________________ : YES
    cups (monitor printers and print jobs) _____________________ : YES
    ebpf (monitor system calls) ________________________________ : NO
    freeipmi (monitor enterprise server H/W) ___________________ : YES
    network-viewer (monitor TCP/UDP IPv4/6 sockets) ____________ : YES
    systemd-journal (monitor journal logs) _____________________ : YES
    windows-events (monitor Windows events) ____________________ : NO
    nfacct (gather netfilter accounting) _______________________ : YES
    perf (collect kernel performance events) ___________________ : YES
    slabinfo (monitor kernel object caching) ___________________ : YES
    Xen ________________________________________________________ : YES
    Xen VBD Error Tracking _____________________________________ : NO
Exporters:
    AWS Kinesis ________________________________________________ : NO
    GCP PubSub _________________________________________________ : NO
    MongoDB ____________________________________________________ : YES
    Prometheus (OpenMetrics) Exporter __________________________ : YES
    Prometheus Remote Write ____________________________________ : YES
    Graphite ___________________________________________________ : YES
    Graphite HTTP / HTTPS ______________________________________ : YES
    JSON _______________________________________________________ : YES
    JSON HTTP / HTTPS __________________________________________ : YES
    OpenTSDB ___________________________________________________ : YES
    OpenTSDB HTTP / HTTPS ______________________________________ : YES
    All Metrics API ____________________________________________ : YES
    Shell (use metrics in shell scripts) _______________________ : YES
Debug/Developer Features:
    Trace All Netdata Allocations (with charts) ________________ : NO
    Developer Mode (more runtime checks, slower) _______________ : NO
Runtime Information:
    Profile ____________________________________________________ : standalone
    Stream Parent (accept data from Children) __________________ : NO
    Stream Child (send data to a Parent) _______________________ : NO
    Total System Memory ________________________________________ : 8323276800
    Available System Memory ____________________________________ : 7033450496


What I expected to happen

I expected each PostgreSQL job defined with a unique name to appear as a separate exporter, or at least have a clean separation of charts in the UI.

Instead, all 3 instances appear to be merged into a single PostgreSQL section, making it impossible to monitor them independently.

Please confirm whether:

  • This is expected behavior?
  • There is any config to force each job to be separated visually?
  • Or a known limitation of the current go.d.postgres collector?

Hi, @oguzhansrky.

Created 3 separate config files

This is not supported.


You need to use one configuration file, this file can have several data collection jobs (as stated in the documentation).

That is how UI works.

Hi @ilyam8,

netdata@raspberrypi5:/usr/libexec/netdata/plugins.d$ cat /etc/netdata/go.d/postgres.conf

All available configuration options, their descriptions and default values:

https://github.com/netdata/netdata/tree/master/src/go/collectors/go.d.plugin/modules/postgres#readme

jobs:

  • name: local
    dsn: ‘postgresql://postgres:password@127.0.0.1:5432/postgres’
  • name: dev
    dsn: ‘postgresql://postgres:password@127.0.0.1:5433/postgres’
  • name: test
    dsn: ‘postgresql://postgres:password@127.0.0.1:5434/postgres’

Actually, this is the configuration I put it to try it. If you look at the screenshot, it puts all the databases in one place.

There are 2 databases in 3 nodes, but it shows them all in one place and since there is a postgres db for each node I added, it shows the sum of 3 of them. As you can see on the right side there is no separation

In your second message, you mentioned that the UI works this way by design. However, I’ve been using Netdata for a long time, and in earlier versions, this wasn’t the case.

When I added multiple PostgreSQL jobs before, the UI would show each job separately, using the name I defined in the config, and display their metrics individually.

Now, all instances are grouped under a single section, which is not healthy or useful at all for monitoring multiple databases.

Any reply or update @ilyam8 ??