The only agent that thinks for itself

Autonomous Monitoring with self-learning AI built-in, operating independently across your entire stack.

Unlimited Metrics & Logs
Machine learning & MCP
5% CPU, 150MB RAM
3GB disk, >1 year retention
800+ integrations, zero config
Dashboards, alerts out of the box
> Discover Netdata Agents

Centralized metrics streaming and storage

Aggregate metrics from multiple agents into centralized Parent nodes for unified monitoring across your infrastructure.

Stream from unlimited agents
Long-term data retention
High availability clustering
Data replication & backup
Scalable architecture
Enterprise-grade security
> Learn about Parents

Fully managed cloud platform

Access your monitoring data from anywhere with our SaaS platform. No infrastructure to manage, automatic updates, and global availability.

Zero infrastructure management
99.9% uptime SLA
Global data centers
Automatic updates & patches
Enterprise SSO & RBAC
SOC2 & ISO certified
> Explore Netdata Cloud

Deploy Netdata Cloud in your infrastructure

Run the full Netdata Cloud platform on-premises for complete data sovereignty and compliance with your security policies.

Complete data sovereignty
Air-gapped deployment
Custom compliance controls
Private network integration
Dedicated support team
Kubernetes & Docker support
> Learn about Cloud On-Premises

Powerful, intuitive monitoring interface

Modern, responsive UI built for real-time troubleshooting with customizable dashboards and advanced visualization capabilities.

Real-time chart updates
Customizable dashboards
Dark & light themes
Advanced filtering & search
Responsive on all devices
Collaboration features
> Explore Netdata UI

Monitor on the go

Native iOS and Android apps bring full monitoring capabilities to your mobile device with real-time alerts and notifications.

iOS & Android apps
Push notifications
Touch-optimized interface
Offline data access
Biometric authentication
Widget support
> Download apps

The future of infrastructure observability

See our strategic direction across AI-native observability, full-stack signals, operational intelligence, and enterprise platform maturity.

AI-native observability
Full-stack signal coverage
Operational intelligence
Enterprise platform maturity
Agent releases every 6 weeks
Cloud continuous delivery
> Explore Product Roadmap

Best energy efficiency

True real-time per-second

100% automated zero config

Centralized observability

Multi-year retention

High availability built-in

Zero maintenance

Always up-to-date

Enterprise security

Complete data control

Air-gap ready

Compliance certified

Millisecond responsiveness

Infinite zoom & pan

Works on any device

Native performance

Instant alerts

Monitor anywhere

AI-native observability

Continuous delivery

Open source foundation

80% Faster Incident Resolution

AI-powered troubleshooting from detection, to root cause and blast radius identification, to reporting.

True Real-Time and Simple, even at Scale

Linearly and infinitely scalable full-stack observability, that can be deployed even mid-crisis.

90% Cost Reduction, Full Fidelity

Instead of centralizing the data, Netdata distributes the code, eliminating pipelines and complexity.

See and Map Your Entire Network

Live topology, flow analytics, and SNMP device and trap monitoring — unified with your full-stack observability.

Control Without Surrender

SOC 2 Type 2 certified with every metric kept on your infrastructure.

Integrations

800+ collectors and notification channels, auto-discovered and ready out of the box.

800+ data collectors
Auto-discovery & zero config
Cloud, infra, app protocols
Notifications out of the box
> Explore integrations
Real Results
46% Cost Reduction

Reduced monitoring costs by 46% while cutting staff overhead by 67%.

— Leonardo Antunez, Codyas

Zero Pipeline

No data shipping. No central storage costs. Query at the edge.

From Our Users
"Out-of-the-Box"

So many out-of-the-box features! I mostly don't have to develop anything.

— Simon Beginn, LANCOM Systems

No Query Language

Point-and-click troubleshooting. No PromQL, no LogQL, no learning curve.

Enterprise Ready
67% Less Staff, 46% Cost Cut

Enterprise efficiency without enterprise complexity—real ROI from day one.

— Leonardo Antunez, Codyas

SOC 2 Type 2 Certified

Zero data egress. Only metadata reaches the cloud. Your metrics stay on your infrastructure.

Full Coverage
800+ Collectors

Auto-discovered and configured. No manual setup required.

Any Notification Channel

Slack, PagerDuty, Teams, email, webhooks—all built-in.

Built for the People Who Get Paged

Because 3am alerts deserve instant answers, not hour-long hunts.

