Cron Heartbeat Monitoring: The Reliable Way to Verify Jobs
At 02:00, a billing export runs successfully, but its upload step fails afterward. By morning, cron heartbeat monitoring is absent, the dashboard still looks healthy, and finance discovers missing reports through customer complaints. That is the dangerous class of failure: the server remains reachable while scheduled work quietly stops.
This guide explains how heartbeat checks work, where they fit beside website, port, ping, SSL, and response monitoring, and how to configure them without creating alert noise. You will also learn how to verify delivery, handle retries, choose sensible intervals, and distinguish a missed job from a monitoring-system failure.
The focus is operational reliability, not a simple “send a request after cron runs” recipe. A useful design must define lateness, identify the correct job, preserve failure context, and route alerts to people who can act.
What Is Cron Heartbeat Monitoring?
Cron heartbeat monitoring is an external check that expects a scheduled job to report completion within a defined time window. The job sends a request to a unique monitoring endpoint after reaching its intended completion point. If that request does not arrive on time, the monitoring service creates an alert.
A basic example looks like this:
15 * * * * /usr/local/bin/export-orders && curl --fail --max-time 10 https://monitor.example/heartbeat/orders-hourly
The command runs hourly at fifteen minutes past the hour. The heartbeat is sent only when the export command succeeds. If the export exits unsuccessfully, the shell does not run curl, and the external monitor can report the missed execution.
That distinction matters. A normal host monitor answers, “Can I reach the server?” A website check answers, “Did the application return an acceptable response?” A heartbeat answers, “Did this particular scheduled task complete recently?”
Cron itself is a time-based job scheduler. Its basic behavior is documented in the Wikipedia overview of cron, but cron does not know whether a downstream upload completed, whether a lock blocked execution, or whether a process hung indefinitely.
In practice, a payment reconciliation job may start on time and still fail before its final database commit. Put the heartbeat after the meaningful completion boundary, not merely at the beginning of the script.
Cron Heartbeat Monitoring Versus Other Checks
Heartbeat checks complement other monitor types rather than replacing them. A reachable server can still have a broken scheduler, and a healthy homepage can hide a failed data pipeline.
| Monitor type | Primary question | Typical failure detected | What it cannot prove |
|---|---|---|---|
| Website monitoring | Does an endpoint respond correctly? | HTTP errors, slow responses, changed content | A background job completed |
| Ping monitoring | Does an IP respond to network echo? | Host reachability or network loss | Application health or task success |
| Port monitoring | Does a service accept connections? | Closed listener, firewall issue, stopped daemon | Correct application behavior |
| SSL Monitoring | Is the certificate valid and current? | Expiration, hostname mismatch, trust errors | Scheduled work completed |
| Heartbeat monitoring | Did this job report completion on time? | Missed, late, or failed scheduled work | Every internal step succeeded |
For public services, combine a heartbeat with HTTP response monitoring guidance from MDN, SSL certificate checks, and selected multi-location probes. Those checks cover different failure domains.
A useful operational model separates three questions:
- Availability: Can an external system reach the service?
- Correctness: Did the service return the expected result?
- Completion: Did the scheduled process finish its required work?
Many monitoring programs cover the first question and overlook the third.
How Cron Heartbeat Monitoring Works
A reliable implementation has six stages. Each stage closes a different gap between “the command ran” and “the business result is safe.”
Create a unique endpoint for the task.
The monitoring service generates a distinct URL for each job, such asorders-hourlyornightly-backup. The unique identity lets the alert identify the failed workload. Reusing one endpoint for several jobs makes diagnosis slow and can hide individual failures.Define the expected schedule and grace period.
The monitor records how often the job should report and how late it may be. A job scheduled every hour might receive a ten-minute grace period, depending on workload variability. Without this boundary, the system cannot distinguish normal delay from a missed run.Place the heartbeat after the success condition.
The script performs its important work first, then sends the request only after successful completion. If the request appears at the start, the monitor may mark a job healthy while the actual task later crashes.Send the request from the job environment.
The scheduler, script, or wrapper contacts the external endpoint. The request should have a short timeout and fail visibly. If the request can hang for several minutes, it may delay the next scheduled run or create overlapping processes.Wait for the expected signal.
The external monitor records the last successful heartbeat and compares it with the schedule. If the deadline passes, it changes state and sends notifications. A good monitor retains timestamps and delivery history, not just a green or red label.Investigate and recover with context.
The alert should identify the job, host, expected window, last success, and relevant run identifier. When the next heartbeat arrives, the monitor should recover the incident without requiring manual status changes.
Consider a nightly backup scheduled at 01:30. The backup writes an archive, verifies its checksum, uploads the archive, and then sends the heartbeat. If the upload fails, the heartbeat never arrives. That sequence gives the monitor a meaningful success signal.
A weak sequence sends the heartbeat immediately after starting the backup. It confirms process launch, not backup completion. The distinction becomes critical when storage fills, credentials expire, or a remote object store throttles requests.
Request Design for Cron Heartbeat Monitoring
The callback should be boring and predictable. Use HTTPS, a unique path or token, a short client timeout, and a clear exit-code policy.
For shell jobs, a pattern like this is usually safer:
curl --fail --silent --show-error --max-time 10 \
--retry 2 --retry-delay 3 \
https://monitor.example/heartbeat/nightly-backup
The exact flags depend on the client and operating system. Check the installed tool’s documentation before copying production commands.
Retries deserve care. A retry can protect against a brief network fault, but it can also delay the job or produce duplicate events. The monitor should treat repeated callbacks as idempotent status updates.
Use a request body or headers when the service supports them. Include a job version, host identifier, or run ID so operators can connect the external event with local logs. Do not place passwords, database credentials, or customer data in query strings.
HTTP behavior should be explicit. The HTTP semantics specification, RFC 9110, explains status-code handling and request semantics. A client that ignores error responses can report a false success even when the endpoint returns a failure status.
Features That Matter Most in Cron Heartbeat Monitoring
The useful features are not limited to an endpoint and an email. Professionals need timing rules, evidence, recovery behavior, and routing that fit existing incident work.
Schedule and Grace-Period Controls
What: The monitor understands expected intervals, execution windows, and tolerated lateness.
Why: A fixed five-minute timeout is wrong for a job that runs every six hours. Conversely, a daily job with a full-day grace period may delay detection until the business process has already failed.
Practical tip: Set the grace period from observed runtime variation plus a deliberate buffer. Revisit it after major workload or infrastructure changes.
Failure-Only and Recovery Notifications
What: The system alerts when a heartbeat is late or missing, then reports recovery when the job returns.
Why: Teams need one actionable incident, not repeated messages for every polling cycle. Recovery confirms that the job resumed and helps close operational records.
Practical tip: Send an initial alert, use controlled reminders for prolonged failures, and send one recovery event.
Unique Job Identity
What: Each scheduled task has its own monitor and callback address.
Why: A shared callback can make one healthy job mask another failed job. Unique identifiers support ownership, audit trails, and clean incident history.
Practical tip: Name monitors by purpose, frequency, and environment. For example: prod-orders-export-hourly, not cron-1.
Execution and Delivery Evidence
What: The monitor stores last success, late events, response details, and recovery timestamps.
Why: An alert without history leaves operators guessing. Evidence helps distinguish a missed scheduler run from a blocked outbound request.
Practical tip: Add a run ID to local logs and pass a safe version of it with the callback when supported.
Notification Routing and Integrations
What: Alerts reach email, chat, incident systems, mobile channels, or on-call tools.
Why: A failed data job may not belong with website alerts. Routing by team, severity, and environment reduces the chance that a critical business failure disappears among low-priority events.
Practical tip: Test every route, including mobile delivery and escalation. A configured integration is not a verified integration.
Security Controls
What: The callback uses HTTPS, secret tokens, access restrictions, and sensible request validation.
Why: Anyone who can trigger a heartbeat can potentially create false recoveries. Anyone who can read an exposed URL may learn operational details.
Practical tip: Treat callback URLs as credentials. Rotate them after accidental exposure and avoid logging complete URLs.
Multi-Location and External Observation
What: The monitor observes the callback from infrastructure outside the job’s host or network.
Why: Local checks can succeed during an egress outage, DNS issue, or monitoring-agent failure. External observation tests the delivery path that matters.
Practical tip: Use outside monitoring for important jobs, but do not assume more probe locations automatically improve a callback check. The critical path is usually outbound delivery and event processing.
Related Service Checks
What: Heartbeats sit beside response-time, website, SSL, port, ping, DNS, keyword, and domain-expiration monitors.
Why: Each check covers a different failure mode. SSL expiration can break a callback endpoint; a port failure can prevent a worker from starting; slow responses can affect users before outright downtime.
Practical tip: Build a small monitor set around the service dependency graph instead of adding every available check.
| Feature | Why It Matters | What to Configure |
|---|---|---|
| Expected interval | Detects missing work within a known window | Schedule frequency, timezone, and grace period |
| Unique callback | Separates jobs and ownership | One endpoint per task and environment |
| Success boundary | Prevents false success after partial work | Send only after validation, commit, or upload |
| Retry handling | Reduces transient delivery failures | Limited retries, short timeout, idempotent events |
| Alert routing | Gets incidents to the responsible team | Email, chat, incident tool, and escalation rules |
| Recovery events | Confirms the job resumed | One recovery notification and incident closure |
| History and timestamps | Supports diagnosis and audit | Last success, late duration, response status, run ID |
| Secret management | Prevents forged status events | HTTPS, protected endpoint, token rotation |
Who Should Use Cron Heartbeat Monitoring?
Heartbeat checks are a strong fit wherever scheduled work has a business deadline or silent failure cost.
Data and Finance Teams
Use them for invoice generation, bank-file imports, reconciliation, tax exports, and settlement reports. A host may remain healthy while a single malformed record stops the workflow.
Platform and SRE Teams
Use them for backups, log rotation, certificate renewal, queue draining, database maintenance, and infrastructure discovery. These tasks often run outside customer-facing request paths.
Teams establishing broader coverage can pair this design with Linux server monitoring and resource checks. CPU and memory signals explain why a scheduled job failed, but they do not prove the job completed.
SaaS and Operations Teams
Use them for subscription synchronization, report delivery, webhook reconciliation, and recurring customer notifications. Add response-time monitoring when the same workflow depends on a public API.
Small Businesses Without Dedicated On-Call Staff
Use them for a few high-value tasks with clear owners. Simple, well-routed alerts are often better than a large collection of unowned monitors.
Who Should Avoid It?
This approach is not the right fit when a task has no defined completion condition or no person owns the response. It also adds little value for an ad hoc command that runs once and has no recurring expectation.
- Right for you if a missed job can affect revenue, compliance, customers, or recovery.
- Right for you if the task runs on a predictable schedule.
- Right for you if the job can send an outbound HTTPS request.
- Right for you if each important task has a clear owner.
- Right for you if you can define successful completion.
- Right for you if alerts can reach a tested human or incident workflow.
- Right for you if you need evidence beyond host availability.
- Right for you if the job has dependencies worth checking separately.
This is not the right fit if the job intentionally runs at unpredictable times. It is also unsuitable as the only control for a process that needs step-by-step workflow visibility.
Benefits and Measurable Outcomes from Cron Heartbeat Monitoring
Detects Silent Failures
The monitor can flag a stopped scheduler even when SSH, ping, and the website still work. For example, a permissions change may prevent one user’s crontab from launching while the server remains healthy.
Measures Freshness, Not Just Availability
A successful heartbeat gives you a last-completed timestamp. A reporting team can then measure whether data is fresh enough for the next business process.
Reduces Investigation Time
A named alert with the last success and expected schedule narrows the first diagnostic step. Operators can inspect the correct host, service account, and log file instead of searching every scheduled task.
Protects Customer-Facing Commitments
A missed provisioning task may delay account setup without causing a public HTTP error. Professionals operating SaaS systems can detect that delay before support volume rises.
Supports Backup Confidence
A backup job can report completion only after archive creation, integrity validation, and remote upload. That gives infrastructure teams a stronger signal than a process-start event.
For resource context, review server resource monitoring guidance alongside job outcomes. High disk pressure may explain failures, while a heartbeat confirms whether the workload finished.
Improves Alert Quality
Failure-only notifications, recovery messages, and ownership rules help separate incidents from routine polling. The outcome is fewer repeated alerts and clearer response decisions, although exact improvement varies by configuration.
Exposes Dependency Failures
A failed callback may indicate DNS, SSL, firewall, proxy, or outbound-network trouble rather than a job defect. Pairing the heartbeat with SSL and endpoint checks helps isolate that distinction.
How to Evaluate and Choose Cron Heartbeat Monitoring
Evaluate the monitoring service against your operating model, not only its monitor count or shortest interval.
Schedule Flexibility
Look for hourly, daily, irregular, and narrow-window schedules. The system should handle time zones and daylight-saving changes clearly.
A provider that only checks fixed intervals may not fit a job that runs at 02:15 local time. Confirm how schedules behave during clock changes and server timezone differences.
Detection Interval and Lateness
Check how quickly a missed event becomes an incident. “Real time” can mean different things, so read the service documentation for polling, processing, and notification delays.
Ask whether the monitor measures late completion separately from total absence. A job that arrives thirty minutes late deserves different treatment from one that never runs.
Integration and Escalation
Review email, chat, mobile, SMS, voice-call, webhook, and incident-management options where relevant. Voice or SMS may suit a severe backup failure, while routine report delays may belong in email.
Test integrations rather than trusting setup screens. Verify that the correct team receives a real event and that recovery messages close the intended incident.
Monitor Scope
A useful account may combine website, HTTP response, ping, port, UDP, DNS, SSL, keyword, and domain-expiration checks. Confirm whether these checks can share teams, tags, locations, and notification policies.
Do not choose based on a free monitor count alone. A generous allowance is irrelevant if the service cannot model your schedules or route alerts correctly.
External Locations and Network Access
Understand probe locations, source IPs, allowlisting requirements, and callback reachability. For private environments, outbound access may be easier than inbound probing.
Ask how the service behaves when one monitoring location has a regional network problem. Location-specific checks should not create false incidents from a single probe.
History and API Access
Look for event history, timestamps, export options, and documented APIs. Operators often need to connect monitor state with deployment records, ticket systems, or job logs.
An API matters when you manage many environments or create monitors as infrastructure. Review authentication, rate limits, and deletion behavior before automating changes.
Security and Ownership
Confirm token handling, HTTPS support, access controls, audit logs, and ownership transfer. A departed employee should not remain the only person who can change a production alert.
| Criterion | What to Look For | Red Flags |
|---|---|---|
| Schedule model | Flexible intervals, time zones, and grace periods | Only fixed polling with unclear timezone behavior |
| Detection speed | Clear late-event and missed-event timing | “Instant” claims without documented conditions |
| Notifications | Email, chat, SMS, voice, webhook, and escalation controls | One channel or no recovery event |
| Check coverage | Heartbeat plus HTTP, SSL, port, ping, DNS, and keyword checks | Treating one check as proof of all health |
| External reach | Documented locations, IPs, and allowlisting guidance | Unclear source networks or probe behavior |
| History | Event timeline, last success, response details, and exports | Only current green or red status |
| API and automation | Stable API, authentication, and monitor management | No automation path for larger estates |
| Security | HTTPS, secret rotation, ownership, and access control | Public callback tokens with no revocation |
Recommended Configuration for Cron Heartbeat Monitoring
The values below are starting points, not universal rules. Tune them against runtime history, business deadlines, and recovery capacity.
| Setting | Recommended Value | Why |
|---|---|---|
| Callback placement | After validation, commit, or confirmed upload | Reports meaningful completion instead of process start |
| Client timeout | Short timeout, often around 5–15 seconds | Prevents a blocked callback from holding the job |
| Delivery retries | Limited retries with backoff | Handles brief network faults without hiding failures |
| Grace period | Runtime variation plus a deliberate operational buffer | Avoids alerts during normal workload fluctuation |
| Notification policy | Initial failure, controlled reminder, and recovery | Limits noise while preserving urgency |
| Endpoint security | HTTPS and secret callback identity | Protects status integrity and transport |
| Job identity | Separate monitor per critical task and environment | Prevents one task from masking another |
| Run evidence | Timestamp, host, version, and safe run ID | Connects external events with local diagnosis |
A solid production setup typically includes one monitor for each important task, a callback after the final success condition, and a schedule that matches the business expectation. It also includes a tested failure path: stop the scheduler, block callback delivery briefly, and confirm the alert reaches the intended responder.
For deeper host context, pair the job check with CPU monitoring practices and application-specific logs. Resource data should explain an incident, not replace the completion signal.
Reliability, Verification, and False Positives in Cron Heartbeat Monitoring
False positives usually come from mismatched schedules, not defective monitoring. Common sources include timezone differences, daylight-saving transitions, long-running jobs, lock contention, host suspension, DNS failures, expired certificates, proxies, and blocked outbound traffic.
Start by documenting the schedule in one timezone. Cron may use the host timezone while the monitoring service displays UTC. A job that appears late in the dashboard may actually run on time under a different clock.
Next, measure actual runtime. If a job normally takes two minutes but occasionally takes twelve, a five-minute grace period will create noise. Do not simply increase the window forever; investigate why runtime varies.
Use multi-source checks for important workflows. A heartbeat can show that a callback arrived, while a website or API check confirms the resulting data is available. SSL Monitoring can identify a certificate failure that blocks callback delivery before the job itself changes.
Retry logic should exist on both sides with clear limits. The job can retry a transient callback failure, while the monitoring service can delay an incident briefly. Neither side should retry indefinitely.
Alert thresholds need business meaning. A daily compliance export may justify an alert after one missed run. A best-effort cache refresh may tolerate several failures before escalation.
Verification should include controlled tests:
- Run the task manually with a test callback.
- Confirm the monitor records the expected job identity and timestamp.
- Force the main command to fail before the callback.
- Confirm no false success event appears.
- Block outbound delivery and observe the resulting alert.
- Restore connectivity and confirm recovery behavior.
Do not test only the green path. A monitoring design earns trust when its red path behaves predictably.
Implementation Checklist for Cron Heartbeat Monitoring
Planning
- List every scheduled task with a business owner and technical owner.
- Record each job’s schedule, timezone, expected runtime, and deadline.
- Define the exact success condition for every critical task.
- Classify jobs by impact, such as backup, finance, customer, or maintenance.
- Decide which tasks need reminders, escalation, or voice notification.
Setup
- Create a unique callback for each important job and environment.
- Place the callback after validation, commit, upload, or other final success steps.
- Configure HTTPS and protect callback identities as secrets.
- Set a short client timeout and limited retry behavior.
- Add safe host, version, or run-ID context where supported.
- Configure email, chat, webhook, mobile, or incident integrations.
Verification
- Run each job successfully and confirm its heartbeat timestamp.
- Force a command failure before the callback and confirm an alert.
- Test a late run using a controlled schedule or staging monitor.
- Block callback delivery and verify the expected failure path.
- Confirm recovery notification behavior.
- Check that the alert identifies the correct team and environment.
Ongoing
- Review late-run history after deployments and workload changes.
- Recheck timezone behavior before daylight-saving transitions.
- Rotate exposed callback identities immediately.
- Review notification recipients when teams or ownership change.
- Compare heartbeat events with job logs and output records.
- Remove obsolete monitors when scheduled tasks are retired.
Common Mistakes and How to Fix Them
Mistake: Sending the heartbeat before the job performs its main work.
Consequence: The monitor reports success even when the export, backup, or upload fails later.
Fix: Send the callback only after the required result has been validated.
Mistake: Reusing one callback for every scheduled task.
Consequence: Operators cannot identify the failed job, and one task can hide another.
Fix: Create separate endpoints with names that include environment and purpose.
Mistake: Setting the grace period equal to the schedule interval.
Consequence: A missed hourly task may remain undetected for nearly two hours.
Fix: Set a narrower deadline based on business impact and measured runtime.
Mistake: Ignoring the callback’s HTTP response.
Consequence: The script exits successfully even when the monitoring service rejects the event.
Fix: Use a client mode that fails on HTTP errors and logs a useful local error.
Mistake: Allowing callback requests to hang indefinitely.
Consequence: Cron processes overlap, locks accumulate, and later runs fail.
Fix: Set a short timeout and investigate repeated delivery failures separately.
Mistake: Alerting every polling cycle during one incident.
Consequence: Notification fatigue causes responders to miss the first useful message.
Fix: Use one initial alert, controlled reminders, escalation, and one recovery event.
Mistake: Treating a heartbeat as proof of every workflow step.
Consequence: A script may report success despite incomplete records or weak validation.
Fix: Define the success boundary carefully and include output checks before reporting.
Mistake: Forgetting DNS, SSL, firewall, and proxy dependencies.
Consequence: A healthy job appears failed because its callback cannot reach the service.
Fix: Monitor the callback endpoint and certificate separately, then test from the actual job host.
Best Practices for Cron Heartbeat Monitoring
Name Monitors for Humans
Use names such as production-nightly-backup or staging-customer-sync. Include environment and frequency when those details help triage.
Separate Job Health from Host Health
Keep host CPU, memory, disk, and process checks distinct from job completion checks. A server can be healthy while one script fails due to bad input.
Teams can use server performance monitoring guidance to connect resource pressure with missed jobs without confusing the signals.
Protect the Callback
Use HTTPS, limit access where practical, and rotate tokens after exposure. Avoid placing sensitive information in URLs because infrastructure logs may retain them.
Make Notifications Actionable
Include the job name, host, environment, expected deadline, last success, and runbook link. A message that only says “monitor down” forces unnecessary investigation.
Treat Late Completion as a Separate Signal
A job that completes late may indicate queue growth, database contention, or dependency slowdown. Track lateness rather than treating every late event as equivalent to total failure.
Test During Safe Hours
Run controlled failure tests during a maintenance window. Verify the alert route, escalation delay, and recovery event before relying on the monitor for a critical process.
Review After Every Major Change
Deployments, timezone changes, scheduler migrations, certificate renewals, and firewall changes can break callback delivery. Add monitor verification to the change checklist.
Mini Workflow: Investigating a Missed Job
- Confirm the monitor’s expected window and last successful heartbeat.
- Check the scheduler log for launch, lock, permission, or timezone errors.
- Inspect the job log for the last completed stage and exit code.
- Test DNS, SSL, and outbound HTTPS from the job host.
- Re-run safely, confirm the heartbeat, and record the root cause.
FAQ About Cron Heartbeat Monitoring
What is cron heartbeat monitoring used for?
Cron heartbeat monitoring is used to detect scheduled jobs that fail, stop, or finish later than expected. It works well for backups, imports, exports, reports, maintenance, and customer synchronisation tasks. The monitor watches for an external completion signal instead of checking only whether a server remains online.
How does a cron job send a heartbeat?
A cron job usually sends a heartbeat by making an HTTPS request to a unique monitoring URL after successful completion. The script should fail visibly when the request receives an error or times out. Place the request after validation, upload, or commit steps that define success.
Can cron heartbeat monitoring detect a job that starts but hangs?
Cron heartbeat monitoring can detect a hung job when the expected callback never arrives before the deadline. It does not automatically explain where the process hung. Combine the alert with scheduler logs, process inspection, runtime history, and dependency checks.
What interval should a heartbeat monitor use?
The interval should match the job’s expected schedule and business deadline, with a measured grace period. A frequent task may need a short lateness window, while a nightly job needs a longer one. Avoid choosing an interval solely because a provider advertises checks every few minutes.
Is a heartbeat enough to prove a backup is valid?
A heartbeat proves only that the job reached its configured completion point and sent a callback. For backups, define completion as archive creation, integrity validation, and confirmed remote upload. Periodic restore tests remain necessary because a valid-looking archive may still be unusable.
Should heartbeat checks use retries?
Limited retries can protect against temporary network failures, but unlimited retries weaken failure detection. Use short timeouts, bounded backoff, and idempotent callback handling. Record callback failure locally so operators can separate job failure from delivery failure.
How does this differ from website uptime monitoring?
Website uptime monitoring checks an externally reachable web service, while a heartbeat checks completion of a specific scheduled task. A website can remain available while a database export fails. Most production systems need both signals because they describe different risks.
Can SSL monitoring help with heartbeat reliability?
SSL monitoring can identify certificate expiration or trust problems that prevent a heartbeat request from reaching its endpoint. It does not replace the heartbeat because a valid certificate says nothing about whether the scheduled job completed. Pair certificate checks with callback history and job logs.
Conclusion: Build Trust Around Completed Work
Three principles make scheduled-task monitoring dependable:
- Report completion, not process launch. Put the callback after the result that matters.
- Define lateness deliberately. Use schedule, runtime history, time zone, and business impact.
- Verify the failure path. Test alerts, retries, integrations, recovery, and callback dependencies.
When those principles are in place, cron heartbeat monitoring becomes a precise signal for silent operational failures rather than another noisy status indicator. Pair it with website, response-time, SSL, port, ping, DNS, and resource checks so each monitor answers a distinct question.
If you are looking for a reliable uptime and monitoring solution, visit zuzia.app to learn more.