Prometheus

Prometheus

Prometheus is the open-source monitoring and alerting system from the CNCF: it scrapes metrics from exporters, stores them in a time-series database and alerts via Alertmanager. Pair it with Grafana for dashboards. Free, Apache-2.0.

OCWindows
Size~121 MB
Version3.4.2
FreeLatest version: 3.15.0Actively developed

Prometheus is an open-source monitoring and alerting system for sysadmins, SREs and DevOps teams who need to collect metrics from Linux and Windows servers, containers, network gear and applications. When people search for Prometheus monitoring they usually mean the whole stack: the Prometheus server that scrapes and stores metrics, exporters that expose them, Alertmanager for notifications and Grafana for dashboards. Prometheus itself is free under the Apache-2.0 licence and is a graduated project of the Cloud Native Computing Foundation.

Prometheus pulls metrics over HTTP from targets every few seconds, stores them in its own time-series database and lets you query them with PromQL. Alert rules are evaluated inside Prometheus; Alertmanager groups, silences and routes the resulting alerts to email, Slack, PagerDuty or webhooks.

Prometheus at a glance

ItemDetails
Latest version3.15.0 (24 September 2026); long-term support branch 3.13.x
LicenceFree and open source, Apache-2.0
PlatformsLinux, Windows, macOS, FreeBSD and other BSDs, illumos, AIX; amd64, arm64 and more; official Docker image
DeveloperPrometheus Authors (CNCF graduated project)
Official websiteprometheus.io
Best forMetrics-based monitoring and alerting of servers, containers, Kubernetes and services

What it does

  • Scrapes metrics from HTTP endpoints (/metrics) on a schedule; targets come from static lists or service discovery (Kubernetes, Consul, DNS, EC2, Azure, file-based and others).
  • Stores data locally in an efficient time-series database; retention defaults to 15 days and can be limited by time or size.
  • PromQL query language for rates, percentiles, aggregations and predictions, used both in the built-in web UI and in Grafana.
  • Recording rules and alerting rules evaluated on the server, with Alertmanager handling routing, grouping, inhibition and silences.
  • Large exporter ecosystem: node_exporter for Linux/Unix hosts, windows_exporter for Windows, blackbox_exporter for HTTP/ICMP/TCP probes, SNMP exporter and many third-party ones.
  • Remote write and an OTLP receiver for sending data to long-term storage or receiving OpenTelemetry metrics.
  • Native histograms and, in 3.15, OpenMetrics 2.0 scraping, Unix socket scraping and runtime log-level changes.

How sysadmins use it

Monitor Linux servers with node_exporter

  1. Install node_exporter on each host (distribution package or official binary) and run it as a service. It listens on TCP 9100.
  2. Add the hosts to prometheus.yml:
    scrape_configs:
      - job_name: node
        static_configs:
          - targets: ['web01:9100', 'db01:9100']
  3. Validate and reload:
    promtool check config /etc/prometheus/prometheus.yml
    systemctl reload prometheus   # or send SIGHUP
  4. Open Status > Targets in the web UI (port 9090) and check that every target is UP.

Monitor Windows servers with windows_exporter

  1. Install the windows_exporter MSI (the project formerly called wmi_exporter; old guides that mention the “WMI exporter” mean this tool). It runs as a service and listens on TCP 9182. Choose collectors and open the firewall at install time:
    msiexec /i windows_exporter.msi --% ENABLED_COLLECTORS="cpu,logical_disk,physical_disk,memory,net,os,service,system" ADDLOCAL=FirewallException
  2. Add a job with targets such as 'fs01:9182' to prometheus.yml and reload.
  3. windows_exporter supports Windows Server 2016 and later and Windows 10/11 21H2 or later.

Alert on a full disk

groups:
  - name: disk
    rules:
      - alert: DiskAlmostFull
        expr: node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes < 0.10
        for: 15m
        labels:
          severity: warning
        annotations:
          summary: "Less than 10% free on {{ $labels.instance }} {{ $labels.mountpoint }}"

