Documentation Index Fetch the complete documentation index at: https://docs.devhelm.io/llms.txt
Use this file to discover all available pages before exploring further.
The monitors section of devhelm.yml defines your monitoring checks. Each monitor specifies a type, configuration, assertions, and scheduling.
Monitor fields
Field Type Required Description namestring Yes Unique monitor name typestring Yes HTTP, DNS, TCP, ICMP, HEARTBEAT, MCP_SERVERconfigobject Yes Type-specific configuration (see below) frequencyinteger — Check frequency in seconds (30–86400) enabledboolean — Whether the monitor runs checks (default: true) regionsstring[] — Probe regions (e.g., us-east, eu-west) environmentstring — Environment slug for variable substitution tagsstring[] — Tag names to attach alertChannelsstring[] — Alert channel names to notify on incidents assertionsobject[] — Pass/fail criteria (see below) authobject — Authentication configuration (see below) incidentPolicyobject — Trigger, confirmation, and recovery rules
Monitor types
HTTP
monitors :
- name : API Health
type : HTTP
config :
url : https://api.example.com/health
method : GET
verifyTls : true
customHeaders :
Accept : application/json
requestBody : '{"ping": true}'
contentType : application/json
frequencySeconds : 60
regions : [ us-east , eu-west ]
Config field Type Required Description urlstring Yes Target URL to check methodstring — HTTP method: GET, POST, PUT, PATCH, DELETE, HEAD verifyTlsboolean — Validate TLS certificate (default: true) customHeadersmap — Custom request headers requestBodystring — Request body for POST/PUT/PATCH contentTypestring — Content-Type header value
DNS
monitors :
- name : DNS Resolution
type : DNS
config :
hostname : example.com
recordTypes : [ A , AAAA ]
nameservers : [ 8.8.8.8 ]
timeoutMs : 5000
Config field Type Required Description hostnamestring Yes Domain name to resolve recordTypesstring[] — DNS record types to query nameserversstring[] — Custom nameservers timeoutMsinteger — Query timeout in milliseconds totalTimeoutMsinteger — Total timeout across retries
TCP
monitors :
- name : Database Port
type : TCP
config :
host : db.example.com
port : 5432
timeoutMs : 5000
Config field Type Required Description hoststring Yes Target hostname or IP portinteger — TCP port (1–65535) timeoutMsinteger — Connection timeout in milliseconds
ICMP
monitors :
- name : Server Ping
type : ICMP
config :
host : 10.0.1.5
packetCount : 3
timeoutMs : 5000
Config field Type Required Description hoststring Yes Target hostname or IP packetCountinteger — Number of ICMP packets to send timeoutMsinteger — Timeout in milliseconds
Heartbeat
monitors :
- name : Nightly Backup
type : HEARTBEAT
config :
expectedInterval : 86400
gracePeriod : 3600
Config field Type Required Description expectedIntervalinteger — Expected ping interval in seconds gracePeriodinteger — Grace period before marking as missed
Heartbeat monitors generate a unique ping URL. Your service sends a request to this URL on each run. If no ping arrives within the expected interval plus grace period, an incident is created.
MCP Server
monitors :
- name : MCP Health
type : MCP_SERVER
config :
command : npx
args : [ -y , @ modelcontextprotocol/server-everything ]
env :
API_KEY : ${MCP_API_KEY}
Config field Type Required Description commandstring Yes Command to launch the MCP server argsstring[] — Command arguments envmap — Environment variables
Assertions
Assertions define pass/fail criteria for each check:
monitors :
- name : API Health
type : HTTP
config :
url : https://api.example.com/health
assertions :
- config :
type : status_code
expected : "200"
operator : equals
severity : fail
- config :
type : response_time
thresholdMs : 2000
severity : warn
Field Type Required Description config.typestring Yes Assertion type discriminator (snake_case) configobject Yes Type-specific assertion fields (includes type) severitystring — fail or warn (default: fail)
Assertion types are snake_case strings on config.type. Common HTTP assertions include status_code, response_time, header_present, body_contains, and json_path.
Authentication
For monitors that need to authenticate against protected endpoints:
monitors :
- name : Protected API
type : HTTP
config :
url : https://api.example.com/internal/health
auth :
type : bearer
secret : API_TOKEN
Auth type Fields Description bearersecretBearer token from vault secret basicsecretBase64 username:password from vault secret api_keyheaderName, secretCustom header with API key headerheaderName, secretCustom header with arbitrary value
The secret field references a key from the secrets section or vault.
Incident policy
Control when incidents are created, confirmed, and resolved:
monitors :
- name : API Health
type : HTTP
config :
url : https://api.example.com/health
incidentPolicy :
triggerRules :
- type : consecutive_failures
severity : down
scope : per_region
count : 3
- type : response_time
severity : degraded
thresholdMs : 5000
aggregationType : p95
confirmation :
type : multi_region
minRegionsFailing : 2
maxWaitSeconds : 120
recovery :
consecutiveSuccesses : 2
minRegionsPassing : 2
cooldownMinutes : 5
Trigger rules
Field Type Description typestring consecutive_failures, failures_in_window, or response_timeseveritystring down or degradedscopestring per_region or any_regioncountinteger Failure count threshold windowMinutesinteger Time window for failures_in_window thresholdMsinteger Response time threshold for response_time aggregationTypestring all_exceed, average, p95, max
Confirmation
Field Type Description typestring multi_regionminRegionsFailinginteger Minimum failing regions to confirm maxWaitSecondsinteger Maximum time to wait for confirmation
Recovery
Field Type Description consecutiveSuccessesinteger Consecutive passing checks to recover minRegionsPassinginteger Minimum passing regions to recover cooldownMinutesinteger Delay before auto-resolving
Resource groups
Group monitors into composite health views:
resourceGroups :
- name : Payment Service
description : All payment-related monitors
alertPolicy : Critical Alerts
defaultFrequency : 30
defaultRegions : [ us-east , eu-west ]
healthThresholdType : PERCENTAGE
healthThresholdValue : 80
suppressMemberAlerts : true
monitors : [ Payment API , Payment Webhook , Stripe Health ]
Field Type Description namestring Resource group name descriptionstring Human-readable description alertPolicystring Notification policy name for group alerts defaultFrequencyinteger Default check frequency for members defaultRegionsstring[] Default probe regions for members defaultAlertChannelsstring[] Default alert channel names defaultEnvironmentstring Default environment slug healthThresholdTypestring COUNT or PERCENTAGEhealthThresholdValuenumber Threshold value suppressMemberAlertsboolean Suppress individual member alerts confirmationDelaySecondsinteger Delay before confirming group incident recoveryCooldownMinutesinteger Delay before auto-resolving monitorsstring[] Monitor names in this group servicesstring[] Dependency service slugs in this group
Next steps
Alert channels Configure notification channels in YAML.
Tags and secrets Tags, secrets, and environment variables.