Every Industry Has Rules. We Master Them.

See how healthcare, finance, and government teams cut monitoring costs 90% while staying audit-ready.

Monitor Any Technology. Configure Nothing.

Install the agent. It already knows your stack.
From Our Users
"A Rare Unicorn"

Netdata gives more than you invest in it. A rare unicorn that obeys the Pareto rule.

— Eduard Porquet Mateu, TMB Barcelona

99% Downtime Reduction

Reduced website downtime by 99% and cloud bill by 30% using Netdata alerts.

— Falkland Islands Government

Real Savings
30% Cloud Cost Reduction

Optimized resource allocation based on Netdata alerts cut cloud spending by 30%.

— Falkland Islands Government

46% Cost Cut

Reduced monitoring staff by 67% while cutting operational costs by 46%.

— Codyas

Real Coverage
"Plugin for Everything"

Netdata has agent capacity or a plugin for everything, including Windows and Kubernetes.

— Eduard Porquet Mateu, TMB Barcelona

"Out-of-the-Box"

So many out-of-the-box features! I mostly don't have to develop anything.

— Simon Beginn, LANCOM Systems

Real Speed
Troubleshooting in 30 Seconds

From 2-3 minutes to 30 seconds—instant visibility into any node issue.

— Matthew Artist, Nodecraft

20% Downtime Reduction

20% less downtime and 40% budget optimization from out-of-the-box monitoring.

— Simon Beginn, LANCOM Systems

Pay per Node. Unlimited Everything Else.

One price per node. Unlimited metrics, logs, users, and retention. No per-GB surprises.

Free tier—forever
No metric limits or caps
Retention you control
Cancel anytime
> See pricing plans

What's Your Monitoring Really Costing You?

Most teams overpay by 40-60%. Let's find out why.

Expose hidden metric charges
Calculate tool consolidation
Customers report 30-67% savings
Results in under 60 seconds
> See what you're really paying

Your Infrastructure Is Unique. Let's Talk.

Because monitoring 10 nodes is different from monitoring 10,000.

On-prem & air-gapped deployment
Volume pricing & agreements
Architecture review for your scale
Compliance & security support
> Start a conversation

Monitoring That Sells Itself

Deploy in minutes. Impress clients in hours. Earn recurring revenue for years.

30-second live demos close deals
Zero config = zero support burden
Competitive margins & deal protection
Response in 48 hours
> Apply to partner

Per-Second Metrics at Homelab Prices

Same engine, same dashboards, same ML. Just priced for tinkerers.

Community: Free forever · 5 nodes · non-commercial
Homelab: $90/yr · unlimited nodes · fair usage
> Get the Homelab Plan

$1,000 Per Referral. Unlimited Referrals.

Your colleagues get 10% off. You get 10% commission. Everyone wins.

10% of subscriptions, up to $1,000 each
Track earnings inside Netdata Cloud
PayPal/Venmo payouts in 3-4 weeks
No caps, no complexity
> Get your referral link
Cost Proof
40% Budget Optimization

"Netdata's significant positive impact" — LANCOM Systems

Calculate Your Savings

Compare vs Datadog, Grafana, Dynatrace

Savings Proof
46% Cost Reduction

"Cut costs by 46%, staff by 67%" — Codyas

30% Cloud Bill Savings

"Reduced cloud bill by 30%" — Falkland Islands Gov

Enterprise Proof
"Better Than Combined Alternatives"

"Better observability with Netdata than combining other tools." — TMB Barcelona

Real Engineers, <24h Response

DPA, SLAs, on-prem, volume pricing

Why Partners Win
Demo Live Infrastructure

One command, 30 seconds, real data—no sandbox needed

Zero Tickets, High Margins

Auto-config + per-node pricing = predictable profit

Homelab Ready
Free Video Course

8-episode Netdata tutorial by LearnLinux.tv

76k+ GitHub Stars

3rd most starred monitoring project

Worth Recommending
Product That Delivers

Customers report 40-67% cost cuts, 99% downtime reduction

Zero Risk to Your Rep

Free tier lets them try before they buy

AI Support Assistant, Available 24/7

Nedi has access to all official documentation, source code, and resources. Ask any question about Netdata—responds in your language.

Deployment & configuration
Troubleshooting & sizing
Alerts & notifications
Evidence-based answers
> Ask Nedi now

Never Fight Fires Alone

