A TCP monitor opens a connection to a host and port on a schedule. If the connection can't be made within the timeout, the check fails. Use it for services that don't speak HTTP: a database, a mail server, SSH, an MQTT broker or a game server.
Settings#
| Field | Values | Default |
|---|---|---|
host |
A public hostname or IP address | Required |
port |
1 to 65535 | Required |
interval_sec |
From your plan's minimum up to 86,400 | 300 on Free, 60 on paid plans |
timeout_ms |
1,000 to 30,000 | 10,000 |
fail_threshold |
Failed checks in a row before the monitor is down: 1 to 10 | 2 |
A TCP check only confirms that the port accepts connections. It doesn't log in or send a query. To check that a service actually works, expose a health URL and use a Keyword monitor, or run a test from a cron job and report it with a heartbeat.
Common ports#
| Service | Port |
|---|---|
| SSH | 22 |
| SMTP (submission) | 587 |
| MySQL | 3306 |
| PostgreSQL | 5432 |
| Redis | 6379 |
| MQTT | 1883 |
How down and up work#
Like HTTP monitors, a failed check that is below the fail threshold is retried after about 20 seconds. When fail_threshold checks in a row fail, the monitor goes down, an incident opens and the escalation policy starts. The first passing check resolves the incident.
Private and local addresses are refused, so the port must be reachable from the internet. Allow incoming connections from Edesy OnCall in your firewall.
FAQ#
Can OnCall ping a server (ICMP)? No. Use a TCP monitor on a port the server has open, such as 22 or 443.
Does a TCP monitor check my database is healthy? It checks that the port accepts connections. For a deeper check, run a query from a script and report the result to a heartbeat monitor.
Can I monitor a port on my office network? Only if it is reachable from the internet. Private addresses are refused.