Pingtower Docs
Docs The addons agent The addons agent

The addons agent

A single Go binary you install on external servers. It runs addons, small tasks that measure something about a target, on a schedule, and reports the measurements to the tower as ordinary events. Your rules do the rest.

addons agent→check every 60s→POST /v1/ingest→rule→alert

What it does

  • Runs the checks in its config on their own intervals, each with a timeout, up to eight at once.
  • Reports on change by default, so a quiet target is not a noisy feed, with a periodic sample so you can see it is still running.
  • Spools to disk through an outage, 64 MiB by default, and drains when the tower is reachable again.
  • Sends a heartbeat about itself every five minutes, with counts of checks, sensors and failures, so the agent’s own health is a rule away from paging someone.
  • Never executes a string from the network. There is no route that makes it run a command, restart, or upload a file.

It works identically against the hosted service and a self-hosted box: the tower URL is one line of config.

Status and levels

Every check ends in a status, and the status becomes the event’s level: up is 200, degraded is 300, down is 400, or whatever down_level the check sets, typically 500 for one that should page. Each event carries the tags addon:<name>, check:<id> and status:<status>, and the measurements as keys, so a rule can threshold any number directly.

The catalogue

AddonMeasures
httpcheckDNS, connect, TLS, first-byte and total time; body size; status, header, JSONPath, timing and body-hash assertions; basic, bearer, mTLS and OAuth authentication
syntheticUp to 10 HTTP requests in order, with values carried between steps; per-step timings and the step and assertion that failed
browsercheckA Playwright script in headless Chromium, run in a gVisor sandbox; per-step results and Core Web Vitals
grpccheckA grpc.health.v1 health call: connect, TLS and call time; serving status
websocketWebSocket upgrade, an optional message and its reply; upgrade and reply time
domainexpiryDays until a domain expires, from its registry’s RDAP or WHOIS
tcpcheckDNS and connect time to a port
dnscheckResolve time and answers, against a chosen resolver
tlscertDays until expiry, handshake time, chain length
icmppingRTT min, avg, max; packet loss
hostmetricsCPU, load, memory, swap and paging on the agent’s own host
udpcheckA datagram sent and a reply awaited, with retries; round-trip timeagent only
smtpcheck, imapcheck, popcheckMail greeting, STARTTLS, certificate expiry and an optional loginagent only
sshcheckConnect, handshake, auth and command time; exit codeprivileged
portscanOpen, unexpected and missing ports against a baselineprivileged
tracerouteHop count, path change, per-hop RTTprivileged
logwatchPattern matches in a local file, write age, rotationprivileged
securityupdatesPending updates, security updates, reboot requiredprivileged

udpcheck and the three mail checks run only on your own agents, never on Pingtower’s servers, whose addresses are shared by every customer. A check of any of them that names a Pingtower region is refused. See Hosted checks.

Privileged addons need something beyond an outbound socket: a credential, an external binary, a heavier network footprint, or read access to a host file. They are off by default; a config naming one fails at startup unless it is listed in agent.enable_addons.

sshcheck and logwatch run only from the agent’s local config. Their parameters name a command, a key or a file on the box, so the agent refuses a check of either that Pingtower assigns to it, even when enable_addons names the addon, and the API and MCP refuse to create one. A check of either stored before Release 1 is no longer assigned and shows paused with the reason local_only; move it into the agent’s config. Pingtower can still assign traceroute, portscan and securityupdates to an agent whose enable_addons lists them.

Sensors are the other half: continuous, kernel-level watchers of the box the agent runs on, new in 0.2.0.

Down from more than one place

Run the same check from three agents and write a rule with "fire_after": {"count": 2, "window_minutes": 5, "distinct_sources": true}. One probe’s bad network no longer pages you; two agreeing do.

In this section

InstallOne command on a fresh Linux box, after you have verified what you are about to run. ConfigureOne YAML file. The agent refuses to start on anything it does not understand, which is the point. httpcheckFetch a URL and time every stage of it separately, because a slow resolver and a slow server wake up different people. tcpcheckConnect to a port and say how long it took, with DNS timed apart from the connect. dnscheckResolve a name, optionally against a specific resolver, and check what came back. tlscertComplete a TLS handshake and report how long the leaf certificate has left. Reported on every run, so the threshold lives in a rule, not the agent. icmppingSend a few pings and report round-trip and loss. hostmetricsCPU, load, memory, swap and paging on the box the agent runs on. Unprivileged, Linux only, reads a handful of files under /proc. syntheticRun up to ten HTTP requests in order, carrying values from one response into the next, so a login, a token and the call that needs it are checked as one flow. grpccheckAsk a gRPC server whether it is serving, through the standard grpc.health.v1 Health/Check call, with connect, TLS and the call timed apart. websocketOpen a WebSocket, optionally send one text message, and check the first reply. The upgrade and the reply are timed apart. domainexpiryRead a registered domain's expiry date from its registry, over RDAP or WHOIS, and warn 30 days before it lapses. sshcheckOpen an SSH session with a key, optionally run one command, and time every stage. Key-based auth only. portscanScan a host's ports and compare against a baseline. Needs nmap. tracerouteTrace the path to a host and notice when it changes. Needs traceroute. logwatchTail a local file for a pattern. Counts matches, notices rotation, and never sends a line off the box. securityupdatesCount pending package updates on a Debian host, and whether it wants a reboot. Reads only; never installs anything. udpcheckSend one datagram to a UDP port and wait for the reply, retrying when one is lost. Runs on your own agents only. smtpcheck, imapcheck, popcheckCheck that a mail server greets, upgrades to TLS with a certificate that validates, and optionally accepts a login. One page for three addons. Runs on your own agents only. SensorsChecks run on a schedule. Sensors run continuously, subscribed to the kernel, and report the moment something happens on the box the agent runs on.
Last updated 3 Oct 2026 Report a problem with this page