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 / haproxy / haproxy-dropped-logs

Operations Guides

HAProxy DroppedLogs: losing log lines exactly when you need them

You are mid-incident. Traffic is spiking, 5xx rates are climbing, and you go to the HAProxy logs for per-request timing and termination codes. The logs are not there. Whole seconds of traffic are missing, right at the peak. Then you notice DroppedLogs in show info has been incrementing for hours and nobody was watching it.

DroppedLogs counts log messages HAProxy tried to emit but could not deliver. The cause is almost never HAProxy itself: it is the log pipeline downstream. A syslog daemon that cannot keep up, a socket buffer that overflowed, a log target that stalled. There is no error in the HAProxy log, because the line that would have told you is one of the ones that got dropped.

The failure mode has a cruel symmetry: log volume scales with traffic, so the pipeline is most likely to saturate exactly when traffic is highest, which is when you need per-request logs most. Any nonzero increment of DroppedLogs deserves a ticket. Not because dropped logs hurt traffic (they do not), but because they destroy your ability to diagnose the next problem.

What this means

HAProxy emits a log line when a proxied session ends. Under load this is thousands of lines per second, going out over whatever log target you configured: a local syslog socket, a UDP syslog endpoint, a file descriptor, or a ring buffer. HAProxy emits a single log per transaction, once every item in the log format can be satisfied; in practice that means after the end of the response for HTTP or at the end of the connection for TCP, so in HTTP mode one line can cover several keep-alive requests. option logasap emits the line as soon as the response headers are sent, and log-steps selects finer-grained origins (accept, connect, request, response, close).

When the delivery path cannot absorb the volume, HAProxy does not block the event loop waiting for the log sink. It drops the message and increments DroppedLogs. That is the right design for a proxy (logging must never stall traffic), but it means the log sink’s capacity problem becomes your observability problem.

flowchart LR
  S[Sessions close] --> E[HAProxy emits log line]
  E --> B{Log sink accepts?}
  B -->|yes| L[syslog / file / ring]
  B -->|no, buffer full or sink slow| D[DroppedLogs counter +1]
  L --> W[written to disk or forwarded]
  D -.->|silent: no log line| X[message lost forever]

Two properties matter operationally:

  • Dropped messages are gone. HAProxy does not retry or spool them. The counter is the only evidence they existed.
  • The counter only sees local delivery failures. If HAProxy hands a UDP datagram to the kernel and the network loses it, or the remote syslog drops it after receipt, DroppedLogs does not move. The counter reflects “HAProxy could not send,” not “the log line made it to disk.”

One nuance: the HAProxy documentation ties this drop-and-count behavior to unbuffered file descriptor targets (fd@<n>, stdout, stderr), where a failed writev() increments the counter. With UDP syslog targets, the kernel socket buffer can also overflow silently. Operators have reported the counter moving with local syslog socket targets too, so treat any increment as real regardless of target type, but do not assume a zero counter means every line reached your log store.

Common causes

CauseWhat it looks likeFirst thing to check
Syslog daemon too slow or stalledDroppedLogs increments during traffic peaks, recovers off-peakIs rsyslog/syslog-ng alive and keeping up? Check its own impstats or queue depth
Socket receive buffer too smallDrops correlate tightly with log line rate, syslog process looks healthyKernel receive buffer sizes and the syslog listener’s buffer tuning
Syslog daemon restart or socket recreationA burst of drops at a specific timestamp, then back to zerosyslog daemon logs, unit restart history
Log volume growth from config changeDrops started right after enabling more verbose logging (more fields, logging health checks, debug level)Recent config diffs for log-format, option httplog, option dontlognull
Downstream of syslog is blockedrsyslog queue grows because disk or remote forwarder is slow, backpressure reaches the socketrsyslog queue statistics, disk latency on the log volume
Traffic surge without headroomDrops only during bursts (deploys, cron fans, attacks)Correlate DroppedLogs delta with SessRate (show info) and req_rate (CSV stats)

Quick checks

All of these are read-only. Adjust the socket path if your build puts it elsewhere (commonly /var/lib/haproxy/stats).

# 1. Read the counter itself
echo "show info" | socat unix-connect:/var/run/haproxy.sock stdio | grep "^DroppedLogs:"

# 2. Take two samples 60s apart to get a drop rate, not just a lifetime count
echo "show info" | socat unix-connect:/var/run/haproxy.sock stdio | grep "^DroppedLogs:"
sleep 60
echo "show info" | socat unix-connect:/var/run/haproxy.sock stdio | grep "^DroppedLogs:"

# 3. Confirm current traffic and log volume pressure
echo "show info" | socat unix-connect:/var/run/haproxy.sock stdio | grep -E "^(SessRate|ConnRate|CurrConns|Uptime_sec):"

