Route cell alerts to incident.io via tenant_type label
Summary
Cell alerts arrive at the global Alertmanager with tenant_type=cell and tenant=<cell-name> labels (stamped by alert relabel configs in the k8s-monitoring-stack chart) but without an env label. The existing incidentio route only matches env=~gprd|ops|thanos, so cell alerts were falling through to the default prod_alerts_slack_channel receiver and never reaching incident.io.
This MR adds a new route matching tenant_type: cell that forwards alerts to the incidentio receiver with continue: true, mirroring the existing incidentio route behavior.
Changes
alertmanager/alertmanager.jsonnet
- New route matching
tenant_type: cell→incidentioreceiver - Positioned right after the existing
incidentioroute forenv=gprd|ops|thanos - Uses
continue: trueso alerts also reach terminal receivers (e.g.,prod_alerts_slack_channelorproduction_slack_channelfor pagerduty alerts) - Groups by
alertname,tenant,tenant_type(cell-specific grouping) - Uses
repeat_interval: 2h(same as existing incidentio route)
alertmanager/routing-tests.jsonnet
- Test: basic cell alert (
tenant_type=cell) routes toincidentio+prod_alerts_slack_channel - Test: cell alert with
pager=pagerdutyroutes toincidentio+production_slack_channel
Background
- Cell Prometheus sends alerts to Mimir's passthrough endpoint, which forwards them to the global Alertmanager at
alerts.gitlab.net - The observability team (cc @knottos) confirmed this pipeline works via test alerts (silenced:
5360e279-3201-4e12-906c-bf4ea020ac64) - Prerequisite MRs already merged:
gitlab-helmfiles!9575,gitlab-helmfiles!9577,charts!891
Verification
All 41 routing tests pass locally (make test-alertmanager), including the 2 new cell alert tests.
Closes gitlab-com/gl-infra/tenant-scale/cells-infrastructure/team#616 (closed)
Merge request reports
Loading