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 / apache-httpd / apache-httpd-server-status-exposed ▌

Operations Guides

Apache /server-status exposed: the reconnaissance leak hiding in mod_status

A scanner, pentest, or audit just flagged your Apache server: /server-status is reachable from the internet. mod_status renders a live view of your server’s internals, and anyone who can load it can watch your traffic in near real time.

The operational problem is that mod_status is also the best monitoring source Apache has. BusyWorkers, the scoreboard, requests per second: all of it comes from /server-status?auto. So the fix is not “disable mod_status.” The fix is to restrict who can reach it, verify the restriction holds on every vhost, and keep scraping it locally.

What this means

With ExtendedStatus on (the default since Apache 2.3.6 whenever mod_status is loaded), the status page shows every active worker slot: client IP, vhost, and the full request URI including the query string. It also shows server version and build, uptime, MPM, and CPU load. /server-info, if enabled, goes further and dumps the effective configuration: loaded modules, directives, document roots, file paths.

What an outsider gets for free:

  • Request URIs with query strings. Session tokens, password-reset links, API keys in URLs, internal endpoint names. Anyone watching the page sees your users’ requests as they happen.
  • Client IPs of your real users, plus which URLs they visit.
  • Internal hostnames and IPs, including backend addresses when Apache proxies.
  • URL patterns and vhost inventory, including internal or staging vhosts sharing the server.

It is attack surface, not just disclosure. CVE-2014-0226 was a heap buffer overflow in mod_status on threaded MPMs (worker, event), reachable only when the status page was publicly accessible, fixed in 2.4.10. CVE-2012-3499 was an XSS in the status page output, fixed in 2.4.4. Old, but a public status page on an unpatched server is exactly what these needed.

One more wrinkle: SetHandler server-status is valid in directory and .htaccess context. Once mod_status is loaded, anyone who can write an .htaccess file can map a status handler, so a developer’s debug change can re-expose it without touching the main config. See the mod_status documentation.

Exposure usually survives the first fix attempt because of where the <Location> block lives relative to vhosts and proxies:

flowchart TD
  A[Request for /server-status arrives] --> B{Which vhost matches?}
  B --> C[Default or wildcard vhost]
  B --> D[Named vhost]
  C --> E{Global status.conf restriction}
  D --> F{Vhost-level Location block?}
  F -->|yes, e.g. Require all granted| G[200: status page served to anyone]
  F -->|no| E
  E -->|Require local / Require ip only| H[403 for outsiders]
  E -->|missing or stale 2.2 syntax| G

Common causes

CauseWhat it looks likeFirst thing to check
Enabled for debugging, never tightened<Location "/server-status"> with Require all granted or no authz at allgrep -rn "server-status" /etc/apache2/ /etc/httpd/
Vhost precedence overrideGlobal status.conf is restricted, but a vhost has its own <Location> (for example <Location /> Require all granted) that winsCheck every enabled vhost for Location blocks
Reverse proxy masks the restrictionRequire ip matches the proxy or LB address, not the real client, so the operator opened it up “to make it work”Is mod_remoteip configured with a trusted proxy list?
Stale Apache 2.2 syntaxOrder/Allow/Deny directives in a 2.4 config; they only work via the deprecated mod_access_compat, and mixing them with Require is discouragedLook for Order, Allow from, Deny from in status config
Only the HTML page was considered/server-status blocked, but /server-status?auto or /server-info still answersCurl both endpoints plus /server-info from outside
balancer-manager left open with it/balancer-manager reachable, exposing backend members and allowing state changesCurl /balancer-manager from outside

Quick checks

Run the external checks from a host outside your network. Checking from the server itself proves nothing, because localhost is usually the one address that is supposed to work.

# Is it reachable from the internet? Test every form of the endpoint.
curl -s -o /dev/null -w "%{http_code}\n" http://<public-ip>/server-status
curl -s -o /dev/null -w "%{http_code}\n" "http://<public-ip>/server-status?auto"
curl -s -o /dev/null -w "%{http_code}\n" http://<public-ip>/server-info
curl -s -o /dev/null -w "%{http_code}\n" http://<public-ip>/balancer-manager