# 4. See what log targets HAProxy is configured with
grep -E "^\s*log " /etc/haproxy/haproxy.cfg

# 5. Is the syslog daemon running and has it restarted recently?
systemctl status rsyslog --no-pager 2>/dev/null | head -5 || systemctl status syslog-ng --no-pager | head -5

# 6. Kernel UDP receive buffer defaults (per-socket limits the syslog listener inherits)
sysctl net.core.rmem_default net.core.rmem_max

# 7. Where are the gaps? Show per-second line counts, lowest first
awk '{print substr($0,1,15)}' /var/log/haproxy.log | uniq -c | sort -n | head

Notes on interpretation:

  • Uptime matters. DroppedLogs is a process counter. A large value with a long Uptime_sec may be ancient history; the counter belongs to the current worker process (it is zeroed at process start and does not carry across reloads), and the 60-second delta is what tells you whether you are dropping now.
  • Check the syslog daemon’s restart history. A syslog restart removes and recreates the local socket or briefly stops receiving; lines sent in that window are lost. If drop bursts line up with package updates or logrotate-triggered restarts, that is your cause.
  • Check 7 finds thin seconds, not empty ones. Seconds with zero lines never appear in the output because they produce no input lines. During a busy period, look for counts of 1 or 2 amid thousands; that is your gap.

How to diagnose it

  1. Establish the drop rate. Two samples of DroppedLogs 60 seconds apart. Zero means the incident is historical; positive means the pipeline is failing now. Express it as drops per second and compare to your log line rate, which tracks SessRate (one line per session in HTTP mode).

  2. Identify the configured log path. Look at every log line in the global and defaults sections. The three shapes you will find: a Unix socket (/dev/log or an rsyslog-created socket), UDP to a local or remote host:port, or a file descriptor / ring target. The fix is different for each.

  3. Check the syslog daemon end of the pipe. If you log to rsyslog, look at its internal queue statistics (impstats) if enabled: a growing main queue or a discarded-message counter on the imuxsock/imudp input is the smoking gun. If rsyslog forwards to a remote destination, check whether that downstream is slow, because rsyslog backpressure propagates back to the socket HAProxy writes to.

  4. Time-correlate with restarts and config changes. Compare drop onset with syslog restarts, HAProxy reloads, logrotate runs, and any change that increased per-line size or lines per session. A custom log-format with extra sample fetches can make lines substantially longer; longer lines fill buffers faster.

  5. Check buffer sizing against peak line rate. For a UDP or Unix socket target, the kernel receive buffer is the shock absorber between HAProxy’s burst and the syslog daemon’s read loop. If the burst exceeds buffer bytes divided by average line size, you drop. Defaults are often far too small for thousands of lines per second.

  6. Rule out the network path (for remote syslog). Remember the counter’s blind spot: datagrams HAProxy sent successfully can still be lost in the network or dropped by the receiving host’s own socket buffer. If DroppedLogs is zero but lines are missing at the destination, the loss is downstream. Compare line counts at the receiver against HAProxy’s session counters for the same window.

Metrics and signals to monitor

SignalWhy it mattersWarning sign
DroppedLogs (show info)The only signal HAProxy gives you that log delivery failedAny increment; alert on delta > 0
SessRate (show info) / req_rate (CSV stats)Approximates log line rate; drops should correlate with peaksDrop rate rising with request rate means no headroom
Uptime_sec (show info)Lets you interpret the counter and detect reloads that reset baselinesCounter interpretation without uptime is meaningless
Syslog daemon input queue / discard countersThe receiving end’s view; confirms which side is saturatedQueue persistently nonzero, discards incrementing
Kernel UDP errors (/proc/net/snmp RcvbufErrors, NoPorts)Receiver-side socket buffer overflows invisible to HAProxyRcvbufErrors incrementing during peaks
Log volume disk write latency / utilizationSlow disk backs up the syslog daemon, which backs up the socketWrite latency spikes correlated with drop bursts

Fixes

Grouped by cause. None of these require restarting HAProxy.

Syslog daemon cannot keep up

Make the receiver faster before touching HAProxy. Typical levers: move rsyslog’s main queue to a disk-assisted or purely in-memory queue sized for your peak line rate, disable expensive per-message processing (deep parsing, heavy templates) on the HAProxy input, and write logs with asynchronous flushing if filesystem latency is the bottleneck. If rsyslog forwards to a remote collector, decouple the forward with a local action queue so downstream slowness cannot backpressure the input socket.

Tradeoff: in-memory queues lose buffered messages if the daemon crashes. That is still better than losing them continuously at the socket.

Socket buffer too small