Reference the rule file under rule_files:, point alerting: at Alertmanager (TCP 9093) and configure receivers there.

Watch websites and certificates with blackbox_exporter

Run blackbox_exporter with an http_2xx module and scrape it with relabelling so each URL becomes a target. The probe_success and probe_ssl_earliest_cert_expiry metrics give you uptime and certificate-expiry alerts.

Install and first run

Linux. Use your distribution package or the official tarball: create a prometheus user, place the binaries in /usr/local/bin, the config in /etc/prometheus, data in /var/lib/prometheus, and write a systemd unit. With Docker:

docker run -d -p 9090:9090 -v /srv/prometheus:/etc/prometheus prom/prometheus

Windows. The official Windows build is a zip with prometheus.exe and promtool.exe, without a service installer. Run it with --config.file and wrap it with a service manager of your choice so it starts at boot.

macOS. Official darwin builds exist and Homebrew packages it; fine for testing, rarely used in production.

Gotchas.

  • Open TCP 9090 (Prometheus), 9093 (Alertmanager), 9100 (node_exporter) and 9182 (windows_exporter) only between the relevant hosts. Exporters have no authentication by default; restrict them by firewall or configure TLS and basic auth through the web config file.
  • Reloading over HTTP (POST /-/reload) only works when started with --web.enable-lifecycle.
  • Retention: in current 3.x releases set storage.tsdb.retention in the config file; the older --storage.tsdb.retention.time flag is deprecated but still works.
  • Plan disk for your series count: labels with unbounded values (user IDs, full URLs) explode cardinality and memory use.

Limitations

  • Metrics only. Logs need a separate tool such as Loki; traces need another backend.
  • A single Prometheus server is not clustered. High availability means running two identical servers; long-term, global storage needs remote write to Thanos, Mimir or similar.
  • Pull model: targets behind NAT or firewalls need an agent, a proxy or Pushgateway (meant only for batch jobs).
  • No built-in dashboards beyond a basic graph and table view — most teams add Grafana.
  • Configuration is YAML files; there is no GUI for adding hosts or alerts.

Prometheus vs alternatives

Zabbix offers agent-based monitoring with a web GUI, templates and built-in dashboards, which suits traditional server rooms; Prometheus is stronger for dynamic, containerised environments and ad-hoc PromQL analysis. Datadog and other SaaS tools remove the self-hosting work at a per-host cost. For logs next to your Prometheus metrics, Grafana Loki uses the same label model. For quick network-device discovery and up/down maps with a GUI, NetCrunch Tools is a lighter starting point.

FAQ

Is Prometheus monitoring free?

Yes. Prometheus, Alertmanager and the official exporters are free and open source under the Apache-2.0 licence, with no paid edition.

Prometheus vs Grafana — what is the difference?

Prometheus collects, stores and alerts on metrics; Grafana visualises data from Prometheus and many other sources. They are normally used together.

Can Prometheus monitor Windows servers?

Yes, with windows_exporter installed on each Windows machine. Prometheus itself can also run on Windows, although Linux is the usual host.

Prometheus vs Zabbix — which should I choose?

Choose Zabbix for classic infrastructure with a GUI, agents and templates; choose Prometheus for Kubernetes, containers, cloud services and teams comfortable with YAML and PromQL.

How do I install Prometheus?

Use a Linux package, the official binary with a systemd unit, or the prom/prometheus Docker image, then edit prometheus.yml and open port 9090.

Can Prometheus monitor Docker containers?

Yes. Scrape the Docker daemon’s metrics endpoint or run cAdvisor for per-container CPU, memory and network metrics; in Kubernetes use the built-in service discovery.

What is the Prometheus LTS release?

The project maintains long-term support branches alongside regular releases; 3.13.x is the current LTS line for teams that prefer fewer upgrades.

Last checked against official sources: 30 September 2026 (developer website: prometheus.io). Versions and licence terms change — confirm on the developer's site before deploying in production.

Other articles

Submit your application