замылился.
У нас есть vmalertmanager.
У нас есть vmrule.
А так же два ресивера(два канала слак) и простое правило.
Вопрос: почему правило не отрабатывает? Я хочу чтобы при матче prod отправлялось в другой канал.
Сам канал/ресивер рабочий, проверял делав его деволтным.
Весь код ниже. Лишнее убрал, чтобы не держать простыню.
---
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAlertmanager
metadata:
name: ${NAME}
namespace: ${NAMESPACE}
spec:
replicaCount: 2
configRawYaml: |
route:
receiver: slack-trash
routes:
- receiver: "slack-production"
matchers:
- namespace =~ "prod"
- receiver: "slack-production"
matchers:
- cluster =~ "prod"
receivers:
- name: slack-production
slack_configs:
- name: slack-trash
slack_configs:
---
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMRule
metadata:
name: ${NAME}
namespace: ${NAMESPACE}
spec:
groups:
- name: "url-availability"
rules:
- alert: SiteUnavailable
expr: probe_http_status_code{} == 0
for: 5m
labels:
severity: critical
instance: "{{ $labels.instance }}"
# instance: "prod" тут просто проверял, даже так не работает
annotations:
summary: "`{{ $labels.instance }}` is unavailable"
description: "The site is unavailable"
continue: true
Чтобы дальше шел по ресиверам и искал матчинг
Сам себе отвечу, потому что долбоёб. Во-первых, =~ ".*prod.*" Во-вторых, я неверно проставлял лейблы.
а помогла понять эта херня https://prometheus.io/webtools/alerting/routing-tree-editor/
Обсуждают сегодня