Docs, community, and expert help—pick your path to resolution.

Learn.netdata.cloud docs
Discord, Forums, GitHub
Premium support available
> Get answers now

60 Seconds to First Dashboard

One command to install. Zero config. 850+ integrations documented.

Linux, Windows, K8s, Docker
Auto-discovers your stack
> Read our documentation

76,000+ Engineers Strong

615+ contributors. 1.5M daily downloads. One mission: simplify observability.

Per-Second. 90% Cheaper. Data Stays Home.

Side-by-side comparisons: costs, real-time granularity, and data sovereignty for every major tool.

See why teams switch from Datadog, Prometheus, Grafana, and more.

> Browse all comparisons
Edge-Native Observability, Born Open Source
Per-second visibility, ML on every metric, and data that never leaves your infrastructure.
Founded in 2016
615+ contributors worldwide
Remote-first, engineering-driven
Open source first
> Read our story
Promises We Publish—and Prove
12 principles backed by open code, independent validation, and measurable outcomes.
Open source, peer-reviewed
Zero config, instant value
Data sovereignty by design
Aligned pricing, no surprises
> See all 12 principles
Edge-Native, AI-Ready, 100% Open
76k+ stars. Full ML, AI, and automation—GPLv3+, not premium add-ons.
76,000+ GitHub stars
GPLv3+ licensed forever
ML on every metric, included
Zero vendor lock-in
> Explore our open source
Build Real-Time Observability for the World
Remote-first team shipping per-second monitoring with ML on every metric.
Remote-first, fully distributed
Open source (76k+ stars)
Challenging technical problems
Your code on millions of systems
> See open roles
Meet the Team Behind Netdata
Conferences, meetups, and tradeshows where you can see Netdata in action and talk to the engineers who build it.
Live demos and deep dives
Book 1-on-1 meetings
Talks and panel sessions
Event recaps and photos
> See all events
Talk to a Netdata Human in <24 Hours
Sales, partnerships, press, or professional services—real engineers, fast answers.
Discuss your observability needs
Pricing and volume discounts
Partnership opportunities
Media and press inquiries
> Book a conversation
Your Data. Your Rules.
On-prem data, cloud control plane, transparent terms.
Trust & Scale
76,000+ GitHub Stars

One of the most popular open-source monitoring projects

SOC 2 Type 2 Certified

Enterprise-grade security and compliance

Data Sovereignty

Your metrics stay on your infrastructure

Validated
University of Amsterdam

"Most energy-efficient monitoring solution" — ICSOC 2023, peer-reviewed

ADASTEC (Autonomous Driving)

"Doesn't miss alerts—mission-critical trust for safety software"

Community Stats
615+ Contributors

Global community improving monitoring for everyone

1.5M+ Downloads/Day

Trusted by teams worldwide

GPLv3+ Licensed

Free forever, fully open source agent

Why Join?
Remote-First

Work from anywhere, async-friendly culture

Impact at Scale

Your work helps millions of systems

$ guides / pgbouncer / pgbouncer-auth-failed ▌

Operations Guides

PgBouncer auth failed / password authentication failed: client login rejected

PgBouncer logs authentication failures in its log file with closing because: <reason> (age=<N>s) — the reason is password authentication failed, SASL authentication failed, no such user, or a similar string depending on what failed. This is client-side authentication: the connection between your application and PgBouncer, not between PgBouncer and PostgreSQL. The connection is rejected before it enters any pool.

These events are log-only. PgBouncer exposes no SHOW command counter for authentication failures. There is no auth_failed_count in SHOW STATS, no per-user rejection tally, no rate metric. If you are not parsing the log, you are blind to auth failures.

The diagnostic fork is immediate. Occasional failures from known application IPs after a deploy almost always mean credential rotation that was not applied to userlist.txt and then not followed by a RELOAD. A sustained flood from unknown source IPs suggests brute-force probing. The first signal that tells you which one you are dealing with is source IP distribution in the log entries.

PgBouncer does not rate-limit auth failure logging. A brute-force attack can generate thousands of log lines per second and fill the disk if log rotation or external rate-limiting is not in place.

What this means

PgBouncer authenticates clients against its own auth_file (typically userlist.txt) or via auth_query, a SQL query run against the PostgreSQL backend. When authentication fails, PgBouncer rejects the connection and logs a message. The exact string depends on the authentication mechanism:

  • password authentication failed - password-based auth (md5 or plain) where the password did not match
  • SASL authentication failed - SCRAM-SHA-256 auth where the client proof was invalid
  • certificate authentication failed - TLS certificate auth failure
  • no such user / no such database - login rejected because the database or user is not configured in PgBouncer

