Switching from UptimeRobot? Import your monitors in one click with a read-only API key.Start free →
  1. Home
  2. Monitoring
  3. TCP monitoring

TCP monitoring: is the service still accepting connections?

Open a TCP connection to a host and port on a schedule and record how long the handshake takes. It is the same check as port monitoring, described for people who search for it as TCP.

  • 30 monitors free
  • No credit card
  • Failures confirmed from other regions
mail.clienta.com:25TCP connect · handshake only
Up
  • Amsterdam19msopen
  • London28msopen
  • Connect time19 ms
  • Port25
  • Timeout10 s

Illustrative example

Try it

Check it now, in your browser

No account. TCP monitoring: type a target and see roughly what it looks at. Nothing you type is stored.

A browser cannot open raw TCP, UDP or ICMP connections, and the public check API only speaks HTTP(S). So instead of a fake result, here is the command a monitor automates: it runs it on a schedule from several regions and confirms failures.

The result appears here.

Create this monitor

What it checks

What a tcp monitor looks at

Handshake as the verdict

The check is up when the three-way handshake completes. Nothing is sent after that, so the service is judged on whether it accepts connections, not on what it says.

Refused versus silent

A refused connection means the host is alive and the service is not listening. A timeout means packets vanish on the way. The incident names which one you have.

Any port you choose

Mail on 25, 465 or 993, SSH on 22, MySQL on 3306, Postgres on 5432, Redis on 6379, or a custom admin port. Public hosts only; private ranges are refused.

Connect time history

Each handshake time is stored, so a database host that takes 400 ms to accept connections shows up on the chart before it starts refusing them.

Alerts

TCP monitoring: what an alert looks like

The same event arrives as an e-mail, a Telegram message or a Slack card. This is the wording the channels send; the host, times and numbers are made up.

To [email protected]

Subject [DOWN] mail.clienta.com:25 — Connection refused on mail.clienta.com:25

DOWN

mail.clienta.com:25

mail.clienta.com:25 · Connection refused on mail.clienta.com:25 · confirmed from Amsterdam (AMS), London (LON)

ErrorConnection refused on mail.clienta.com:25
Confirmed byAmsterdam (AMS), London (LON)
Since14:02:11 UTC
Targetmail.clienta.com:25
Next stepCheck the server / hosting panel. Acknowledge so the team knows you are on it.

AcknowledgeOpen incident

Tenium · checked from Amsterdam · 14:02 UTC

Tenium alerts

🔴 DOWN · mail.clienta.com:25 · Connection refused on mail.clienta.com:25 · confirmed from Amsterdam (AMS), London (LON)

TTenium APP 2:02 PM

DOWN · mail.clienta.com:25
mail.clienta.com:25 · Connection refused on mail.clienta.com:25 · confirmed from Amsterdam (AMS), London (LON)

  • Error: Connection refused on mail.clienta.com:25
  • Confirmed by: Amsterdam (AMS), London (LON)
  • Target: mail.clienta.com:25

AcknowledgeOpen incident

Check the server / hosting panel. Acknowledge so the team knows you are on it. · checked from Amsterdam

TCP monitoring: e-mail, Discord and Google Chat work on every plan; Slack, Telegram, Teams and Mattermost start on Starter. There are no SMS or voice-call alerts.

Response time

Response time with a threshold

Every check stores how long the response took. TCP monitoring: drag the threshold and see when a slow-response alert would have fired.

Response time Threshold illustrative data
Response time with a threshold. Illustrative data. 050100150200 Threshold 120 ms 00:0006:0012:0018:0024:00 Response time (ms)
Rule. TCP monitoring: the alert fires when the average of the last 3 checks is above the threshold (Pro and Agency).
Speed

How fast you find out

Pick a plan to see its check interval and how long a failure takes to reach you, including the confirmation round.

Checks every30 s
On average you hear after15 s
At worst90 s
Checks everyConfirmation window (up to 60 s)

TCP monitoring: a failure lands at a random moment between two checks, so on average you wait half an interval, and the worst case is a whole interval plus the confirmation window. A single failing region is not enough: all two regions must agree before an incident opens. The other regions are asked straight away, and we allow up to 60 seconds for the answers.

Setup

How to set up tcp monitoring in 30 seconds

1

Enter the target

Add the hostname or public IP and the TCP port, and Tenium fills in a sensible timeout and default confirmation settings.

2

Pick an interval

