FR
live

Grafana, Prometheus, and Loki Replace Datadog for the Price of an Old PC Under Your Desk

Datadog charges $15 per host per month for infrastructure, $31 for APM, and $0.10 per gigabyte of ingested logs. Grafana, Prometheus, Loki, and node_exporter deliver the same coverage on a single Docker Compose stack, on Linux or Windows, for the cost of hardware and electricity.

Grafana, Prometheus, and Loki replace Datadog for the price of an old PC under your desk — ETTAYEB illustration

On July 10, 2026, Prometheus shipped version 3.13.1, a patch release eleven days after 3.13.0 went out. Grafana followed with 13.1.1 on July 21, its second maintenance release of the 13.x line. Loki published 3.6.13 on July 24 while the 3.7 branch reached its fourth iteration. Three separate projects, one release cadence, and one shared capability: covering what Datadog charges $15 per host per month just for infrastructure monitoring.

By mid-2026, the Grafana + Prometheus + Loki stack has become the most coherent open-source answer to SaaS observability platforms. It does not require a Kubernetes cluster or a dedicated ops team to get started — a Docker Compose file on a Linux box, one metrics exporter per host, and you have a dashboard that matches a Datadog Pro account.

The Datadog bill in 2026

Datadog’s model is pricing-first. As of July 2026, the rate card reads:

  • Infrastructure Monitoring — $15 per host per month, billed annually, or $18 on-demand. Covers 1,000+ integrations and core metrics.
  • APM — $31 per host per month bundled with Infrastructure, $36 standalone. APM Enterprise reaches $47 per host.
  • Log Management — $0.10 per ingested gigabyte, with a default 15-day retention for on-demand accounts.
  • Continuous Profiler — $12 per host, plus $2 per additional container beyond the included four.

A typical homelab of five machines (one main server, two mini PCs, a NAS, and a build box) with APM would cost (15 + 31) × 5 = $230 per month, or $2,760 per year, logs not included. Scale to ten nodes and you are looking at $5,520 per year. At that rate, even a brand-new Intel N305 at $250 with 16 GB of RAM pays for itself in two months.

And Datadog has no incentive to drop prices: Gartner named it a Leader in the 2026 Magic Quadrant for Observability Platforms, and the company just added Bits AI Agents — a conversational AI assistant that answers infrastructure questions in plain English. The strategy is straightforward: more value, not lower cost.

What the Grafana stack covers

The Grafana/Prometheus/Loki trinity did not appear from nowhere. Prometheus was born at SoundCloud in 2012, joined the CNCF in 2016 as the second hosted project after Kubernetes, and passed 65,000 GitHub stars by July 2026. Grafana has been around since 2014 and now holds 75,000 stars. Loki, the youngest of the three, was designed as the logging counterpart to Prometheus — same label-based indexing model, same compressed storage philosophy, same PromQL-inspired query language.

Together, the three projects cover exactly the triad that a SaaS platform charges a premium for:

  • Metrics — Prometheus scrapes /metrics endpoints from every service every 15 to 60 seconds. node_exporter exposes CPU, RAM, disk, network, sensor temperatures, and systemd statistics. Once the data is in the time-series database, PromQL enables queries like rate(node_cpu_seconds_total{mode="idle"}[5m]) to track real-time CPU utilization.
  • Logs — Loki ingests logs via Promtail or Grafana Alloy, compresses them into chunks, and indexes them by labels only (not by content). The result: a 10× to 50× storage reduction compared to Elasticsearch for equivalent log volume. LogQL lets you filter, aggregate, and transform logs using the same syntax as PromQL.
  • Dashboards — Grafana connects to both as native data sources, with no extra plugins needed. Dashboards export as JSON and are shared on grafana.com/dashboards, where the community maintains thousands of ready-to-import templates, including a Node Exporter Full dashboard covering 90% of homelab needs in one click.

