mrkeyoor.com_
Sat 31 Oct 21:50 UTC
Dataevaluationupdated 05 Oct 2026

prometheus review

Prometheus is a monitoring server that scrapes numeric metrics from configured targets, stores them as labeled time series, and lets operators query them with PromQL. It handles collection and rule evaluation on your own infrastructure, without requiring a hosted monitoring service.

+94stars / 7d
Verdict

Our Prometheus run installed 786 packages and built successfully, but 3 of 149 Go test results failed after 587 seconds. Use the released binary or container when you want the standard PromQL and scrape model on infrastructure you control. Choose a clustered alternative, or add remote storage, when one server is an unacceptable durability boundary.

We ran it

Lab card: what happened when we ran prometheusScreenshot of prometheus (prometheus.io)
Install✓ · 234s786 packages
Build✓ · 481s
Tests✗ · 587s146 passed · 3 failed of 149 (go test)
Repo1685 files~436,548 lines of source · 29.5 MB · 15 CI workflows · Dockerfile

Answers from our run

Does prometheus build from source?

Dependencies installed in 234 seconds (786 packages), and the build succeeded in 481 seconds. We cloned commit 961c9ba into a clean Debian container with 3 CPUs and no project-specific setup.

Do prometheus's tests pass?

No. The project's own test command finished in 587 seconds and reported 146 passed, 3 failed (go test).

Who should not use prometheus?

Teams requiring clustered, replicated local storage out of the box: the storage documentation says the built-in database is neither clustered nor replicated.

What are the alternatives to prometheus?

VictoriaMetrics, Thanos, Grafana Mimir. Our Prometheus run installed 786 packages and built successfully, but 3 of 149 Go test results failed after 587 seconds.

Setup3/5Short binary path, 234-second install and 481-second source build
Docs5/5Clear install, build, storage, query, and operations guidance
Community5/566,366 stars, an October 4 push, and current issue activity
Maturity5/5v3.15.0 shipped in September with a long operational history

Discussed on

  1. hnLaunch HN: Prometheus (YC W19) – Remove CO2 from Air and Turn It into Gasoline1,250 points
  2. hnGrafana Loki – Like Prometheus, but for logs444 points
  3. hnWriting a Mini-CDN to Learn Nginx/Prometheus/Grafana/Lua312 points
  4. hnPrometheus: An open-source service monitoring system and time series database287 points
  5. hnPrometheus 2.0274 points

Who it’s for

Platform teams that can expose HTTP metrics and want to own collection, queries, and retention.
Operators who need PromQL, recording rules, alert rules, and broad service discovery support.
Small and medium deployments where one autonomous server is an acceptable storage boundary.
Larger organizations prepared to pair Prometheus with remote storage or a compatible clustered system.

Who it’s NOT for

Teams requiring clustered, replicated local storage out of the box: the storage documentation says the built-in database is neither clustered nor replicated.
Developers seeking an embeddable Go library: the README says this repository builds a standalone program and its internal APIs may break.
Source contributors expecting a Go-only build: the full build also requires the specified Node.js version and npm 10 or newer.
Operators planning to keep the database on NFS or AWS EFS: the storage guide warns that NFS is unsupported because corruption can be unrecoverable.
Teams that require a green fresh-container suite before adoption: 3 of 149 Go test results failed in our sandbox.

Setup reality

Our sandbox installed commit 961c9ba in 234 seconds, pulling 786 packages. The build passed in 481 seconds. Tests failed after 587 seconds: 146 passed and 3 failed out of 149 Go test results. The log tail shows successful utility, web, and API packages followed by FAIL; it does not show the failed test names or their cause.

A basic local server needs a prometheus.yml file and reachable HTTP metrics targets. Scraping Prometheus itself needs no hosted credential. Cloud service discovery, protected targets, alert delivery, and remote storage add their own endpoints and credentials according to the systems you connect.

Released binaries and container images are the shortest paths. Building from source needs Go, Node.js, and npm 10 or newer. A plain go install must run from the repository root to find static assets and omits the React UI unless you build assets; the README also says make docker is for CI and does not produce a fully working local image.

One server collects, stores, queries, and evaluates rules

Our 29.5 MB checkout contained Prometheus's scraper, local time-series database, PromQL engine, and rule evaluator. The server pulls metrics from configured HTTP targets and stores each observation under a metric name plus labels. Those parts share one configuration model instead of arriving as separate services.

The fit is strongest when your applications already expose metrics and a single Prometheus server can cover a failure domain. The repository we measured is substantial, with 1,685 files, about 436,548 lines of source, and a 29.5 MB checkout at commit 961c9ba. Most users should start from the released binary or official container. Building this codebase is contributor work, not a prerequisite for monitoring a server.

