Skip to content

Commit e20e2a2

Browse files
Fix pg.instanode.dev monitor: use Upptime tcp-ping schema (#4)
The previous config probed `https://pg.instanode.dev:5432` with `method: TCP_PING` + `tcpHostPort`. Neither of those keys exists in the Upptime config schema (`UpptimeConfig.sites[]` in upptime/uptime-monitor `src/interfaces.ts`), so the action ignored them and fell through to curl, which tried a TLS handshake against the raw Postgres wire-protocol port and logged: Curl attempt 1/3 returned HTTP 0: Request failed: SSL connect error Error does not appear transient, skipping further retries The endpoint itself is healthy. Port 5432 on the public LoadBalancer IP (152.42.154.144) is exposed by `ingress-nginx` via the `tcp-services` ConfigMap, routed to the `instant-pg-proxy` Service in the `instant` namespace, which fronts customer Postgres pools. `nc -zv pg.instanode.dev 5432` succeeds, and `pg-proxy` logs show both replicas listening. Switch to Upptime's documented raw-TCP probe shape: check: "tcp-ping" url: pg.instanode.dev port: 5432 No HTTPS scheme, no synthetic `expectedStatusCodes` fallback list, no `tcpHostPort` (which Upptime doesn't read). The next Uptime CI run should record an "up" status for this site. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 98278e4 commit e20e2a2

1 file changed

Lines changed: 16 additions & 12 deletions

File tree

.upptimerc.yml

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,22 @@ sites:
8282
- 405
8383

8484
# ─── Customer-facing TCP surfaces ─────────────────────────────────────────
85-
- name: Customer Postgres (pg.instanode.dev TLS handshake)
86-
url: https://pg.instanode.dev:5432
87-
method: TCP_PING
88-
tcpHostPort: "pg.instanode.dev:5432"
89-
# Fallbacks if TCP_PING isn't honored by the current Upptime action —
90-
# probing :5432 over HTTPS surfaces "not really HTTP" codes which we
91-
# treat as "the port is open" = up.
92-
expectedStatusCodes:
93-
- 0
94-
- 400
95-
- 401
96-
- 426
85+
# Postgres speaks its own wire protocol (clients send a StartupMessage /
86+
# SSLRequest before any TLS handshake), so :5432 is NOT an HTTPS port and
87+
# cannot be probed with curl. Upptime's official syntax for raw TCP checks
88+
# is `check: tcp-ping` with a bare hostname plus a separate `port:` field.
89+
# Schema reference:
90+
# https://github.com/upptime/uptime-monitor/blob/master/src/interfaces.ts
91+
# The previous config used `method: TCP_PING` + an https://...:5432 URL,
92+
# which Upptime did not recognize — it fell through to curl, attempted a
93+
# TLS handshake against the raw Postgres port, and recorded a permanent
94+
# "SSL connect error". The endpoint itself is healthy: TCP 5432 on
95+
# 152.42.154.144 is exposed by ingress-nginx → instant-pg-proxy in the
96+
# cluster, and `nc -zv pg.instanode.dev 5432` succeeds.
97+
- name: Customer Postgres (pg.instanode.dev TCP)
98+
check: "tcp-ping"
99+
url: pg.instanode.dev
100+
port: 5432
97101

98102
- name: OpenAPI spec (api.instanode.dev/openapi.json)
99103
url: https://api.instanode.dev/openapi.json

0 commit comments

Comments
 (0)