The fourth pillar — distributed traces — is handled by Grafana Tempo, also open-source and also insertable into the same docker-compose.yml. Tempo is not included in this article to keep the stack at three services, but the mechanism is identical.

A docker-compose that works

Here is the minimal stack for a homelab. It assumes a ./config/ directory with config files alongside the compose file, and exposes Grafana on port 3000.

yaml
services:
  prometheus:
    image: prom/prometheus:v3.13.1
    container_name: prometheus
    volumes:
      - ./config/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--storage.tsdb.retention.time=30d'
    restart: always

  node_exporter:
    image: quay.io/prometheus/node-exporter:v1.10.2
    container_name: node_exporter
    pid: host
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.rootfs=/rootfs'
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--collector.systemd'
      - '--collector.processes'
    restart: always

  loki:
    image: grafana/loki:3.7.4
    container_name: loki
    volumes:
      - ./config/loki-config.yml:/etc/loki/local-config.yaml
      - loki_data:/loki
    command: -config.file=/etc/loki/local-config.yaml
    restart: always

  promtail:
    image: grafana/promtail:3.7.4
    container_name: promtail
    volumes:
      - ./config/promtail-config.yml:/etc/promtail/config.yml
      - /var/log:/var/log:ro
      - /var/lib/docker/containers:/var/lib/docker/containers:ro
    command: -config.file=/etc/promtail/config.yml
    restart: always

  grafana:
    image: grafana/grafana:13.1.1
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=changeme
    restart: always

volumes:
  prometheus_data:
  loki_data:
  grafana_data:

The minimal Prometheus config (config/prometheus.yml) scrapes node_exporter and Prometheus itself every 15 seconds:

yaml
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'node'
    static_configs:
      - targets: ['node_exporter:9100']

Five containers, 300 MB of RAM at idle before any log ingestion, and a disk footprint that varies with data volume — budget 2 to 4 GB per month for the metrics of a 5-machine homelab, and 5 to 20 GB per month for logs depending on how verbose your services are.

To add another host, install node_exporter on the remote machine and add its target to prometheus.yml. No license key, no pricing tier, no marginal cost calculation.

Alerts that warn you before your users do

Prometheus’s real strength is not collection but its built-in alerting engine. Alert rules are written in PromQL inside a YAML file, and Alertmanager handles routing, grouping, and silencing:

yaml
groups:
  - name: homelab
    rules:
      - alert: HighCPUUsage
        expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "CPU usage above 80% for 10 minutes on {{ $labels.instance }}"
      - alert: DiskFillingUp
        expr: (node_filesystem_avail_bytes / node_filesystem_size_bytes) < 0.10
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "Disk {{ $labels.mountpoint }} below 10% free on {{ $labels.instance }}"
      - alert: ServiceDown
        expr: up == 0
        for: 2m
        labels:
          severity: critical
        annotations:
          summary: "{{ $labels.job }} is down on {{ $labels.instance }}"

Alertmanager routes these alerts to a dozen native destinations — email, Slack, Discord, Telegram, PagerDuty, Webhook — without a paid third-party API. A Slack route takes ten lines:

yaml
route:
  receiver: 'slack-homelab'
receivers:
  - name: 'slack-homelab'
    slack_configs:
      - api_url: 'https://hooks.slack.com/services/T...'
        channel: '#alerts'
        title: '{{ .Status | toUpper }} - {{ .CommonLabels.alertname }}'
        text: '{{ .CommonAnnotations.summary }}'

Where Datadog bills alerting as a feature bundled into the $31/host APM tier, the self-hosted stack covers it with a YAML file and a free webhook. PromQL has a real learning curve — budget half a day for your first ten rules — but it pays for itself the first time an outage gets caught before a user reports it.

What Datadog still does better