The exact log strings are no such user and no such database: <name> (with the database name interpolated), both wrapped in the closing because: <reason> format. In the source these appear at client.c:804 (disconnect_client(client, true, "no such user")) and objects.c:2042 (disconnect_client(client, true, "no such database: %s", ...)).

The log_disconnections setting (default: 1) controls whether the closing because: <reason> disconnect message is logged; if set to 0, the disconnect line is suppressed. The underlying slog_error calls for authentication failures are always emitted regardless. The log_pooler_errors setting (default: 1) logs errors PgBouncer sends to clients as SQL-level error responses, which is a separate stream. The log_connections setting (default: 1) logs successful logins, not failures. No setting exposes failure counts as a metric.

Server-side auth failures (PgBouncer failing to authenticate to PostgreSQL) produce different log strings and are a separate problem from the client-side failures covered here.

flowchart TD
    A["Client connects to PgBouncer"] --> B{"auth_type = trust?"}
    B -- yes --> C["Auth bypassed: connection accepted"]
    B -- no --> D{"User in auth_file?"}
    D -- no --> E{"auth_user + auth_query set?"}
    E -- no --> F["login failed: user not found"]
    E -- yes --> G["Run auth_query on backend"]
    G --> H{"Query returns credentials?"}
    H -- no --> F
    H -- yes --> I{"Password hash matches?"}
    D -- yes --> I
    I -- no --> J["password/SASL auth failed"]
    I -- yes --> K["Client enters pool"]
    F --> L["Logged: closing because: auth failed"]
    J --> L

Common causes

CauseWhat it looks likeFirst thing to check
Stale auth_file after credential rotationOccasional failures from known app IPs, starts after a deploy or password changeCompare modification time of userlist.txt against deploy time
Brute-force attackSustained flood from unknown IPs, many different usernamesExtract source IPs from log and compare against known application subnets
auth_type mismatch (SCRAM vs MD5)All connections for affected users fail consistently, not intermittentCheck auth_type in config and password format in auth_file
auth_file format errorcannot do SCRAM authentication: wrong password type in logInspect auth_file entries: SCRAM secrets vs MD5 hashes
auth_query misconfigurationFailures only for users not in auth_file (auth_user path)Check auth_user permissions and auth_query SQL on PostgreSQL
auth_type = trust in productionNo auth failures logged at all, but unknown clients connectingCheck SHOW CONFIG for auth_type value immediately
SCRAM caching bug (1.25.0)Failures start after server_lifetime expiry, password authentication failed after reconnectCheck PgBouncer version with SHOW VERSION

Quick checks

# Check current auth_type
psql -h 127.0.0.1 -p 6432 -U pgbouncer pgbouncer -c "SHOW CONFIG;" | grep auth_type

# Check auth_file path
psql -h 127.0.0.1 -p 6432 -U pgbouncer pgbouncer -c "SHOW CONFIG;" | grep auth_file

# Count recent auth failures in the log
grep -c "auth failed\|password authentication failed\|SASL authentication failed" /var/log/pgbouncer/pgbouncer.log

# Recent failures with timestamps (last 50)
grep "auth failed\|password authentication failed\|SASL authentication failed" /var/log/pgbouncer/pgbouncer.log | tail -50

# Extract source IPs from failure entries to identify brute force (IPv4 only)
grep "auth failed\|login failed" /var/log/pgbouncer/pgbouncer.log | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort | uniq -c | sort -rn | head -20

# Check PgBouncer version
psql -h 127.0.0.1 -p 6432 -U pgbouncer pgbouncer -c "SHOW VERSION;"

# Check if auth_query is configured
psql -h 127.0.0.1 -p 6432 -U pgbouncer pgbouncer -c "SHOW CONFIG;" | grep auth_query

# Check if auth_user is configured (enables auth_query lookup path)
psql -h 127.0.0.1 -p 6432 -U pgbouncer pgbouncer -c "SHOW CONFIG;" | grep auth_user

# Verify userlist.txt modification time vs last deploy
stat /etc/pgbouncer/userlist.txt

# Check disk space on log volume (brute force can fill it)
df -h /var/log/pgbouncer/

