Skip to main content

Metrics

Every project has a Metrics page in the dashboard (under Stack, after Scaling), and the same figures come from a terminal with snoutdata metrics. They answer the question you ask before putting more data or traffic on a database: how hard is it working now, and how close is it to its limits?

The server your database runs on reads each figure once a minute and keeps eight days of them. Each of your project's servers has its own figures:

  • Home: the project's own database server.
  • Node: a data node of a cluster, one row per node.
  • Replica: a node's replica, the copy that takes its place if the node is lost.

The page opens with a table of every server and its latest reading. Pick one to see its charts, and pick the window: the last hour (a point a minute), the last day (a point every 5 minutes) or the last week (a point every 35 minutes). On a day or a week each point is the mean of its minutes, except connections and replica lag, which show the highest minute so a short spike stays visible. Hover over a chart, or focus it and use the arrow keys, to read each point.

A gap in a chart is a stretch with no reading, such as while the project was paused. It is never drawn as zero.

What each figure means​

FigureWhat it measures
CPUThe share of the server's CPU limit used over the minute, from 0 to 100%. The limit is shown beside it in cores; a server with no limit of its own is measured against the whole machine.
MemoryMemory in use by the database server, including the files Postgres has cached, against its memory limit. Postgres uses spare memory as cache, so a high figure on its own is normal.
Disk read / writeBytes per second read from and written to disk. Reads that Postgres answers from memory do not count.
ConnectionsClient connections open to the database, against the number allowed (max_connections). Your plan's connection limit is enforced in front of the database; see Limits.
Commits / rollbacksTransactions committed and rolled back per second in your database. Each statement run outside a transaction counts as one.
StatementsStatements that finished per second, as counted by pg_stat_statements.
Mean statement timeHow long those statements took on average over the minute, measured inside Postgres: from when the server starts a statement to when it finishes it, without the network. Over a day or a week, each point weighs a busy minute more than a quiet one.
Replica lagHow far a node's replica is behind it, in seconds and in bytes of write-ahead log it has not yet written to its own disk. Shown on the node, not on the replica.
Second zone lagThe same for the copy in another zone that two-zone writes use. With two-zone writes on, a commit waits for this copy, so this lag stays near zero while it is connected.

Rates (CPU, disk, transactions, statements and their time) need two readings a minute apart, so the first minute after a server starts or moves has levels (memory, connections, lag) and no rates yet.

From a terminal​

snoutdata metrics [--ref REF] [--node REF] [--window hour|day|week] [--json]

For each server, every figure's latest reading and its minimum, mean and maximum over the window, taken from every minute in it. --node narrows it to one server; --json adds the series the dashboard draws. See the CLI reference.