# Repeat with a Host header for each public vhost name. Exposure can differ per vhost.
curl -s -o /dev/null -w "%{http_code}\n" -H "Host: www.example.com" http://<public-ip>/server-status
# Find where the handler is configured (Debian/Ubuntu paths, then RHEL paths)
grep -rn "server-status\|server-info\|balancer-manager" /etc/apache2/ 2>/dev/null
grep -rn "server-status\|server-info\|balancer-manager" /etc/httpd/ 2>/dev/null

# Confirm the module is actually loaded
apachectl -M 2>/dev/null | grep -i status
# Who has been requesting it, and what status did they get back?
grep -E '"(GET|HEAD) /server-status' /var/log/apache2/access.log | \
  awk '{print $1, $9}' | sort | uniq -c | sort -rn | head -20

# Include rotated logs for history
zgrep -h -E '"(GET|HEAD) /server-status' /var/log/apache2/access.log*.gz 2>/dev/null | \
  awk '{print $1, $9}' | sort | uniq -c | sort -rn | head -20

Any 200 in that output from a non-local, non-monitoring IP means the data was served to that address. That is your leak window.

How to diagnose it

  1. Confirm exposure externally. A 200 on any of the four curls above, from an outside host, confirms it. A 403 means an authz rule is doing its job. A 404 means the handler is not mapped for that vhost, which is also fine.
  2. Locate every place the handler is enabled. The grep above finds SetHandler server-status and friends. Note which file each match lives in: a global mods-enabled/status.conf, or inside a specific vhost file.
  3. Resolve the vhost question. If the global config looks correctly restricted but the page is still public, a vhost-level <Location> block is overriding it. The vhost that matches the request wins, and its Location context takes precedence over the global one. Test each public hostname with the Host header curl to find which vhost is leaking.
  4. Check the proxy path. If Apache sits behind a reverse proxy or load balancer, Require ip sees the proxy’s address. Without mod_remoteip and a trusted proxy list, IP-based rules are meaningless, and operators often “fix” the resulting breakage by granting access too broadly.
  5. Establish the leak window. Use the access log analysis above to find the earliest 200 response to /server-status from an external IP. Everything served between then and now was readable: request URIs, client IPs, hostnames. Feed that into your incident assessment, especially if query strings carry tokens on this site.
  6. Look for active reconnaissance. Scanner hits on /server-status rarely come alone:
# Broader scanner fingerprint around the same timeframe
grep -iE '/(\.env|\.git|wp-admin|wp-login|phpmyadmin|actuator|server-status|server-info)' \
  /var/log/apache2/access.log | tail -20

Hits on .env, .git, and server-status from the same source IP is a scanner doing inventory, and it means the exposure was found by exactly the tooling you worried about.

Metrics and signals to monitor

SignalWhy it mattersWarning sign
200 responses to /server-status from external IPsProof the leak is active or has returnedAny occurrence from an IP outside your allowlist
401/403 rate on /server-status per source IPReconnaissance cadence; the playbook flags >50 401s/minute from one IP as brute-force-classRepeated denied hits from one IP, especially with non-browser User-Agents
Scanner URI pattern hits/server-status probes alongside .env/.git/phpmyadmin indicate inventory scanningAny hit on a path that actually exists and responds
Request rate per source IPSeparates background internet noise from targeted probing>100x the average per-IP rate (unless a known LB/CDN)
Config reload eventsA failed graceful reload silently keeps stale config running; a reload can also re-introduce a bad status.confReloads without a corresponding change, or failed configtest after reload

Fixes

All of these are config changes. Validate with apachectl configtest and apply with apachectl graceful (SIGUSR1), not a hard restart, so you do not drop connections.

Restrict to localhost and the monitoring subnet

