Skip to content
Nominal

Monitors / TCP

TCP

Dial a host and port. Optionally write a payload after connect.

How it works

The probe opens a TCP connection. If you set a request body, it is written after the socket is up and any reply is stored as [BODY]. Use this for databases that are not MySQL/Postgres/Redis, mail ports, or custom protocols.

Target

host:port, or a URL such as tcp://db.example.com:5432. IPv6 must be bracketed: [2001:db8::1]:5432.

tcp://db.example.com:5432

Type fields

FieldWhat it does
request_bodyOptional payload written after connect. The reply, if any, is [BODY].
proxy_urlHTTP or SOCKS proxy for the outbound dial.

Placeholders

Available on this type. See conditions for operators and pat() / has() / len() / any().

[CONNECTED] [RESPONSE_TIME] [IP] [BODY] [DOMAIN_EXPIRATION]

Defaults

New monitors of this type start with:

[CONNECTED] == true[RESPONSE_TIME] < 50

Example conditions

[CONNECTED] == true[RESPONSE_TIME] < 200

GraphQL

type is Tcp. Same fields as the admin, camelCase in the input (intervalSeconds, requestBody, probeIds).

mutation {
  createMonitor(input: {
    name: "Postgres port"
    type: Tcp
    target: "tcp://db.example.com:5432"
    conditions: ["[CONNECTED] == true"]
  }) { id }
}

Terraform

Resource is nominal_monitor from returnearly/nominal. type is Tcp. Shared arguments match the shared fields in snake_case (name, target, interval_seconds, probe_ids, channel_ids). Omitted conditions use the type defaults.

Type arguments: request_body, proxy_url. proxy_url is sensitive.

resource "nominal_monitor" "postgres_port" {
  name       = "Postgres port"
  type       = "Tcp"
  target     = "tcp://db.example.com:5432"
  conditions = ["[CONNECTED] == true"]
}