Fastest check interval: 30 s on Pro and Agency, 1 min on Starter, 5 min on Free. Slower intervals are available on every plan.

3

Choose alert contacts

Choose who is told. Email, Discord and Google Chat work on every plan, Slack, Telegram, Teams and Mattermost start on Starter, webhooks on Pro.

4

Save

The first check runs within seconds. If a check ever fails, other regions re-check it before an incident opens, so one bad route does not page you.

Failure modes

What each error means

This is the text an incident shows in its Error line, the usual cause, and the first thing to look at.

ECONNREFUSEDConnection refused on mail.clienta.com:25

The host is up but nothing is listening on the port: the service crashed or was never started. The fastest failure to diagnose.

Shown as: Connection refused on mail.clienta.com:25

TIMEOUTTimeout after 10 s connecting to mail.clienta.com:25

The SYN got no answer. A firewall dropping packets, an overloaded host, or a security group that lost our checker’s address.

Shown as: Timeout after 10 s connecting to mail.clienta.com:25

EHOSTUNREACHHost unreachable

There is no route to the host: a network outage or a routing change between a region and your provider.

Shown as: Host unreachable

ECONNRESETConnection reset by peer

The host accepted the connection and killed it at once, often a connection limit or a rate-limiting rule.

Shown as: Connection reset by peer

ENOTFOUNDDNS lookup failed for mail.clienta.com

The name does not resolve. Check the record before blaming the service.

Shown as: DNS lookup failed for mail.clienta.com

Plans

TCP monitoring by plan

Free
$0/mo
Starter
$7/mo
Pro
$29/mo
Agency
$59/mo
Available✓✓✓✓
Monitors301003001000
Fastest interval5 min1 min30 s30 s
Regions1222
Custom headers——✓✓
Response-time alerts——✓✓
Escalation to a second contact——✓✓
Status pages1310Unlimited

Full pricing

Why a handshake is a useful, narrow signal

A TCP monitor does one thing: it resolves the hostname, refuses private addresses, opens a connection to the port you chose and stops the clock when the handshake completes. It sends no bytes afterwards and reads nothing back. That makes it equally valid for a mail server, a database, a game server or an SSH bastion, because none of them need to be spoken to in their own language.

The narrowness is also the limit. A database that accepts connections but is stuck replaying its log still passes. Treat a TCP check as the first line, "something is listening", and add a higher-level check where one exists: an HTTP check for a web app, a keyword check for a page that must render, a DNS check for a name server.

Ports people monitor, and what a failure usually means

The same three outcomes appear on every port, and they point in different directions. Use the table of causes below as a starting order for the investigation, not as a verdict.

  • Connection refused: the host is up and the service is not listening. The process crashed, was stopped by a deploy, or binds to localhost only after a config change.
  • Timeout: nothing came back. Think firewall or security group first, especially after an address change on the checker side (see the checker IP list), then an overloaded host.
  • Reset by peer: the service accepted and dropped the connection at once. Connection limits, fail2ban-style rules and rate limiters behave like this.
  • Handshake slow but successful: the chart climbs before anything fails. A database host with exhausted backlog slots often looks like this for hours.

Intervals, regions and plans

TCP checks are available on every plan. Free runs them every 5 min, Starter every 1 min, and Pro and Agency every 30 s. A failure is re-checked from the other live regions (2 regions today) before an incident opens, which matters more for TCP than for HTTP: transit trouble between one region and your provider looks exactly like a dead service from that one region.

Exposing a database port to the whole internet just to monitor it is not a good trade. Prefer to monitor the public service in front of it, and use an allow-list that includes the checker addresses only for ports that are meant to be public, such as SMTP.

TCP monitoring questions

Is TCP monitoring different from port monitoring?

No. It is the same check under the name many people search for. The [port monitoring page](/monitoring/port) covers the same feature with database examples.

Can it check that a service answers correctly?

Not at the TCP level. It proves the port accepts connections. For protocol-level proof use an HTTP, keyword or DNS check, or a heartbeat sent by the service itself.

Does it work for UDP services?

No, UDP has no handshake. Use the separate [UDP monitor](/monitoring/udp), which sends a probe and waits for any reply.

Can I monitor a private IP or a service behind a VPN?

No. Private ranges are refused because the checker regions cannot reach them. Use a heartbeat that the internal service sends to Tenium instead.

Start tcp monitoring free

30 monitors on the Free plan, no card needed, with failures confirmed from other regions (2 regions live today). Upgrade when the client list grows.