The open-source standard for metrics, in plain English, and where it stops.
If you have ever looked at a graph of your system's CPU or request rate, there is a good chance Prometheus drew it. It is the open-source standard for metrics, and since version 3.0 it speaks OpenTelemetry natively. Here is what it is, and the honest limits.
What is Prometheus?
Prometheus is an open-source monitoring system and time-series database built for metrics: numbers sampled over time, like request rate, error count or memory use. It scrapes those numbers from your services on a schedule, stores them efficiently, and lets you query them with its own language, PromQL. It came out of SoundCloud in 2012, and in 2018 became the second project after Kubernetes to graduate from the CNCF. That lineage is why it is effectively the default for cloud-native metrics.
What changed in 3.0
Worth knowing if your last look was a while ago. Prometheus 3.0, released in November 2024, added native OpenTelemetry ingestion, so applications instrumented with any OTel SDK can push metrics straight to Prometheus with no collector in between, plus UTF-8 support so metric names keep their dots, a faster remote-write protocol, and a new UI. Prometheus and OpenTelemetry now work together rather than around each other.
What it does well
Purpose-built for metrics. Efficient storage, fast queries, and PromQL, which is genuinely powerful once it clicks.
The ecosystem default. Nearly every cloud-native tool exposes Prometheus-format metrics, and Grafana treats it as a first-class source.
Simple to run, hard to outgrow quickly. A single binary gets you a long way before you need anything else.
From the trenches
Ask anyone running Prometheus at scale what actually bit them and you get one answer before all others: cardinality, and the memory wall it drives you into. Each active series costs roughly one to three kilobytes of memory, so a sixteen-gigabyte instance is comfortable at a few million series and struggling well beyond that. The labels that blow the budget are the tempting ones: user IDs, session tokens, raw URL paths, container IDs, commit SHAs. Every unique value is a brand new series.
The quieter trap is churn. Pods that recreate on every deploy, autoscaling, and short-lived jobs all retire old label sets and mint new ones, so your series count climbs even when traffic is flat. And a sharp edge worth knowing: if you ship data to a long-term store with remote-write and that store goes unavailable, each endpoint can consume hundreds of megabytes of memory on its own. None of this is a reason to avoid Prometheus. It is a reason to treat labels as a budget, not a free-text field.
The honest ledger
Metrics only. Prometheus does not do logs or traces. It is one of three pillars, not the whole picture.
Long-term storage and scale need help. A single Prometheus is not built to hold years of data or span many clusters. That is what Thanos, Cortex and Mimir exist for.
Cardinality will bite you. Every unique label combination is a new series, and high-cardinality labels like user IDs can blow up memory fast. Discipline here is the difference between a calm Prometheus and a struggling one.
So, is Prometheus for you?
If you run modern infrastructure and you need metrics, the answer is almost certainly yes, and you are probably already using it through something else. Pair it with Grafana for dashboards, mind your cardinality, and reach for Thanos or Mimir when one instance is not enough.
What is the highest-cardinality mistake you have made in Prometheus? I collect these. Reply, or book a slot and tell me what you found.
|
Get the next one One signal a week. No noise. | |
|
If this was useful, Metrics & Mayhem sends one short, practical piece like it to IT operations leaders most weeks. No fluff, no vendor noise.
Prefer to start with the book? Read a free chapter. |
Sources / further reading
Prometheus project: prometheus.io
Announcing Prometheus 3.0: prometheus.io/blog
High cardinality in Prometheus, and how to fix it (Last9): last9.io
Optimising Prometheus resource consumption (Palark): palark.com


