All docs

Monitoring & alerting

Alerts and notification channels

Opservo raises an alert when something on a server, an uptime check or an SLA needs a person. This page tells you what creates one, how to acknowledge or dismiss it, and how to get it delivered to Slack, Discord, Telegram, a webhook, email, PagerDuty or OpsGenie.

What creates an alert

  • •Health findings — every critical and warning finding from the health score engine, including security findings. Info findings do not alert.
  • •Critical recommendations — a critical item in a server’s recommendation list is also an alert.
  • •A low security score — a security score below 60 raises one warning alert for the server.
  • •Server offline — no heartbeat for more than 2 minutes raises a warning; the next heartbeat resolves it.
  • •Uptime transitions — an uptime monitor going DOWN is critical; coming back UP is info. Certificate and domain expiry warnings come from the same monitors.
  • •SLA budget — a monitor with an SLA target raises one alert per period once 80 % of its downtime budget is used (critical if the budget is already gone).
  • •Incidents — declaring an incident sends a notification to your channels.
  • •Disk failure — when the kernel reports I/O errors on a disk, Opservo raises one composite “disk is failing” alert and folds the dozens of per-line kernel-log alerts it explains into it, so the one that matters is not buried.

Severities and lifecycle

Alerts are critical, warning or info. Each is keyed by a stable fingerprint per server, so one problem is one alert no matter how many heartbeats it persists for.

  • •Unread → read. Opening the alert clears the unread badge.
  • •Acknowledge (Ack). Records who took it and stops escalation reminders. The alert stays open until the condition clears.
  • •Dismiss. Hides it. A dismissed alert does not return on the next heartbeat.
  • •Resolved. Automatic, when the condition is no longer true. If it recurs later the alert re-arms and notifies again.

Delivery is throttled to once per distinct problem per 24 hours, so a flapping condition does not page you every minute. Alert emails carry a one-click Mark resolved link that works for 14 days without signing in.

Where you see alerts

The home page has an Alerts panel with the active list and an Ack button on each row; the Issues page shows every open finding and alert across the fleet.

Notification channels

Go to Account → Notifications. Pick a kind, paste the target, choose a minimum severity (Critical only, Warning + Critical, or Everything) and click Add. Then click Test to send a sample alert.

KindWhat to pasteWhat you get
SlackAn Incoming Webhook URL (Slack → Apps → Incoming Webhooks)A message with severity, title, server and an Open Opservo link
WebhookAny https:// endpointA JSON POST: {product, type, severity, title, detail, server, url}
EmailAn addressAn HTML email with a Mark resolved link; needs your own SMTP (below)
PagerDutyThe Integration Key of a service’s Events API v2 integrationA triggered PagerDuty incident per new alert
OpsGenieAn Alert API keyAn OpsGenie alert per new alert (P1 critical, P3 warning, P5 info)
TelegramA bot token from @BotFather plus the chat id of the group or chat the bot is inA message per alert with severity, title, server and an Open Opservo link; a green ✅ Resolved message when it clears
Metrics streamYour endpoint, or Datadog / New RelicNot alerts: a scheduled push of live metrics every 1, 5 or 15 minutes

Telegram needs two values. Create a bot with @BotFather and copy its token. Add the bot to the group that should receive alerts (or open a chat with it and send it any message). The chat id is a number, negative for groups: forward a message from that chat to @userinfobot or @getidsbot and it replies with the id, or use the @channelname of a public channel the bot administers. Paste the token as the target and the chat id in the field below it, then click Test.

Discord works through the Webhook kind. Paste the Discord webhook URL and Opservo detects it and sends a Discord-formatted embed instead of the generic JSON body.

Each channel also has category chips — Uptime, Security, Performance, Billing, Incidents. Leave them all on to receive everything, or switch some off to keep a channel quiet. Severity and categories can be edited later; to change the target, remove the channel and add it again.

Email needs your own SMTP

Opservo does not relay alert email through its own domain. In Account → Notifications, enter your SMTP host, port, username, password and a from address, test it, and the Email kind becomes available. The password is stored encrypted.

Delivery status

Every real delivery is recorded on the channel row: last sent time and whether it succeeded. If a delivery fails, the row shows Last delivery failed with the error text from the receiving side, so a revoked webhook or an expired key is visible rather than silent.

The “no channel” safety net

Alerts are always visible in the dashboard, but nothing is sent anywhere until you add a channel. If a workspace has open critical alerts and no enabled channel, a red banner on every page says so; you can hide it for 24 hours. Separately, workspace owners get one email at most every 7 days while that stays true — a nudge to add a channel, not a copy of the alerts.

Escalation

Unacknowledged critical alerts can be repeated and escalated to the person on call, by email, SMS, WhatsApp or phone call. That is configured on the On-call page — see On-call schedules and escalation.

Last updated 2026-10-19. Found a mistake? Email hello@getopservo.com.