Control · know before your customers do

Control

3 min read Original article ↗
turbolytics / Control Sign in Sign up free

Postgres and pipeline monitoring

Know when Postgres or a pipeline breaks, before your customers do.

Is every Postgres you run healthy right now? Control gives each database one status: serving, near limit, down or unreachable. You see the database that needs you, not a wall of charts.

A database in Control: serving, with its availability and latency, sessions and transactions, connections against max_connections and size, and its stalest table
A database in Control. See it live →

A single view for the whole fleet.

Data, SRE and ops teams run one database per customer, region or service. Control lists every database in your fleet.

Check 1

Is it reachable?

dbhealth connects to your database every minute. Control shows the share of probes that answered, and marks each one that failed.

Is it available: 100% of probes answered over 24 hours, 0 failed of 1430 received, 1440 expected

Check 2

Is it doing its work successfully?

Transactions per second, with rollbacks and deadlocks beside them. A database can answer a probe and still fail the work you give it.

Trouble: rollbacks and deadlocks a second over 24 hours, rollbacks under one a second and deadlocks flat at zero

Check 3

How long is the work taking?

The round trip of each probe, and the longest query running now.

How long does it take: one probe's round trip in milliseconds over 24 hours, near 5 ms with two spikes

Check 4

Does it have room to keep working?

Connections against the maximum, size on disk, replication lag and the oldest open transaction. The status turns near limit at 90% of max_connections.

Connections in use over 24 hours, rising and falling with the day, with waiting connections and the oldest transaction

Check 5

Are its tables current?

The newest row in each table you name, stalest first. Your cloud console shows CPU. It won't tell you orders stopped getting rows two hours ago. Data quality →

Each watched table with the age of its newest row, rows, size, dead rows and last vacuum, stalest first

Easy to start.

Three steps, about two minutes.

  1. Sign up for a free account.

    Sign up free

  2. Generate a key.

    On your Keys page. Your browser makes it, and Control keeps only the public half.

  3. Start dbhealth.

    docker run -d \
      -e DBHEALTH_DSN='postgres://dbhealth:…@pg:5432/billing' \
      -e DBHEALTH_KEY="$DBHEALTH_KEY" \
      turbolytics/dbhealth:latest run

    Your database appears on its first report.

Statuses, not metrics. No dashboard to build.

Datadog and Grafana give you numbers, then you build the dashboard and choose every threshold. Control arrives knowing what near limit means, and gives each database a status: serving, near limit, down or unreachable. It notices silence too: a database is unreachable when its reports stop, rather than a flat line on a chart.

Built for the minute.

dbhealth sends one signed report a minute for each database, over outbound HTTPS. The report format, TurboStats, was built for devices on cellular links, where every byte costs. Small reports keep the cost of watching a fleet predictable: a database costs the same each month, however busy it is.

Read-only, outbound only, no rows.

Every minute, dbhealth runs one SELECT 1, six catalog reads, and one max() per table you name. It sends counts, timings and table names. It never sends rows, query text or your connection string. It is MIT licensed: read the source.

Free for one cluster.

Free covers 1 cluster: 2 endpoints, 3 watched tables, 3 pipelines, 2 alerts and 7 days of history. Paid plans cover up to 50 clusters, with 31 days of history.

Running a larger fleet? Pick the plan that covers your clusters, or talk to us about fleet pricing. Pricing →

Running SQLFlow or Kafka Connect? Control watches pipelines and connector tasks too: a pipeline is up, idle, unknown, degraded, failed, unreachable or exited. SQLFlow →

Free covers 1 cluster: 2 endpoints, 3 watched tables, 3 pipelines, 2 alerts and 7 days of history. Sign up, create a key, and get a private dashboard for your own pipelines and databases.