A production-ready Helm chart that deploys Prometheus, Grafana, Alertmanager, and Blackbox Exporter in one command. SLO/error budget alerting, HA StatefulSets, maintenance windows, 14 alert rules, 8 notification channels — zero SaaS fees.
Deploy in one command
helm install website-monitor . --namespace monitoring \
--create-namespace --set grafana.adminPassword=<pw>All data stays inside your cluster. No cloud account or API keys needed.
values.yaml — add your website URLs, webhooks, and SLO targetshelm install — Grafana dashboard is live in under 2 minutesBuilt by CloudGrains · Kolhapur, India
No manual Prometheus scrape configs, no Grafana JSON imports, no alert YAML — everything is bundled and wired up out of the box.
Multi-window multi-burn-rate alerts (Google SRE workbook-style). ErrorBudgetBurnFast catches fast burns within 2 min; ErrorBudgetBurnSlow catches slow steady burns. Dashboard shows remaining budget per target.
Alerts at 30 days and 7 days before expiry. Dashboard shows SSL expiry countdown, TLS version per target, and full probe timing — DNS, TCP, TLS handshake, server response, transfer.
Slack, Email, Discord, Teams, Telegram, PagerDuty, Opsgenie, and generic webhook — all configured in values.yaml. Critical alerts auto-escalate after N minutes if unresolved.
Prometheus and Alertmanager run as StatefulSets. Set replicaCount: 2 for HA — Alertmanager replicas gossip-cluster so you get deduplication, not duplicate pages.
Configure recurring silence windows in values.yaml using Alertmanager's native time_intervals. No Alertmanager UI clicks needed — weekly, monthly, or date-range windows all supported.
All metrics, dashboards, and alerts stay inside your Kubernetes cluster. No external vendor, no per-site pricing. Public status page mode included — expose Grafana anonymously for your users.
All thresholds are set in values.yaml. Inhibition rules automatically suppress noise when WebsiteDown fires.
| Group | Alert | Fires when | Severity |
|---|---|---|---|
| Availability | WebsiteDown | Unreachable for 1 min | Critical |
| Availability | SlowResponseTimeWarning | Response > 2s for 3 min | Warning |
| Availability | SlowResponseTimeCritical | Response > 5s for 1 min | Critical |
| Availability | UnexpectedHTTPStatus | HTTP ≥ 400 for 2 min | Warning |
| SSL | SSLCertExpiringSoon | Expires in < 30 days | Warning |
| SSL | SSLCertExpiringCritical | Expires in < 7 days | Critical |
| SSL | SSLCertExpired | Certificate has expired | Critical |
| SSL | SSLProbeFailed | No TLS connection for 5 min | Critical |
| TCP/DNS/ICMP | TCPConnectionFailed | Cannot connect for 2 min | Critical |
| TCP/DNS/ICMP | DNSResolutionFailed | DNS lookup fails for 2 min | Critical |
| TCP/DNS/ICMP | ICMPProbeFailed | Ping fails for 5 min | Warning |
| Health | BlackboxExporterDown | Exporter unreachable for 2 min | Critical |
| SLO | ErrorBudgetBurnFast | >14.4x burn rate (1h + 5m windows) | Critical |
| SLO | ErrorBudgetBurnSlow | >6x burn rate (6h + 30m windows) | Warning |
Monitoring Pack bundles four components and wires them together — StatefulSets for HA, gossip clustering for Alertmanager, PVCs that survive upgrades.
Metrics storage & SLO evaluation
StatefulSet with one PVC per replica. Scrapes Blackbox every 60s, evaluates 14 alert rules every 30s, keeps up to 30 days of history.
10-section monitoring dashboard
Pre-built dashboard auto-provisioned on start. Includes SLO & Error Budget row, latency percentiles, SSL expiry gauges, and uptime state timeline.
Routing, inhibition & escalation
StatefulSet with gossip clustering for HA deduplication. Routes 8 channels, applies inhibition rules, handles maintenance windows and escalation.
HTTP, SSL, TCP, DNS, ICMP probes
Makes real HTTP/HTTPS requests to your sites every 60s. Reports probe success, full phase timing, SSL certificate validity and expiry days.
Create a namespace, then run: helm install website-monitor . --namespace monitoring --create-namespace --set grafana.adminPassword=your-password. All four components — Prometheus, Grafana, Alertmanager, and Blackbox Exporter — come up within 60–90 seconds. Access Grafana via kubectl port-forward.
Monitoring Pack requires Kubernetes 1.25 or higher and Helm 3.8 or higher. It is tested on EKS, GKE, AKS, k3s, and local clusters created with Kind or Minikube.
Yes. Enable slo.enabled: true in values.yaml and set your availability target (e.g. objectivePercent: 99.9). Monitoring Pack adds Google SRE workbook-style multi-window multi-burn-rate alerts: ErrorBudgetBurnFast fires when burning the budget >14.4x the sustainable rate, and ErrorBudgetBurnSlow fires at >6x. The Grafana dashboard includes a dedicated SLO & Error Budget row showing remaining budget and a compliance table sorted worst-first.
Yes. Prometheus and Alertmanager run as StatefulSets with one PVC per replica. Set prometheus.replicaCount: 2 and alertmanager.replicaCount: 2 (or 3) in values.yaml. Alertmanager replicas form a real gossip cluster so duplicate notifications are deduplicated across replicas.
Monitoring Pack supports 8 notification channels: Slack, Email (any SMTP provider), Discord, Microsoft Teams, Telegram, PagerDuty, Opsgenie, and a generic webhook for tools like Jira Service Management or ServiceNow. All channels are configured in values.yaml — no manual Alertmanager config files needed.
Configure maintenanceWindows in values.yaml. Each entry uses Alertmanager's native time_intervals — specify weekdays, times, months, or specific day ranges. Alerts still evaluate during the window and remain visible in the Prometheus/Alertmanager UIs; only notification delivery is muted. For one-off windows, use an Alertmanager silence instead.
Yes. Disable the standalone Prometheus, Grafana, and Alertmanager (set each enabled: false), then enable serviceMonitor.enabled: true and prometheusRule.enabled: true with labels matching your Prometheus CR's serviceMonitorSelector. Alternatively, use probe.enabled: true for the Probe CRD approach available in prometheus-operator v0.47+.
Yes. Set headers, bearerToken, or basicAuth on any target in values.yaml. Monitoring Pack generates a dedicated Blackbox Exporter module per authenticated target automatically — no manual ConfigMap editing needed.
Yes. Set grafana.statusPage.enabled: true and configure grafana.ingress to expose Grafana publicly. Visitors land on the Website Monitoring Dashboard with no login. Note: anonymous access is org-wide in Grafana — only enable this on a dedicated Grafana instance with nothing else sensitive in it.
SLO alerting, HA StatefulSets, 8 notification channels. One Helm chart, zero SaaS.
helm install website-monitor . --namespace monitoring --create-namespace