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-log-rotation-copytruncate ▌

Operations Guides

Apache log rotation losing lines: logrotate copytruncate vs graceful reopen

You notice it after the fact: the access log has a gap. Requests you know happened, because the application processed them and the client got a response, never appear in any log file. Not in the current log, not in the rotated one. The gap lines up with the moment logrotate ran.

Or the opposite symptom: after rotation, Apache keeps writing to the old file. access.log.1 grows for days while access.log stays empty. Or every night at rotation time you see a blip of dropped connections and a spike of 499s or client resets, because the postrotate script does a hard restart instead of a graceful one.

All three symptoms have the same root: rotation acting on files Apache holds open. Apache keeps log file descriptors open across requests. Whatever you do to the file underneath those descriptors, you have to tell Apache about it, or accept that something gets lost.

What this means

Apache opens its access and error logs at startup (or reload) and keeps the descriptors open in the parent and every child. Writes go to the descriptor, not to the path. Three consequences:

  • copytruncate races the writer. logrotate’s copytruncate mode copies the live file, then truncates the original in place. Between the copy finishing and the truncate executing, Apache keeps appending. Those lines are wiped out by the truncate. The logrotate documentation itself warns that data can be lost in this window. At high request rates the window is small but the loss is real: every line written in that interval is gone.

  • Rename without reopen strands the descriptor. If logrotate renames access.log to access.log.1 and creates a fresh access.log, Apache’s children still hold a descriptor to the renamed inode. They keep writing to access.log.1 indefinitely, and the new file stays empty until something makes Apache reopen its logs. Compression of the rotated file then destroys data that is still being written.

  • SIGHUP is a hard restart. Some distro-shipped or hand-rolled rotation configs signal Apache with kill -HUP or call apachectl restart in postrotate. SIGHUP makes the parent kill its children as it does on TERM (the parent remains running): in-flight requests/connections are terminated. The correct signal for reopening logs without dropping traffic is SIGUSR1, which is what apachectl graceful sends.

Bottom line: copytruncate races Apache’s writes and loses lines. The correct approaches are rename plus SIGUSR1, or piped logging with rotatelogs.

Common causes

CauseWhat it looks likeFirst thing to check
copytruncate in logrotate configGap in log lines around rotation time; gap grows with request rategrep -r copytruncate /etc/logrotate.d/
Rename rotation with no postrotate signalRotated file keeps growing; new file emptylsof on Apache PIDs shows the rotated filename
kill -HUP or restart in postrotateDropped connections and client errors at rotation timegrep -A5 postrotate /etc/logrotate.d/apache2 /etc/logrotate.d/httpd
Multiple logrotate blocks each reloading ApacheSeveral graceful restarts back to back; memory spike; on some MPM/distro combos, parent instabilityCount resuming normal operations lines in the error log around rotation
Graceful restart pile-up during rotationOld-generation children linger in G state; log reopen delayed; memory elevatedScoreboard G states via mod_status
Piped logger (rotatelogs) diedLogging stops entirely; workers may block in L statepgrep -af rotatelogs

Quick checks

All read-only. Run on the Apache host.

# 1. Find which rotation method is configured
grep -rE 'copytruncate|postrotate|sharedscripts' /etc/logrotate.d/ /etc/logrotate.conf 2>/dev/null

# 2. See exactly what the postrotate script does
cat /etc/logrotate.d/apache2 2>/dev/null || cat /etc/logrotate.d/httpd 2>/dev/null

# 3. Confirm Apache is writing to the file you think it is
#    (if this shows access.log.1 or a deleted file, the reopen never happened)
ls -l /proc/$(pgrep -o 'httpd|apache2' | head -1)/fd 2>/dev/null | grep -i log

# 4. Dry-run logrotate to see what it would do, without doing it
logrotate -d /etc/logrotate.conf 2>&1 | grep -A20 -i 'apache\|httpd'

# 5. Check restart history around the last rotation
grep -E "resuming normal operations|caught SIGTERM|graceful restart" \
  /var/log/apache2/error.log /var/log/httpd/error_log 2>/dev/null | tail -20

# 6. Look for a timestamp gap in the access log around rotation time
#    (compare the last line of the rotated file with the first line of the new one)
tail -2 /var/log/apache2/access.log.1 2>/dev/null
head -2 /var/log/apache2/access.log 2>/dev/null

# 7. If using piped logging, confirm the pipe processes are alive
pgrep -af rotatelogs

