[{"data":1,"prerenderedAt":513},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fmonitors":3},{"id":4,"title":5,"body":6,"description":505,"extension":506,"meta":507,"navigation":508,"path":509,"seo":510,"stem":511,"__hash__":512},"docs\u002Fdocs\u002F3.monitors.md","Monitors overview",{"type":7,"value":8,"toc":488},"minimark",[9,13,22,25,30,37,40,45,48,109,113,116,191,195,227,231,234,258,261,265,335,338,349,395,398,413,421,425,436,440,457,461,468,472,475,485],[10,11,5],"h1",{"id":12},"monitors-overview",[14,15,16,17,21],"p",{},"A ",[18,19,20],"strong",{},"monitor"," is a single check target. Vantaj runs it on a configurable schedule and records the result of every check.",[23,24],"monitors-demo",{},[26,27,29],"h2",{"id":28},"adding-a-monitor","Adding a monitor",[14,31,32,33,36],{},"Click ",[18,34,35],{},"New monitor"," from the Monitors page. Switch the monitor type in the demo below to see how the form adapts:",[38,39],"add-monitor-demo",{},[41,42,44],"h3",{"id":43},"the-basics","The basics",[14,46,47],{},"Every monitor needs:",[49,50,51,62,72,78,89,100],"ul",{},[52,53,54,57,58],"li",{},[18,55,56],{},"Display name"," - a human-readable label, e.g. ",[59,60,61],"code",{},"Checkout API",[52,63,64,67,68,71],{},[18,65,66],{},"Target"," - what to check. A URL for HTTP(s), a host or IP for Ping, ",[59,69,70],{},"host:port"," for Port, and a mail server address for SMTP",[52,73,74,77],{},[18,75,76],{},"Monitor type"," - HTTP(s), Ping (ICMP), Port (TCP), or SMTP",[52,79,80,83,84,88],{},[18,81,82],{},"Check interval"," - anything from every 30 seconds to once a day (see ",[85,86,82],"a",{"href":87},"#check-interval"," below)",[52,90,91,94,95,99],{},[18,92,93],{},"Group"," ",[96,97,98],"em",{},"(optional)"," - type a name to organise related monitors together",[52,101,102,105,106,88],{},[18,103,104],{},"Regions"," - which locations checks run from (see ",[85,107,104],{"href":108},"#regions",[41,110,112],{"id":111},"advanced-options-for-https","Advanced options for HTTP(s)",[14,114,115],{},"HTTP monitors have the deepest configuration:",[49,117,118,124,134,140,149,163,169,175,185],{},[52,119,120,123],{},[18,121,122],{},"HTTP method"," - GET, POST, PUT, PATCH, HEAD, DELETE, or QUERY",[52,125,126,129,130,133],{},[18,127,128],{},"Request headers"," - any number of key-value pairs, e.g. an ",[59,131,132],{},"Authorization"," header for a protected health endpoint",[52,135,136,139],{},[18,137,138],{},"Request body"," - for POST, PUT, PATCH, and QUERY requests",[52,141,142,145,146],{},[18,143,144],{},"Expected status codes"," - comma-separated list; defaults to any ",[59,147,148],{},"2xx",[52,150,151,154,155,158,159,162],{},[18,152,153],{},"Response assertions"," - require the response body to ",[96,156,157],{},"contain"," or ",[96,160,161],{},"not contain"," a keyword. Great for catching soft failures where the page loads but shows an error",[52,164,165,168],{},[18,166,167],{},"Basic auth"," - username and password sent with each check",[52,170,171,174],{},[18,172,173],{},"Timeout"," - 5 seconds to 2 minutes",[52,176,177,180,181,184],{},[18,178,179],{},"Follow redirects"," and ",[18,182,183],{},"Verify SSL"," toggles",[52,186,187,190],{},[18,188,189],{},"Degraded threshold"," - mark the monitor degraded (without alerting as down) when responses are slower than a millisecond threshold you set",[41,192,194],{"id":193},"advanced-options-for-other-types","Advanced options for other types",[49,196,197,206],{},[52,198,199,202,203],{},[18,200,201],{},"Ping and Port"," monitors support the ",[18,204,205],{},"degraded threshold",[52,207,208,211,212,215,216,219,220,223,224],{},[18,209,210],{},"SMTP"," monitors add ",[18,213,214],{},"connection security"," (None, STARTTLS, or SSL\u002FTLS), an optional ",[18,217,218],{},"EHLO domain",", optional ",[18,221,222],{},"auth credentials",", and a ",[18,225,226],{},"timeout",[41,228,230],{"id":229},"linked-monitors","Linked monitors",[14,232,233],{},"When creating an HTTP monitor, you can enable companion checks in one click:",[49,235,236,242,248],{},[52,237,238,241],{},[18,239,240],{},"SSL certificate expiry"," - alert before the certificate runs out",[52,243,244,247],{},[18,245,246],{},"DNS resolution"," - alert if the hostname stops resolving",[52,249,250,253,254],{},[18,251,252],{},"Domain expiry"," - track the domain's registration under ",[85,255,257],{"href":256},"\u002Fdocs\u002Fdomains","Domains",[14,259,260],{},"Each toggle creates a linked monitor alongside the HTTP one, so a single form covers the whole stack of ways a URL can fail.",[26,262,264],{"id":263},"status-values","Status values",[266,267,268,281],"table",{},[269,270,271],"thead",{},[272,273,274,278],"tr",{},[275,276,277],"th",{},"Status",[275,279,280],{},"Meaning",[282,283,284,295,305,315,325],"tbody",{},[272,285,286,292],{},[287,288,289],"td",{},[59,290,291],{},"up",[287,293,294],{},"Check succeeded within the expected response time",[272,296,297,302],{},[287,298,299],{},[59,300,301],{},"degraded",[287,303,304],{},"Check succeeded but response was slow",[272,306,307,312],{},[287,308,309],{},[59,310,311],{},"down",[287,313,314],{},"Check failed - timeout, connection refused, or unexpected status code",[272,316,317,322],{},[287,318,319],{},[59,320,321],{},"paused",[287,323,324],{},"Monitor is manually paused and not being checked",[272,326,327,332],{},[287,328,329],{},[59,330,331],{},"unknown",[287,333,334],{},"Monitor was just created and has not been checked yet",[26,336,82],{"id":337},"check-interval",[14,339,340,341,344,345,348],{},"Checks run at a fixed interval per monitor. Available intervals range from ",[18,342,343],{},"30 seconds"," to ",[18,346,347],{},"24 hours",": 30s, 1m, 3m, 5m, 10m, 30m, 1h, 6h, and 24h.",[266,350,351,361],{},[269,352,353],{},[272,354,355,358],{},[275,356,357],{},"Interval",[275,359,360],{},"Best for",[282,362,363,371,379,387],{},[272,364,365,368],{},[287,366,367],{},"30s – 1m",[287,369,370],{},"Critical services where downtime is costly",[272,372,373,376],{},[287,374,375],{},"3m – 5m",[287,377,378],{},"Standard production endpoints and high-volume APIs",[272,380,381,384],{},[287,382,383],{},"10m – 30m",[287,385,386],{},"Less critical or internal services",[272,388,389,392],{},[287,390,391],{},"1h – 24h",[287,393,394],{},"Background services, cron endpoints, low-churn checks",[26,396,104],{"id":397},"regions",[14,399,400,401,404,405,408,409,412],{},"Checks run from multiple regions - ",[18,402,403],{},"US East",", ",[18,406,407],{},"Europe",", and ",[18,410,411],{},"Asia Pacific",". A monitor's response-time chart breaks results down per region, so you can see where latency is coming from. Checking from more than one place also avoids false alarms caused by a single bad network path.",[14,414,415,416,420],{},"If your endpoints aren't publicly reachable, allowlist the checker IPs - see ",[85,417,419],{"href":418},"\u002Fdocs\u002Fprobe-ips","Probe IPs & regions",".",[26,422,424],{"id":423},"alerts","Alerts",[14,426,427,428,430,431,435],{},"Opening a monitor's ",[18,429,424],{}," tab lets you attach an ",[85,432,434],{"href":433},"\u002Fdocs\u002Falerts","alert policy"," so you're notified when it goes down, degrades, or recovers. A monitor with no policy attached is still checked, but won't notify anyone.",[26,437,439],{"id":438},"grouping","Grouping",[14,441,442,443,446,447,404,450,404,453,456],{},"You can assign monitors to a ",[18,444,445],{},"group"," (e.g. ",[59,448,449],{},"Production",[59,451,452],{},"Staging",[59,454,455],{},"Third-party","). Groups are created on the fly - just type a name when creating or editing a monitor. Monitors with a group are displayed under a labelled section header in the list.",[26,458,460],{"id":459},"history-and-incidents","History and incidents",[14,462,463,464,467],{},"Every check result is stored. The ",[18,465,466],{},"History"," tab on a monitor's detail page shows a scrollable, filterable log of all checks. Incidents are opened automatically when a monitor goes down and resolved when it recovers.",[26,469,471],{"id":470},"uptime-calculation","Uptime calculation",[14,473,474],{},"Uptime % is calculated as:",[476,477,482],"pre",{"className":478,"code":480,"language":481},[479],"language-text","uptime = (up checks \u002F total checks) × 100\n","text",[59,483,480],{"__ignoreMap":484},"",[14,486,487],{},"It is always shown in the context of a selected timeframe (1h, 24h, 7d, 30d, 90d, or custom range).",{"title":484,"searchDepth":489,"depth":489,"links":490},2,[491,498,499,500,501,502,503,504],{"id":28,"depth":489,"text":29,"children":492},[493,495,496,497],{"id":43,"depth":494,"text":44},3,{"id":111,"depth":494,"text":112},{"id":193,"depth":494,"text":194},{"id":229,"depth":494,"text":230},{"id":263,"depth":489,"text":264},{"id":337,"depth":489,"text":82},{"id":397,"depth":489,"text":104},{"id":423,"depth":489,"text":424},{"id":438,"depth":489,"text":439},{"id":459,"depth":489,"text":460},{"id":470,"depth":489,"text":471},"How monitors work, status values, intervals, grouping, and history","md",{},true,"\u002Fdocs\u002Fmonitors",{"title":5,"description":505},"docs\u002F3.monitors","Y5rzO5gwOmZQZsbuVEbE11dLfMRmXryNfKCO88wPyPc",1783289836658]