At a certain scale, commercial APM tools become either prohibitively expensive or insufficiently flexible. When your infrastructure spans 500+ nodes across multiple availability zones, and your team needs full control over metric collection, retention, and alerting logic, the open-source monitoring stack — Prometheus, Grafana, Alertmanager, and Thanos — becomes the pragmatic choice. This guide covers the architecture patterns, alerting design principles, and operational practices that make this stack work at enterprise scale.
Why Commercial APM Tools Fall Short at Scale
Commercial observability platforms (Datadog, New Relic, Dynatrace) offer excellent developer experience for small to mid-scale deployments. They break down at enterprise scale for three reasons:
- Cost — per-host or per-GB pricing models become uneconomical beyond a few hundred nodes. At 500+ nodes with 15-second scrape intervals, ingestion costs can exceed the infrastructure cost itself.
- Cardinality limits — commercial platforms impose metric cardinality limits that constrain the granularity of custom metrics. Infrastructure operators need high-cardinality dimensions (per-tenant, per-disk, per-container).
- Vendor lock-in — proprietary query languages and dashboard formats make migration painful. PromQL is an open standard with broad ecosystem support.
The open-source stack trades operational convenience for control, cost transparency, and unlimited flexibility. For platform companies and large enterprises, this trade-off is almost always worthwhile.
The Open-Source Monitoring Stack
The core components and their roles:
- Prometheus — metric collection and short-term storage (15-30 days). Pull-based model, PromQL query language, native service discovery.
- Grafana — visualization and dashboarding. Supports Prometheus, Thanos, and dozens of other data sources.
- Alertmanager — alert routing, grouping, silencing, and notification. Integrates with PagerDuty, Slack, email, and webhooks.
- Thanos — long-term metric storage, global query view across federated Prometheus instances, and downsampling for historical data.
Prometheus Architecture for 500+ Nodes
A single Prometheus instance cannot reliably scrape 500+ nodes at 15-second intervals. The solution is federation:
- Regional Prometheus instances — one per availability zone or data center segment, each scraping 100-200 local targets. This keeps scrape latency under 2 seconds and cardinality manageable.
- Global Prometheus — federates high-level aggregates from regional instances for cross-region dashboards and SLA reporting. Does not scrape individual targets.
- Thanos sidecar — runs alongside each regional Prometheus, uploading blocks to object storage (S3, GCS, or MinIO) for long-term retention. Provides six months or more of metric history with query performance comparable to hot storage.
In practice, the federated architecture reduces MTTD (Mean Time to Detect) from 10-15 minutes to under 90 seconds. The key is keeping scrape intervals tight (15 seconds) at the regional level while federating only aggregates globally.
Grafana Dashboard Design Principles
Effective dashboards are not about displaying every metric — they are about surfacing actionable information. Design principles that work at scale:
- Four dashboard domains — organize dashboards by audience: infrastructure health (SRE team), network performance (network engineers), tenant metrics (customer-facing teams), and business metrics (management).
- Progressive disclosure — overview dashboards link to detailed drill-downs. The NOC team should see infrastructure health at a glance, then click through to per-node details only when investigating.
- Consistent layout — every dashboard follows the same visual pattern: status indicators at top, time series in the middle, tables at bottom. Consistency reduces cognitive load during incidents.
- Template variables — use Grafana variables for region, cluster, and node selection. Never build per-region or per-cluster dashboard copies.
Alert Fatigue: Designing Actionable Alerts
Alerting is the most commonly under-engineered aspect of monitoring platforms. The goal is not to alert on everything — it is to alert only on conditions that require human action. Structure alerts across three severity tiers:
- P1 — Page immediately: Node down, storage cluster degraded, network uplink failure. PagerDuty integration with 2-minute escalation. These should fire fewer than 5 times per month in a well-run environment.
- P2 — Notify within 15 minutes: CPU sustained above 85% for 10 minutes, disk filling faster than 72-hour projection, memory swap engaged. Slack channel notification with on-call acknowledgment.
- P3 — Business hours ticket: Certificate expiry warnings (30 days out), deprecated API usage, slow query accumulation. JIRA ticket creation, no paging.
Critical design patterns for avoiding alert fatigue:
- Inhibition rules — suppress downstream alerts when a root cause alert is already active. A node-down alert should inhibit all service alerts on that node.
- Grouping — Alertmanager groups related alerts into a single notification. During a network partition, you should receive one alert, not 200.
- Silence windows — planned maintenance windows should automatically silence alerts for affected components.
Capacity Planning with Monitoring Data
Monitoring data is not just for incident response — it is the foundation for proactive capacity planning. The patterns that work:
- Trend-based projections — use
predict_linear()in PromQL to project when a resource will be exhausted. A 30-day forward projection gives procurement teams enough lead time to order hardware. - Seasonal decomposition — cloud infrastructure traffic follows strong weekly and daily cycles. Use Grafana's ML plugin or external anomaly detection to distinguish expected peaks from genuine outliers. Expect a 4-week training period to reduce false positive rates below 3%.
- Per-tenant resource tracking — track resource consumption per customer tenant. This enables usage-based billing, identifies tenants approaching capacity limits, and supports SLA compliance reporting.
The open-source monitoring stack requires more operational investment than commercial alternatives, but it provides unlimited flexibility, zero per-node licensing costs, and full control over your observability data. For infrastructure at scale, that trade-off pays for itself within the first year.
Want to learn more about this topic?
First consultation is free — no strings attached.