# 8. Check scoreboard for stuck Logging or Graceful states
curl -s http://localhost/server-status?auto | grep "Scoreboard:" | \
  awk '{print $2}' | fold -w1 | sort | uniq -c | sort -nr

Check 3 is the single most diagnostic one. If the parent and children have the rotated (or deleted) file open, every other fix is cosmetic until Apache reopens its logs.

How to diagnose it

  1. Establish which symptom you have. Missing lines around the rotation instant points at copytruncate. A rotated file that keeps growing points at rename-without-reopen. Dropped connections at rotation time points at SIGHUP in postrotate. They are frequently mixed on hosts where the config evolved over years.

  2. Read the actual logrotate config for Apache. Do not trust memory. Distributions ship different defaults, and old configs survive upgrades. Look for copytruncate, and look at what postrotate runs: apachectl graceful, systemctl reload httpd, kill -HUP, or invoke-rc.d apache2 reload. The first two are graceful (SIGUSR1) on standard distro units; kill -HUP is a hard restart. If your unit files or init scripts are customized, verify what reload actually does instead of assuming.

  3. Verify the reopen happened. After the next rotation, run check 3 on several children, not just the parent. If any child still holds the old file, the graceful signal did not reach Apache. Common reasons: the postrotate command fails silently (wrong PID file path, permissions, the cron job running in an environment where apachectl is not on PATH), or old-generation children still have the old file open.

  4. Quantify the loss. Compare the last timestamp of the rotated file with the first timestamp of the new file, and check whether requests you can prove happened (application logs, client records) appear anywhere. Missing lines plus copytruncate in the config confirms the race. Note that delaycompress does not help here: it only postpones compression, it does not close the copy-then-truncate window.

  5. Check for restart pile-up side effects. If rotation triggers a graceful restart under load, old and new children overlap. Look for many G (gracefully finishing) states in the scoreboard and multiple resuming normal operations lines close together. If you have several logrotate blocks for different Apache logs (per-vhost files), each may fire its own reload; consolidate with sharedscripts so postrotate runs once per cycle. Rapid back-to-back graceful reloads remain an operational risk to avoid; reports of parent instability are environment- and version-dependent and should be treated as unconfirmed unless reproduced.

  6. If logs stopped entirely, check the pipe. With CustomLog "|/usr/sbin/rotatelogs ...", a dead rotatelogs process means writes go to a broken pipe. Workers can then stall in the L (Logging) scoreboard state, which is the leading edge of the log-stall failure mode.

Metrics and signals to monitor

SignalWhy it mattersWarning sign
Access log write continuityDirect evidence of loss or strandingTimestamp gaps at rotation time; rotated file still growing
Open log FDs per child (/proc/<pid>/fd)Proves whether the reopen reached every childAny child holding the rotated or deleted file
Scoreboard L statesWorkers blocked on log writesL >5% of workers sustained
Scoreboard G statesOld generations lingering after rotation-triggered gracefulG states persisting long after rotation
resuming normal operations rateCounts graceful restartsMore than one per rotation cycle, or restarts not tied to rotation
Error log rate around rotationSurfaces segfaults, SIGPIPE, config reload failuresNew [error] entries clustered at rotation time
Connection resets / 5xx at rotation timeDetects hard-restart rotation configsError blip repeating nightly at the same minute
Log filesystem spaceRotation is your primary defense against a full log diskdf on the log filesystem >80%

Fixes

Replace copytruncate with rename plus graceful reopen

The standard fix. Remove copytruncate and add a postrotate block that gracefully restarts Apache so it reopens its logs:

# /etc/logrotate.d/apache2 (or httpd) - pattern, adapt paths to your distro
/var/log/apache2/*.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    sharedscripts
    postrotate
        if [ -f /var/run/apache2/apache2.pid ]; then
            apachectl graceful
        fi
    endscript
}

Key points:

  • sharedscripts matters when the block matches multiple files (several vhosts). Without it, postrotate runs once per matched file and you get N graceful restarts back to back.
  • Test the postrotate command by hand as the same user logrotate runs as. Silent postrotate failure is the most common reason “we switched to graceful and it still writes to the old file.”
  • Give old children time before compressing. After SIGUSR1, old-generation children finish in-flight requests against the old descriptor. Apache’s own guidance is that a rotation script cannot know when all children have finished writing the pre-restart log, so you need a delay before touching the old file. delaycompress covers this in practice; if you compress immediately in postrotate, add a sleep. GracefulShutdownTimeout applies to graceful-stop, not a graceful reload; to bound old-file holding, tune request/keepalive/proxy timeouts and add an operational sleep/delay before compression.
  • Upstream apachectl graceful runs a syntax check before signaling, but local wrappers can differ. A syntax check still cannot prove that runtime child startup will succeed, so run apachectl configtest in your change process and watch the error log after reloads.

If signaling Apache is impossible, avoid copy-based rotation. Logrotate also has renamecopy, but its documented sequence runs postrotate, so it still assumes the application can reopen its log; the safe move remains to signal Apache or pipe the logs.

Switch to piped logging with rotatelogs

Piped logging removes logrotate from the write path entirely. Apache writes to a pipe; a per-log rotatelogs process handles rotation:

# Time-based rotation, no signals or cron needed
CustomLog "|/usr/sbin/rotatelogs -l /var/log/apache2/access.%Y-%m-%d.log 86400" combined
ErrorLog  "|/usr/sbin/rotatelogs -l /var/log/apache2/error.%Y-%m-%d.log 86400"

Tradeoffs:

  • One process per piped log directive. Many vhosts each with piped access and error logs means many rotatelogs processes. Usually fine, but not free.
  • Do not share one rotatelogs instance across vhosts unless you accept interleaved lines. Separate instances per log are safe.
  • The pipe is a new failure mode. Upstream Apache restarts reliable piped-loggers after death and logs AH00106; writes that stall can block workers or lose data. Monitor pgrep -af rotatelogs, AH00106, and the scoreboard L count.
  • Compression needs -p (a post-rotation program) or an external job that only touches files rotatelogs has already closed. Never compress the file rotatelogs currently has open.

Fix a hard-restart postrotate

If postrotate runs kill -HUP, apachectl restart, or service httpd restart, replace it with apachectl graceful or systemctl reload httpd (verify your unit’s reload sends SIGUSR1). SIGHUP drops every in-flight connection; on a busy server that is a nightly micro-outage showing up as client retries and 499s. It also resets SSL session caches, causing a CPU burst of full handshakes right after rotation.

Choosing the right approach:

flowchart TD
    A[Need to rotate Apache logs] --> B{Can rotation scripts signal Apache?}
    B -->|yes| C[logrotate: rename + postrotate apachectl graceful]
    B -->|no| D[Piped logging with rotatelogs]
    C --> E{Multiple log files matched?}
    E -->|yes| F[Add sharedscripts so graceful runs once]
    E -->|no| G[Delay compression until old children drain]
    F --> G
    D --> H[Monitor rotatelogs process and scoreboard L state]
    A -.->|never| I[copytruncate at production write rates]
    A -.->|never| J[kill -HUP in postrotate]

Prevention

  • Standardize on one rotation strategy per host. Mixed configs (one vhost block with copytruncate, another with graceful) guarantee someone misdiagnoses the next gap.
  • Alert on log write gaps, not just disk space. A check that the access log’s mtime is fresh during known traffic catches both the race and a dead pipe.
  • Watch rotation as an event. Correlate the error log (resuming normal operations), scoreboard G and L states, and connection resets around the rotation minute. Rotation should be boring; if it shows up in any signal, the config is wrong.
  • Keep logs on their own filesystem. Rotation is your main defense against a full log disk, and a full log disk produces the log-stall failure mode: workers blocked in L, throughput collapsing while the process looks alive.
  • Force-rotate manually after fixing the config (logrotate -f /etc/logrotate.d/apache2) during a quiet window to prove the new postrotate works end to end, then verify open FDs on several children. Forcing rotation briefly overlaps old and new children; on a memory-tight server, do it off-peak.

How Netdata helps

  • Log continuity as a signal. Netdata’s web log collector parses Apache access logs continuously, so a rotation gap or a stranded descriptor shows up immediately as a drop in parsed requests per second while traffic is unchanged.
  • Scoreboard correlation. BusyWorkers, IdleWorkers, and worker state distribution are collected per second, so G pile-ups and L stalls around the rotation minute are visible instead of anecdotal.
  • Restart detection. Uptime and restart-event tracking makes it obvious when rotation is triggering hard restarts or repeated graceful restarts back to back.
  • Error spike alignment. HTTP 5xx and connection-level metrics on the same timeline as rotation confirm or rule out a hard-restart postrotate in one look.
  • Disk and FD headroom. Log filesystem usage and per-process file descriptor counts are collected alongside Apache metrics, so you catch the “log disk filling because rotation silently stopped working” case before the log-stall failure.

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.