This is the standard fix. The status page stays available to local scrapers and your monitoring network, and nobody else.

# Apache 2.4 syntax
<Location "/server-status">
    SetHandler server-status
    Require local
    Require ip 203.0.113.0/24   # your monitoring subnet
</Location>

Require local covers connections originating on the machine itself, which is what local collectors use. The Require ip line opens it to the network your monitoring stack scrapes from. Both /server-status and /server-status?auto are covered because the restriction is on the path, not the query string.

Add authentication when IP allowlisting is not enough

If the page must be reachable from networks you do not control addressing for (a jump host with dynamic egress, an on-call laptop), layer Basic auth on top:

<Location "/server-status">
    SetHandler server-status
    AuthType Basic
    AuthName "server-status"
    AuthUserFile /etc/apache2/.htpasswd-status
    Require valid-user
</Location>

Tradeoff: you now have a credential to rotate, and Basic auth must only ever ride over TLS.

Put the restriction inside the vhost

If your testing showed a vhost-level Location block overriding the global config, move the restriction into that vhost’s own configuration. A global status.conf does not protect a vhost that brings its own Location context. After the change, re-run the per-vhost Host header curls to prove every vhost now denies outsiders.

Behind a reverse proxy: fix mod_remoteip first

If Apache sits behind a proxy or LB, configure mod_remoteip with your trusted proxy list so Apache sees real client addresses. Only then does Require ip mean what you think it means. Be aware that Require local matches any connection originating on the same host, so a co-located proxy can make “local” much broader than intended. Test from outside again afterward.

Do not forget the adjacent endpoints

  • /server-info (mod_info) dumps your effective configuration. If you do not actively need it, do not map it at all. If you do, restrict it the same way.
  • /balancer-manager exposes backend member state and lets a visitor change balancer member status. Restrict it to the same allowlist, or remove the mapping.

Replace 2.2-era directives

Order, Allow, and Deny come from mod_access_compat, are deprecated in 2.4, and will go away in a future version. Mixing them with Require in the same scope is discouraged and produces surprises. Rewrite to Require ip / Require local and drop the old lines.

Prevention

  • Add the external check to CI or a scheduled job. Four curls from an outside host, alerting on any 200, catches regressions from config management drift.
  • Alert on 200s to /server-status from non-allowlisted IPs in access log monitoring. This is a deterministic signal, not a heuristic.
  • Baseline scanner noise. Internet-facing Apache gets probed constantly; you want the alert to fire on success (a 200) and on concentrated repetition, not on every stray 403.
  • Review mod_status config in code review the same way you would a firewall rule. It is an access control decision, not a debug toggle.
  • Keep Apache patched. The mod_status CVEs needed exactly this misconfiguration to be reachable.

How Netdata helps

  • Netdata’s Apache collector scrapes http://localhost/server-status?auto, so the localhost-only lockdown above is compatible with full monitoring: BusyWorkers, IdleWorkers, scoreboard state distribution, requests per second, and uptime keep flowing with no internet exposure.
  • Access log parsing surfaces response-code breakdowns over time, so a spike of 403s on /server-status or a stray 200 from an external address shows up as a visible anomaly instead of a grep you forgot to run.
  • Correlating 403 bursts on status paths with per-IP request rates separates routine internet background noise from a scanner systematically working through your vhosts.
  • Uptime and restart tracking catches unexpected reloads, which is when a stale or reverted status.conf typically re-exposes the endpoint.
  • Netdata’s Apache HTTP Server monitoring with Netdata brings these signals together with per-second metrics and ML anomaly detection.
The Netdata solution

Apache HTTP Server monitoring with Netdata

Netdata monitors Apache HTTP Server with per-second metrics from mod_status, pre-built dashboards, and ML-powered anomaly detection. Watch busy versus idle workers and the scoreboard state mix, requests per second, bytes served per second, and request processing duration alongside the rest of your stack, so you catch the worker-exhaustion, slow-backend, and memory incidents in these runbooks before they page anyone.