Datadog retains a genuine edge in four areas. Turnkey integrations come first: 1,000 vendor-maintained connectors, from Palo Alto firewalls to F5 load balancers, activated by checkbox with zero configuration. On the Grafana side, equivalent connectors exist, but the AWS CloudWatch plugin or the Zabbix plugin require manual setup that can take an hour per data source.

Conversational AI is next: Bits AI, integrated into Datadog since 2025, answers questions like “why is my application slow right now?” in natural language and automatically launches an investigation spanning metrics, logs, and traces. Grafana does offer an AI assistant in preview on the 13.x release, but it is limited to generating PromQL queries — it does not investigate.

Long-term retention: Datadog retains metrics for up to 15 months and logs for up to 30 days on standard plans, with automatic storage scaling. Prometheus, by design, stores everything locally — a 30-day retention on a 256 GB SSD works for a homelab, but beyond that you need to pair Prometheus with Thanos or Mimir to offload long-term storage to an object store (S3, MinIO).

Compliance, finally: Datadog is certified SOC 2 Type II, HIPAA, PCI DSS, ISO 27001. A self-hosted stack carries none of these certifications, and the burden falls on you to demonstrate compliance if an audit requires it. For personal use or a small team, this is a non-issue; for a regulated company, it can become a blocker.

CriterionGrafana + Prometheus + LokiDatadog (Pro)Annual cost (5 hosts)Hardware ($250) + power ($60/yr)$2,760 minimum (Infra + APM)Cost per added host$0 (extra node_exporter)$46/month (Infra + APM bundled)LogsLocal storage (5–20 GB/month), no cap$0.10/GB ingested, 15-day retentionIntegrationsManual, ~1h per exotic data source1,000 turnkey connectorsBuilt-in AIPromQL generation preview (Grafana 13.x)Bits AI conversational agentMetrics retentionLocal, unlimited but disk-cappedUp to 15 months, cloudAlertingAlertmanager, 10 native destinations, freeIncluded in APM bundleCertificationsNoneSOC 2, HIPAA, PCI DSS, ISO 27001MaintenanceYour responsibility (Docker updates, YAML, backups)Zero (managed SaaS)

The verdict

If you run a homelab of 2 to 20 machines and are comfortable with Docker Compose, the Grafana + Prometheus + Loki stack replaces Datadog with no real functional loss on core monitoring — metrics, logs, dashboards, and alerting — at a recurring cost near zero beyond electricity. The initial setup time (half a day for a clean docker-compose, another half for alert rules) is easily offset by the absence of a monthly bill.

If you manage a fleet of more than 50 machines, your logs exceed 50 GB per day, or you have a compliance obligation (SOC 2, HIPAA), stick with Datadog — the time you will spend configuring Thanos, managing distributed retention, and documenting compliance will cost more than the subscription. The middle ground (20 to 50 machines) is where the choice hinges on how you value your admin time: if you already have someone managing infrastructure part-time, switching to the self-hosted stack breaks even within six months.

For a homelab, the math is settled: the price of an old PC under your desk versus $276 per month for 5 machines. Even if you price your time at $100 an hour, you come out ahead by the end of the first morning.

References

The cyber brief, every Tuesday

The flaws that matter and the patches to apply, in a ten-minute read.

No spam. One-click unsubscribe.
read next

On the same topic

Immich replaces Google Photos once you budget for a mini PC and real backups

Immich shipped version 3.0 on 2 July 2026, nine months after its first stable release and weeks after a two-year retrospective on its backing by nonprofit FUTO. It replaces Google Photos once you can afford roughly $300 of hardware and a disciplined off-site backup — skip either, and the migration trades Google’s reliability for a real chance of losing everything.

Coolify gives you a free Vercel on your own server in one command

Coolify shipped version 4.2.0 on July 21, 2026, and now sits at 59,800 GitHub stars. This open-source PaaS deploys your apps, databases, and 280 services to any Linux server with a single click — no per-GB billing, no bandwidth caps, no lock-in.

← Back to the feed

Type at least two characters.

navigate open esc dismiss