Increase the receive buffer on the syslog input socket and raise the kernel ceilings (net.core.rmem_max) so the daemon is allowed to request a big buffer. Note that not every input module exposes buffer sizing: rsyslog’s imudp exposes a per-listener rcvbufSize input parameter (for example input(type="imudp" port="514" rcvbufSize="1m")), imtcp has no receive-buffer parameter (its relevant input knob is SocketBacklog, the TCP listen backlog), and imuxsock exposes no buffer-size knob at all — check your rsyslog version’s documentation rather than assuming every module supports the knob. Size the buffer to absorb your worst realistic burst: peak lines per second multiplied by average line size multiplied by the seconds of stall you want to survive.

Tradeoff: bigger buffers hide brief stalls but cannot fix a receiver that is chronically slower than the line rate. If the daemon reads slower than HAProxy writes on average, no buffer size saves you.

Syslog restarts dropping logs

If drops align with syslog restarts, reduce restart frequency (config management churn is the usual cause) and make restarts fast. On the HAProxy side, a more durable fix is to change the transport.

Move to a buffered or reliable transport

Two structural options:

  • Ring buffers. HAProxy can log to an internal ring buffer (ring@<name>) and have a log server drain it. This decouples emission from delivery: short downstream stalls are absorbed by the ring instead of dropping messages at emit time. The tradeoff is that a full ring overwrites old messages rather than counting drops, so you trade silent loss at the socket for silent loss in the ring unless you also watch the ring. Rings are drained through the runtime socket with show events <sink>, which can tail the buffer, but the ring itself exposes no operational overflow counter, so visibility into ring loss is limited: with a TCP ring forwarder attached, a stalled forwarder blocks the ring (docs note all servers attached to one ring receive the same copy and the ring advances at the speed of the slowest), and a ring nobody reads simply overwrites.
  • TCP instead of UDP for the hop to the log collector, either from HAProxy’s log forwarding or from the local syslog daemon onward. TCP gives you backpressure and retransmission instead of fire-and-forget. TCP gives the transport the backpressure and retransmission semantics UDP lacks; the exact loss numbers under load depend on your own pipeline, so measure them with your ring/sink configuration rather than assuming a figure. The tradeoff is that backpressure now has somewhere to propagate; make sure the receiving end can genuinely keep up.

Reduce log volume

Sometimes the honest fix is emitting fewer or smaller lines: drop health-check and monitoring-probe traffic from logs with dontlognull or ACL-based no log rules, trim sample fetches from a bloated custom log-format, and stop logging at debug/info globally. Every byte you do not emit is buffer you do not need.

Prevention

  • Alert on the delta. DroppedLogs should be zero forever. A delta greater than zero over any 5-minute window opens a ticket. This is cheap and catches the failure before the incident where you needed the logs.
  • Watch the receiver, not just the sender. HAProxy’s counter cannot see network loss or receiver-side socket overflows. Monitor the syslog daemon’s discard counters and the kernel’s UDP receive buffer errors on the receiving host, or your zero-drop signal is incomplete.
  • Load-test the log path, not just the proxy. When you capacity-test HAProxy, verify the log pipeline at the same line rate. A log sink that handles average traffic but not 3x peak is a time bomb.
  • Treat log verbosity changes as capacity changes. A config diff that adds fields to log-format or removes a dontlog rule changes bytes per second through the pipeline. Review it like a traffic change.
  • Survive syslog restarts. Prefer a log path that buffers across a syslog restart (local ring, persistent queue) so routine maintenance does not punch holes in your records.

How Netdata helps

  • Netdata’s HAProxy collector reads show info continuously, so DroppedLogs becomes a per-second time series instead of a number you remember to check during an incident. A nonzero delta is visible immediately and alertable.
  • Request rate, session rate, and connection counts are collected at the same frequency, so you can confirm the classic signature on one dashboard: drop rate tracking SessRate at peak, which separates “pipeline has no headroom” from “pipeline is broken.”
  • Counter resets after reloads show up as discontinuities; correlating with Uptime_sec keeps you from misreading a fresh process as a cured problem.
  • Netdata also monitors the syslog side of the pipe when the daemon runs on the same host: process liveness, CPU, disk write latency on the log volume, and UDP error counters, which is where most root causes live.
  • During an incident, having the drop timeline next to the 5xx and latency timeline tells you quickly whether your log gaps were caused by the same event you are investigating.
The Netdata solution

HAProxy load balancer monitoring with Netdata

Netdata monitors HAProxy with per-second frontend, backend, and queue metrics plus ML-powered anomaly detection. Correlate maxconn saturation, queue buildup, health-check cascades, 5xx attribution, and file-descriptor exhaustion against the backend and host signals behind them, so you catch the incidents in these runbooks before they page anyone.