Paths shown (/var/log/pgbouncer/, /etc/pgbouncer/userlist.txt) are common defaults. Adjust for your installation.

How to diagnose it

Step 1: Determine the failure pattern. Extract source IPs, usernames, and timestamps from the log. The pattern tells you the category:

  • Few IPs, known application hosts, started after a deploy: credential rotation issue.
  • Many IPs or unknown IPs, diverse usernames, high rate: brute force or scanning.
  • All connections for a specific user fail consistently: password format mismatch or wrong password.
  • Failures correlated with server_lifetime recycling on version 1.25.0: SCRAM caching bug.

Step 2: Verify the auth_file is current. If credential rotation is the suspect, compare the password hash in userlist.txt against what PostgreSQL has stored:

-- On PostgreSQL, check the stored password format for the affected user
SELECT rolname, substr(rolpassword, 1, 20) AS password_prefix
FROM pg_authid WHERE rolname = 'affected_user';

If PostgreSQL stores a SCRAM secret (SCRAM-SHA-256$...) but userlist.txt has an MD5 hash (md5...), or vice versa, PgBouncer will error with cannot do SCRAM authentication: wrong password type. Both sides must use the same format, or the auth_file must contain plain-text passwords (which work with any password-based auth type).

Step 3: Check auth_type compatibility. The auth_type setting determines what PgBouncer expects from the client and what it looks for in auth_file:

  • scram-sha-256: expects SCRAM secrets in auth_file. Clients must support SCRAM.
  • md5: if auth_file contains a SCRAM secret for a user, SCRAM authentication is used automatically. MD5 hashes and plain-text passwords also work.
  • trust: no authentication. Any client can connect with any password, including none. Never use in production.
  • hba: uses an HBA file similar to PostgreSQL’s pg_hba.conf.

A mismatch between auth_type and the password format stored in auth_file causes consistent failures for all affected users, not intermittent ones.

Step 4: If using auth_query, verify the query and auth_user. When auth_user is set, PgBouncer looks up users not present in auth_file by running auth_query against the PostgreSQL backend. A failure here means the query returned no row for that user, or the password hash did not match.

Check that the auth_user has permission to read pg_authid and that the auth_query SQL is valid. The default auth_query (since PgBouncer 1.24.1) includes a VALID UNTIL check so expired passwords are rejected. On versions before 1.24.1, the default auth_query does not consider password expiration, and expired credentials may still authenticate.

Step 5: Check for version-specific bugs. If you are running PgBouncer 1.25.0, a known bug in ad-hoc SCRAM authentication caching causes password authentication failed errors after server connections are recycled via server_lifetime. The symptom is that failures begin after the first server_lifetime expiry and affect subsequent connections. Upgrading to 1.25.1 or later resolves this.

Step 6: Check for disk-full risk. If the failure rate is high (brute-force scenario), verify the log volume has not filled and PgBouncer can still write:

df -h /var/log/pgbouncer/
tail -1 /var/log/pgbouncer/pgbouncer.log

Metrics and signals to monitor

SignalWhy it mattersWarning sign
Auth failure log rate (derived)No SHOW counter exists. You must parse the log to detect failures.Sustained non-zero rate from any source
Source IP of failuresDistinguishes credential misconfiguration (known IPs) from brute force (unknown IPs)New or unexpected IPs in failure entries
Disk usage on log volumePgBouncer does not rate-limit auth failure logging. Brute force can fill the disk.Log partition approaching 100%
SHOW CLIENTS addr columnActive client source IPs for correlation with failure patternsConnections from subnets not associated with known applications
SHOW CONFIG auth_typeVerifies the authentication method in effectauth_type = trust (no auth at all)
SHOW CONFIG auth_filePath to the credential filePath pointing to unexpected location after config management run
SHOW VERSIONIdentifies whether known version-specific auth bugs apply1.25.0 (SCRAM caching bug)

Fixes

Credential rotation not applied to auth_file

If passwords changed on PostgreSQL but userlist.txt was not updated:

  1. Export current password hashes from PostgreSQL:
    SELECT rolname, rolpassword FROM pg_authid WHERE rolcanlogin;
    
  2. Rebuild userlist.txt in the correct format: "username" "password_or_hash"
  3. Apply the update: psql -h 127.0.0.1 -p 6432 -U pgbouncer pgbouncer -c "RELOAD;"

