Monitor any host and port, and assert on what answers
Databases, message queues, mail servers, custom services. A TCP monitor connects to host:port from 22 public locations or inside your own network, optionally sends data, and asserts on the response and the response time. Defined in TypeScript, deployed from CI, alerting built in.
Trusted by teams whose infrastructure is more than HTTP
“TCP checks are working nicely for our use case. We're using them to monitor some of our critical network services.”
An open port tells you the socket is up. Not that the service is.
Most port checks stop at the handshake. Checkly TCP monitors finish the conversation: send the payload your service expects, assert on the reply, and time each phase of the connection from every location you run it in.
A connection is not enough
A port that accepts a SYN can still be a dead service. Send a payload after the handshake and assert on what comes back: a PONG, a 220 banner, your own health string.
Latency, split into phases
Every run records DNS lookup, TCP connect, and data transfer separately, per location. Degrade at one threshold, fail at another, and see which phase moved.
Public edge or inside the VPC
Run from 22 public locations, or from a Checkly Agent inside your own network for the databases and brokers that were never meant to face the internet.
Monitor the infrastructure behind your endpoints
Your API monitor can pass while the database it depends on is refusing connections from half the world. Put a TCP monitor on every port your application needs and find out first.
Databases
Confirm Postgres, MySQL, or MongoDB accepts connections from outside the app tier, and how long the handshake takes from each region.
Caches and message queues
Send PING to Redis and assert on PONG. Verify RabbitMQ or Kafka brokers are listening before the consumers start timing out.
Mail servers
Open SMTP submission or IMAPS, assert the 220 greeting arrives, and watch response time so a slow relay is caught before the queue backs up.
Custom TCP services
Anything that speaks a line protocol. Send your own health-check payload and assert the response contains what your service should say.
Firewall and network rules
Flip "this request should fail" and a refused connection passes. Prove a port that must stay closed to the public still is, from 22 vantage points.
Internal services
Run the same monitor on a Checkly Agent inside your VPC to reach hosts that are not exposed to the internet at all.
One honest limit: some public locations run on AWS, which blocks outbound port 25. Monitor SMTP on 587 or 465, or run the monitor from a private location. For plain host reachability and packet loss, Checkly also has ICMP ping monitors.
Define, test, deploy. TCP monitoring as code
The monitor is a TypeScript construct in your repo. Test it from CI, preview the deploy, apply it. Terraform and Pulumi providers cover the teams that live there instead.
Define the monitor in TypeScript
A TcpMonitor construct takes a hostname, a port, optional data to send, and assertions on response time and response data. Set degraded and failure thresholds, pick locations or a private location, and add alert channels. It lives in your repo next to the service it watches.
Test it from CI
npx checkly test runs the monitor once from a Checkly location and reports pass or fail in the terminal. Put it in the pipeline that ships your infrastructure change and a broken port fails the build, not the on-call.
$ npx checkly test Running 2 checks in eu-west-1. src/__checks__/postgres.check.ts ✔ Postgres primary (86ms) src/__checks__/smtp.check.ts ✔ SMTP relay (241ms) 2 passed, 2 total
Deploy for continuous monitoring
deploy --preview shows exactly what will be created, updated, or deleted. deploy applies it. From then on the monitor runs on its schedule, retries on failure, and pages the channels you attached.
$ npx checkly deploy --preview Create: TcpMonitor: postgres-primary TcpMonitor: smtp-relay $ npx checkly deploy
Priced per monitor, not per run
TCP monitors are uptime monitors: 10 included on Hobby, 50 on Starter, 75 on Team, more in blocks of 25. A 30-second schedule costs the same as a daily one. See pricing.
Put a monitor on every port that matters
Write one TcpMonitor construct, run it from CI, deploy it. The next time a database stops accepting connections, you will know before the API errors do.
No credit card required.