Prometheus discovers targets through static configuration or service discovery and normally pulls samples on an interval. Batch jobs can push through an intermediary gateway, while remote write connects the server to external storage. This model rewards teams that control their network paths and metric endpoints. If inbound scraping cannot reach a workload, you need to solve that path or choose one of the supported intermediary routes.

Local storage is neither clustered nor replicated

Prometheus deliberately keeps each server autonomous. Its on-disk database uses a write-ahead log and compacted blocks, and the official storage guide says local data is neither clustered nor replicated. A drive or node failure can therefore take the local history with it. Snapshots are the documented backup route, and remote read or write integrations are available when the built-in boundary is too narrow.

That storage choice keeps the first deployment understandable, yet it puts capacity and durability decisions on the operator. The 3-CPU, 8 GB sandbox used for our 2026-10-04 run proves only that the repository could install and build within that environment. It says nothing about how many active series your production server can ingest, how much memory your queries will consume, or how long your chosen disk will retain data.

Filesystem choice is another hard boundary. The storage documentation warns against NFS, including AWS EFS, because unsupported filesystem behavior can lead to unrecoverable corruption. It also notes that compaction temporarily needs room for old and new blocks together. A team that wants storage to behave like a shared, replicated service should budget for a remote backend or assess VictoriaMetrics, Thanos, or Grafana Mimir instead of treating local TSDB flags as a cluster.

What happened when we ran it

Our sandbox installed commit 961c9ba in 234 seconds and pulled 786 packages. The build then succeeded in 481 seconds. This was a fresh, unprivileged Debian container with 3 CPUs, 8 GB of RAM, Go 1.24, and no secrets. Those figures describe repository setup and compilation only; we did not run an ingestion or query benchmark.

The Go test step failed after 587 seconds. Its result was 146 passed and 3 failed out of 149. The final lines show successful packages including util/netconnlimit, util/notifications, web, and web/api/v1, then the overall FAIL. The supplied tail does not identify the three failures or print their error messages, so blaming missing system packages, timing, or a code defect would be speculation.

A failed full suite matters most to contributors and teams building their own binaries. It does not erase the successful 481-second build, and it does not prove that release artifacts are broken. It does mean commit 961c9ba failed the clean-container test gate we ran. Anyone carrying a fork should reproduce the suite in the intended build image and inspect the complete failure output before merging local changes.

A source build crosses Go and the React toolchain

The README requires npm 10 or newer for the full source path, alongside the Go and Node.js versions specified in the repository. go install builds the Prometheus and promtool binaries, but the resulting program expects static web assets under the repository and excludes the React UI unless assets are built separately. make build compiles the web assets into the binaries so they can run elsewhere.

Our 234-second install and 481-second build make the cost visible: this is not a tiny Go command with a negligible front end. The repository does provide a Dockerfile and 15 CI workflow files, though its README warns that make docker is intended for CI and will not make a fully working image locally. For deployment, the published binary or image avoids rebuilding two toolchains and gives you the release packaging the maintainers expect users to run.

The README also discourages importing this repository as a Go library. Prometheus publishes some reusable pieces elsewhere, while internal APIs in this standalone program may change between minor product releases. If your application needs metrics instrumentation, use the client library. If it needs a metrics server, run Prometheus as a service and talk to its supported HTTP interfaces.

October activity shows maintenance, not a quiet issue queue

GitHub recorded a push on 2026-10-04, one day before this review, and release v3.15.0 was published on September 25. The repository had 66,366 stars and 945 open issues and pull requests. A current report about alerting rules changing state was opened and discussed on October 4, while another current report covers IPv6 zone handling. That is active maintenance alongside a large queue, rather than evidence that every edge case is settled.

Prometheus earns a strong recommendation for teams that want its pull model, PromQL, and local operational control. The condition is concrete: one server owns local durability unless you add another storage layer. Our build passed, our 149-result test run did not, and the project gives source builders enough documentation to investigate that gap. For ordinary operators, start with v3.15.0's published artifact and spend the saved build time on retention, backups, and target design.

Alternatives

ProjectWhat it isPick it when
VictoriaMetrics gh↗A metrics database with Prometheus-compatible ingestion and query support.pick this instead when efficient long-retention storage matters more than using the Prometheus server itself.
ThanosA set of components that adds a global query view and object-storage retention to Prometheus deployments.pick this instead when you already run Prometheus and need a durable view across several servers.
Grafana MimirA horizontally scalable metrics backend that accepts Prometheus remote write.pick this instead when multi-tenant, clustered metrics storage is a firm requirement.

What people are saying

  1. [github-trending] prometheus/prometheus
  2. [github-trending] prometheus/alertmanager

Sources

  1. Prometheus README
  2. Prometheus repository
  3. Prometheus 3.15.0 release
  4. Prometheus getting started guide
  5. Prometheus storage documentation
  6. Alerting rule state issue 19909

More data reviews

jq · pgx · HowToLiveLonger · ip2region · dbdelve · litestream · the whole board →