The RELOAD is required. Since PgBouncer 1.17.0, automatic auth_file reloading on file modification was removed. The file is only re-read on explicit RELOAD or process restart.

RELOAD applies the new auth_file immediately. Existing authenticated clients are unaffected. New connections with updated credentials succeed on the next attempt.

Brute-force attack

PgBouncer has no built-in rate-limiting for authentication failures. External controls are required:

  • fail2ban or equivalent: Parse the PgBouncer log for auth failure patterns and ban source IPs after a threshold. A regex matching closing because: auth failed or password authentication failed with the client IP is sufficient.
  • iptables or nftables rate limiting: Limit new connection attempts per source IP at the network layer.
  • Network ACLs: If PgBouncer should only accept connections from known application subnets, enforce this at the firewall level. PgBouncer itself does not restrict source IPs unless auth_hba_file is configured.

If the log volume itself is the problem, configure external log rotation with size-based triggers, not just time-based rotation.

auth_type or password format mismatch

If the error is cannot do SCRAM authentication: wrong password type:

  1. Determine what format PostgreSQL stores: SELECT rolname, substr(rolpassword, 1, 20) FROM pg_authid WHERE rolname = 'X';
  2. Ensure auth_file uses the same format:
    • Copy the SCRAM secret from PostgreSQL directly into auth_file.
    • Use plain-text passwords in auth_file (works with any password-based auth_type).
    • Set auth_type = md5 and include SCRAM secrets in auth_file (SCRAM is used automatically).
  3. RELOAD after changes.

auth_query failures

If users not in auth_file fail authentication:

  1. Verify auth_user exists in auth_file with valid credentials.
  2. Verify auth_user can execute the auth_query on PostgreSQL:
    -- Test the auth_query path as auth_user
    SET ROLE auth_user;
    SELECT rolname, rolpassword FROM pg_authid WHERE rolname = 'test_user' AND rolcanlogin;
    RESET ROLE;
    
  3. If the default auth_query was customized, verify the SQL is valid and returns the expected columns.

The auth_query must return exactly two columns in order: username first, password second. PgBouncer rejects any other column count with expected 2 columns from auth_query. Custom auth_query functions cannot add columns or reorder them.

SCRAM caching bug on PgBouncer 1.25.0

If running PgBouncer 1.25.0 and failures correlate with server_lifetime expiry:

  • Upgrade to 1.25.1 or later.
  • Temporary workaround: increase server_lifetime well beyond the recycling interval and schedule PgBouncer restarts during low-traffic windows. This reduces how often the bug triggers but does not eliminate it.

Prevention

  • Credential rotation runbook: Every password change on PostgreSQL must include updating userlist.txt and issuing a RELOAD. Automate this step. The most common auth failure incident is a deploy that rotates database passwords but forgets the pooler.
  • External rate-limiting: Deploy fail2ban or network-layer rate limiting before you need it. Without it, a brute-force attack fills the log disk before anyone notices.
  • Log monitoring with alerting: Since no SHOW counter exists, implement log parsing that counts auth failures per time window and alerts on sustained rates. Alert differently for known-IP failures (likely credential issue) versus unknown-IP floods (likely attack).
  • Never use auth_type = trust in production. It disables all authentication.
  • Track PgBouncer version against known auth bugs. The 1.25.0 SCRAM caching bug and the pre-1.24.1 auth_query VALID UNTIL bypass are examples where version determines vulnerability.
  • Validate auth_file format after generation. If auth_file is generated by a script, validate that the output format matches what auth_type expects before deploying.

How Netdata helps

  • Log-based auth failure detection: PgBouncer exposes no SHOW counter for auth failures. Netdata’s log parser can extract and count auth failed and password authentication failed entries, providing a time-series signal where none exists natively.
  • Source IP correlation: Correlating auth failure log patterns with SHOW CLIENTS connection data distinguishes credential misconfiguration (failures from known application IPs) from brute-force attacks (failures from unknown IPs) without manual log grepping.
  • Disk usage monitoring on the log volume: Netdata tracks disk space per mount point with per-second resolution. Disk usage alerts fire before PgBouncer loses the ability to write.
  • PgBouncer connection state context: Per-second collection of cl_waiting, client connection counts, and pool state shows whether auth failures are progressing to pool starvation or are contained at the authentication layer.
  • Config change correlation: Netdata can surface when PgBouncer was restarted or reloaded, helping correlate the onset of auth failures with deployment or configuration events.