Skip to content

2.1Choose a monitor type

Start from the question you want answered. Then use the type in the table.

You want to know…UseDashboard tab
Is my website or health endpoint up, with the right reply?URL (2.2)url
Does my API answer correctly, including calls that need a token or password?API (2.3)api
Does a chain of API calls work end to end, such as log in and then fetch data?Multi-step API (2.4)api-multistep
Can a user finish a task in a real browser, such as signing in?Browser (2.5)browser
Did my scheduled job, backup or worker run on time?Heartbeat (2.6)heartbeat
Are my DNS records right? Are my mail records healthy? Am I on a spam blocklist?DNS (2.7)dns
Is my TLS certificate valid, and when does it expire?TLS certificate (2.8)cert
When does my domain registration run out?Domain expiry (2.9)domain
Does my database, SSH or mail server accept connections?TCP (2.10)tcp
Does my UDP service, such as DNS, NTP or a game server, reply?UDP (2.11)udp
Does my server answer ping?Ping (2.12)ping
Does my gRPC server report itself healthy?gRPC (2.13)grpc
Does my WebSocket endpoint accept connections and answer?WebSocket (2.14)websocket

Create a monitor in the dashboard#

  1. In the top bar, select + new monitor. The url tab is selected.
  2. Select the tab for the type you want. The page title changes, for example to new tcp monitor.
  3. Fill in the fields. The left column holds the settings most types share. The right side holds the settings for this type.
  4. Select create monitor →. The dashboard shows field errors only after you press it. Errors from the server appear above the buttons.
  5. When the monitor is created, its page opens.

To run a check at once, open an existing monitor, select Edit, then select run once now at the bottom of the page. You see queued — the result will appear on its own. The button is disabled on a new form, on a paused monitor, and on a heartbeat monitor. On a new form it shows Create the monitor first — there is nothing to run yet. The heartbeat form shows send test ping instead.

Settings most types share#

These fields are in the left column of the form. Each type page below says which of them it has.

Dashboard fieldDefaultLimits and notes
nameEmptyRequired. Up to 200 characters, on one line.
check interval60 secondsAt least 1 second. Your plan's minimum interval still applies: below it the form shows Your plan checks at most every N seconds.
timeout10 secondsIn seconds. A value above 60 seconds counts as 60 seconds.
locationsNone (runs from us-west)Choose from the regions shown. The check runs from each one you pick.
on failure — notifyNone (all team channels)Pick channels to limit who is alerted. Shown only when your team has channels.
  • The check interval is how often the check runs. Choose seconds, minutes or hours. The form shows your plan's minimum, for example Your plan: every 30s or slower. If your plan's minimum is higher than 60 seconds, the form starts at that minimum.
  • The timeout is how long one check may wait for an answer.
  • A location is a region the check runs from.
  • An alert channel is a place alerts go, such as email or Slack. You create channels on the alerting pages (chapter 10).

Results: up, degraded, down#

  • Up: the check passed.
  • Degraded: the check passed, but something needs attention. For most types this means the check was slower than your slow limit. You set the slow limit (degraded when slower than (ms)) on the monitor's edit page (chapter 3). The message reads slow: took Nms, the limit is Mms.
  • Down: the check failed. The message says why.
  • Could not run: the check learned nothing about your target. A fixed sentence explains it. It is not counted in uptime or alerts.

Alerts for new monitors start on your team's default alert policy. You can change the policy on the edit page (chapters 3 and 9).

Plan rules#

  • API, multi-step API and browser monitors need a plan that includes them. All other types are on every plan.
  • If your plan does not include a type, its tab shows a notice instead of the form. You can upgrade, or select use a URL check instead.
  • Your plan's minimum check interval applies to every type.
  • Your plan sets how many monitors you can have. Browser monitors also have their own limit. At the limit, a banner says new checks are blocked until you upgrade or remove one.

Through the API, these cases fail with failed_precondition. Examples: plan does not allow this monitor type: API monitors require Pro or Business and monitor quota exceeded: N/M monitors used on the current plan. A too-short interval also starts with plan does not allow this monitor type, then names the interval.

Create monitors through the API#

Every create call is a POST with a JSON body. Field names use camelCase. Send your API key as a bearer token (chapter 13).

Create a URL monitor
bash
API=https://www.obsrvly.com/api/gw/monitor/obsrvly.v1.MonitorConfigService
curl -s "$API/CreateUrlMonitor" \
  -H "Authorization: Bearer $OBSRVLY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "checkout", "url": "https://example.com/health",
       "method": "GET", "intervalSeconds": 60}'
TypeCreate method
URLCreateUrlMonitor
API and multi-step APICreateApiMonitor
BrowserCreateBrowserMonitor
HeartbeatCreateHeartbeatMonitor
DNSCreateDnsMonitor
TLS certificateCreateCertMonitor
Domain expiryCreateDomainMonitor
TCP, UDP, pingCreateTcpMonitor, CreateUdpMonitor, CreatePingMonitor
gRPCCreateGrpcMonitor
WebSocketCreateWebsocketMonitor
  • intervalSeconds is required for every type except domain and a cron heartbeat. Without it you get interval_seconds must be > 0.
  • If you leave out timeoutMs or send 0, a default for the type applies.
  • If you leave out locations, the check runs from us-west. ListRegions returns the regions you can use.
  • If you leave out alertChannelIds, all of your team's channels are attached.
  • A request body (body) and a UDP payload are sent in base64. Base64 is a way to write any bytes as plain text.
  • Invalid input fails with invalid_argument and the message invalid input: <reason>.
  • Limits on save: up to 50 headers, 50 assertions and 50 steps (and 50 headers and assertions in each step). A URL is up to 8,192 bytes. A matches pattern is up to 1,024 characters. The whole monitor is up to 900 KiB.
  • TriggerNow with {"monitorId": "<id>"} runs a check now. You can call it once every 30 seconds per monitor.

Last updated