Alert notifications
Use this page to send the platform's alerts to Slack or email.
⚠️ Alerts reach nobody by default — Prometheus evaluates about 36 alert rule groups, but Alertmanager discards every alert until you set up delivery. This includes the
Watchdogalert that reports a dead Prometheus.
📝 Octostar's own Prometheus only — This page configures the Alertmanager that Octostar installs. If the install reports to an existing monitoring stack, configure delivery on that Alertmanager. See Installing on a shared cluster.
What you need
- A Slack incoming webhook, or an SMTP server.
- Optional: an external heartbeat service (for example Healthchecks.io) for the
Watchdog.
1. Set local-env.yaml
monitoring:
alerting:
enabled: true
slack:
enabled: true
webhookUrl: "https://hooks.slack.com/services/..."
# criticalWebhookUrl: "https://hooks.slack.com/services/..." # a second channel
# email:
# enabled: true
# to: "ops@example.com"
# from: "octostar@example.com"
# smarthost: "smtp.example.com:587"
# authUsername: "..."
# authPassword: "..."
watchdog:
enabled: true
heartbeatUrl: "https://hc-ping.com/<uuid>"
One Slack webhook posts to one channel. For a second channel, create a second
webhook and set criticalWebhookUrl. Critical alerts then go there. Critical
alerts repeat every hour in any case (severityRouting), with or without a second
webhook. Email sends only critical alerts by default.
With watchdog.enabled: true, you must set heartbeatUrl. Without it,
Alertmanager refuses to load its configuration.
Keep the webhooks and the SMTP password in local-env.yaml, never in
defaults.yaml. An empty value in a later update does not erase a stored one.
2. Apply
./bin/update-existing.sh --context <context>
3. Verify
Send a test alert:
kubectl --context <context> -n octostar-main exec -it alertmanager-kube-prometheus-stack-alertmanager-0 \
-c alertmanager -- amtool alert add \
alertname=TestAlert severity=critical namespace=octostar-main \
--annotation=summary="checking delivery"
The message must arrive in Slack or your mailbox.
📝 Expect real findings on first enable — The rules can report problems that already exist, such as a core pod that failed days ago or a node disk that fills up. Clear them before you tune the thresholds. A few noisy alerts, such as
CPUThrottlingHigh, are muted by default.mutedAlertsinlocal-env.yamlchanges that list.local-env.template.yamllists every setting.
If it fails
-
Alertmanager stays in
ContainerCreating. Thealertmanager-notificationsSecret does not exist. Run./bin/update-existing.shso the preparation step runs. -
Nothing arrives and the pod runs. Alertmanager keeps its old configuration when a reload fails. Look for errors:
kubectl --context <context> -n octostar-main logs alertmanager-kube-prometheus-stack-alertmanager-0 \-c alertmanager | grep -i "error\|reload" -
No errors, but nothing in Slack. The webhook can be revoked, or its channel archived. Post to it directly with
curl. -
An alert you expect never arrives. Check
mutedAlertsandmutedAlertsInRuleNamespaces. -
Node disk alerts work, volume alerts do not. On
local-pathstorage, volume usage is not measured. See Storage and S3.