Как настроить локальный алертинг в кластере

В платформе “Штурвал” для клиентских кластеров и кластера управления по умолчанию реализован централизованный алертинг с размещением метрик и правил оповещения в кластере управления. При использовании централизованного алертинга доступна настройка правил оповещения из интерфейса кластера.

В случае недоступности кластера управления, выключенного централизованного алертинга или отсутствия необходимости работы централизованного алертинга вы можете настроить локальный алертинг в кластере.

В GUI из раздела Оповещения вы можете настроить только централизованный алертинг. Настройка локального алертинга в GUI недоступна.

В клиентском кластере

Шаг 1. Подготовить ShturvalServicePatch

Подготовьте ShturvalServicePatch для применения к спецификации (ssc) Компонента управления модуля мониторинга (shturval-metrics-collector), где включите локальную базу данных хранения метрик vmsingle и необходимые компоненты, как приведено в примере, используя ваши значения параметров.

Пример ShturvalServicePatch
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
  name: <имя ресурса>
spec:
  shturvalServiceConfigName: shturval-metrics-collector
  customvalues:
    alertmanager:
      enabled: true
    defaultRules:
      create: true
    vmagent:
      additionalRemoteWrites:
        - url: <ваше значение параметра>
    vmalert:
      enabled: true
    vmsingle:
      enabled: true
Параметр Описание Тип данных Пример
metadata.name Имя создаваемого ShturvalServicePatch string metrics-collector-vmsingle
additionalRemoteWrites.url URL-адрес VictoriaMetrics Insert, указанный в спецификации до изменений string https://vminsert.clustername.ip-10-11-12-13.shturval.link/insert/2452490585/prometheus/

Параметр additionalRemoteWrites.url необходимо указывать, чтобы метрики направлялись не только в локальную базу кластера, но и централизовано в кластер управления.

Шаг 2. Загрузить ShturvalServicePatch в кластер

В кластере загрузите с помощью импорта манифестов подготовленный ShturvalServicePatch.

Скриншот интерфейса платформы

Скриншот: Шаг 2. Загрузить ShturvalServicePatch в кластер

После загрузки ShturvalServicePatch потребуется время для применения изменений.

В результате:

  • метрики будут направлены в локальную VM Single базу и если централизованное хранение доступно, то дополнительно в кластер управления;
  • в клиентском кластере добавлены кастомные ресурсы API-группы “operator.victoriametrics.com”: VMAlertmanager, VMAlert, VMSingle и системные правила VMRule;
  • возможно настроить конфигурацию локального алертинга. Конфигурация локального алертинга должна быть настроена в ssc (спецификации) shturval-metrics-collector
При необходимости создания нового правила для локального алертинга, добавьте правило в клиентский кластер с помощью импорта манифеста объекта *VMRule*.

Шаг 3. Пример как настроить маршруты и получателей

Когда настроен локальный алертинг, конфигурирование правил оповещения, маршрутов и получателей в графическом интерфейсе кластера управления недоступна. Конфигурирование алертинга необходимо выполнять через ShturvalServicePatch для модуля мониторинга (shturval-metrics-collector) кластера управления.

Подготовьте ShturvalServicePatch для применения к спецификации (ssc) Компонента управления модуля мониторинга (shturval-metrics-collector), где задайте требуемую конфигурацию в alertmanager.

Пример конфигурации в ShturvalServicePatch, где получатель webhook
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
  name: <имя ресурса>
spec:
  shturvalServiceConfigName: shturval-metrics-collector
  customvalues:
    alertmanager:
      enabled: true
      config:
        receivers:
          - name: blackhole # Получатель по умолчанию. Должен быть обязательно указан
          - name: <ваше значение параметра>
            webhook_configs:
              - max_alerts: <ваше значение параметра>
                send_resolved: false
                url: <ваше значение параметра>
        route:
          routes:
            - matchers:
              - <ваше значение параметра>
              receiver: <ваше значение параметра>
Параметр Описание Тип данных Пример
metadata.name Имя создаваемого ShturvalServicePatch string metrics-collector-config
receivers.name Имя получателя оповещений string example-webhook
receivers.webhook_configs.max_alerts Максимальное количество оповещений, включаемых в одно сообщение webhook. Оповещения, превышающие это значение, обрезаются. По умолчанию 0 (не ограничивается количество, будут включены все оповещения в сообщение) int 5
receivers.webhook_configs.url URL-адрес: эндпоинт для отправки HTTP-запросов на адрес webhook string http://example-webhook.svc/webhook
route.routes.matchers Список лейблов получателя, куда будут маршрутизироваться оповещения string app = “example-webhook”
route.routes.receivers Значение имени получателя оповещений string example-webhook

В кластере загрузите с помощью импорта манифестов подготовленный ShturvalServicePatch.

Скриншот интерфейса платформы

Скриншот интерфейса: Скриншот интерфейса платформы

Шаг 4. Проверить настройку

Выполните проверку настройки локального алертинга.

Чтобы проверить настройку работы локального алертинга, необходимо проверить состояния локального хранилища экземпляра VM Single и VMAlertManager. Для этого:

  1. в неймспейсе victoria-metrics проверьте статус Statefulset vmalertmanager-shturval-metrics-collector. Если статус неактивный, посмотрите логи подов этого Statefulset.
  2. в неймспейсе victoria-metrics проверьте статус Deployment vmalert-shturval-metrics-collector. Если статус неактивный, посмотрите логи подов этого Deployment.
  3. в неймспейсе victoria-metrics проверьте статус Deployment vmsingle-shturval-metrics-collector. Если статус неактивный, посмотрите логи подов этого Deployment.
  4. в разделе “Администрирование” бокового меню кластера перейдите на страницу “Кастомные ресурсы”. В API-группе “operator.victoriametrics.com” найдите ресурс VMAlertmanager и проверьте, что он имеет updateStatus: operational.
  5. в разделе “Администрирование” бокового меню кластера перейдите на страницу “Кастомные ресурсы”. В API-группе “operator.victoriametrics.com” найдите ресурс VMAlert и проверьте, что он имеет updateStatus: operational.
Скриншот интерфейса платформы

Скриншот интерфейса: Скриншот интерфейса платформы

Скриншот интерфейса: Скриншот интерфейса платформы

Скриншот интерфейса: Скриншот интерфейса платформы

В кластере управления

Конфигурирование локального алертинга в кластере управления возможно с помощью кастомного ресурса VMRule и применения изменений к спецификации (ssc) компонента управления модуля мониторинга (VM Agent) (shturval-metrics-collector).

Шаг 1. Подготовить ShturvalServicePatch

Подготовьте ShturvalServicePatch для применения к спецификации (ssc) Компонента управления модуля мониторинга (shturval-metrics-collector), где включите локальную базу данных хранения метрик vmsingle и необходимые компоненты, как приведено в примере.

Пример ShturvalServicePatch
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
  name: metrics-collector-vmsingle
spec:
  shturvalServiceConfigName: shturval-metrics-collector
  customvalues:
    defaultRules:
      create: true
    vmalert:
      enabled: true
    vmsingle:
      enabled: true

Шаг 2. Загрузить ShturvalServicePatch в кластер управления

В кластер управления загрузите с помощью импорта манифестов подготовленный ShturvalServicePatch.

Скриншот интерфейса платформы

Скриншот: Шаг 2. Загрузить ShturvalServicePatch в кластер управления

Шаг 3. Загрузить VMRule

Загрузите кастомный ресурс VMRule в кластер управления с помощью импорта манифеста.

Пример VMRule
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMRule
metadata:
  labels:
    cluster: clustername
    monitoringid: "0"
    role: user
  name: <ваше значение параметра>
  namespace: victoria-metrics
spec:
  groups:
    - name: <ваше значение параметра>
      rules:
        - alert: <ваше значение параметра>
          annotations:
            message: <ваше значение параметра>
          expr: <ваше значение параметра>
          for: <ваше значение параметра>
          labels:
            <ваше значение>
Параметр Описание Тип данных Пример
metadata.name Имя правила string shturval-backup
groups.name Имя группы правил string shturval-backup
rules.alert Имя алерта (оповещения) string VeleroBackupPartialFailures
rules.annotations.message Текст сообщения в оповещении пользователю string Velero backup {{ $labels.schedule }} has {{ $value | humanizePercentage }} partialy failed backups
rules.expr Правило, ри выполнении которого будет отправлено оповещение string velero_backup_partial_failure_total{schedule!=""} / velero_backup_attempt_total{schedule!=""} > 0.25
rules.for Период времени ожидания перед отправкой оповещения string 15m
rules.labels Лейблы правила string severity: warning

Шаг 4. Настроить маршрут и получателя

Настройте конфигурацию алертинга, например, маршрут и получателя.

Настройка правил оповещения, маршрутов и получателей в графическом интерфейсе кластера управления при локальном алертинге недоступна. Конфигурирование алертинга необходимо выполнять в customvalues модуля мониторинга (shturval-metrics-collector) кластера управления.

Когда правило добавлено в кластер управления (для локального алертинга или централизованного), вы можете настроить конфигурацию алертинга:

  • Подготовьте ShturvalServicePatch для применения к спецификации (ssc) Компонента управления модуля мониторинга (shturval-metrics-collector), где задайте требуемую конфигурацию в alertmanager.
Пример конфигурации в ShturvalServicePatch, где получатель webhook
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
  name: <имя ресурса>
spec:
  shturvalServiceConfigName: shturval-metrics-collector
  customvalues:
    alertmanager:
      enabled: true
      config:
        receivers:
          - name: blackhole # Получатель по умолчанию. Должен быть обязательно указан
          - name: <ваше значение параметра> 
            webhook_configs:
              - max_alerts: <ваше значение параметра> 
                send_resolved: false
                url: <ваше значение параметра>
        route:
          routes:
            - matchers:
              - <ваше значение параметра>
              receiver: <ваше значение параметра>
Параметр Описание Тип данных Пример
metadata.name Имя создаваемого ShturvalServicePatch string metrics-collector-config
receivers.name Имя получателя оповещений string example-webhook
receivers.webhook_configs.max_alerts Максимальное количество оповещений, включаемых в одно сообщение webhook. Оповещения, превышающие это значение, обрезаются. По умолчанию 0 (не ограничивается количество, будут включены все оповещения в сообщение) int 5
receivers.webhook_configs.url URL-адрес: эндпоинт для отправки HTTP-запросов на адрес webhook string http://example-webhook.svc/webhook
route.routes.matchers Список лейблов получателя, куда будут маршрутизироваться оповещения string app = “example-webhook”
receivers.matchers.name Значение имени получателя оповещений string example-webhook
Скриншот интерфейса платформы

Скриншот интерфейса: Скриншот интерфейса платформы

Для применения изменений может потребоваться время.

Пример проверки работы локального алертинга

Проверить работу локального алертинга в кластере клиентском или кластере управления можно, например, с помощью webhook, который записывает входящие сообщения в логи контейнера.

Шаг 1. Загрузить demo-webhook

Загрузите в кластер манифесты объектов Deployment, Service с помощью импорта манифестов.

Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-webhook
  namespace: monitoring
  labels:
    app: demo-webhook
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-webhook
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: demo-webhook
    spec:
      terminationGracePeriodSeconds: 30
      automountServiceAccountToken: false
      containers:
      - name: demo-webhook
        image: quay.io/mgoerens/demo-webhook-receiver-alertmanager:0.0.1
        imagePullPolicy: IfNotPresent
        env:
        - name: PORT
          value: "8080"
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
        readinessProbe:
          httpGet:
            path: /healthz
            port: 8080
        resources:
          limits:
            cpu: 10m
            memory: 30Mi
          requests:
            cpu: 10m
            memory: 30Mi
        securityContext:
          capabilities:
            drop:
              - ALL
          allowPrivilegeEscalation: false
Service — иллюстрация
apiVersion: v1
kind: Service
metadata:
  name: demo-webhook
  namespace: monitoring
  labels:
    app: demo-webhook
spec:
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
    name: http
  selector:
    app: demo-webhook

Шаг 2. Подготовить ShturvalServicePatch

Подготовьте ShturvalServicePatch для применения к спецификации (ssc) Компонента управления модуля мониторинга (shturval-metrics-collector), где задайте требуемую конфигурацию в alertmanager.

ShturvalServicePatch
apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
  name: metrics-collector-alertmanager
spec:
  shturvalServiceConfigName: shturval-metrics-collector
  customvalues: 
    alertmanager:
      enabled: true
      config:
        receivers:
          - name: blackhole
          - name: demo-webhook
            webhook_configs:
              - max_alerts: 5
                send_resolved: false
                url: http://demo-webhook.monitoring.svc/webhook
        route:
          routes:
            - matchers:
              - app = "demo-webhook"
              receiver: demo-webhook

Шаг 3. Загрузить ShturvalServicePatch в кластер

В кластере загрузите с помощью импорта манифестов подготовленный ShturvalServicePatch.

Скриншот интерфейса платформы

Скриншот: Шаг 3. Загрузить ShturvalServicePatch в кластер

Шаг 4. Загрузить VMRule

Загрузите в кластер манифест объекта VMRule с помощью импорта манифестов.

VMRule для клиентского кластера
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMRule
metadata:
  labels:
    app: demo-webhook
    role: user
  name: example-alert
  namespace: victoria-metrics
spec:
  groups:
    - concurrency: 1
      interval: 1m
      labels:
        app: demo-webhook
        ruletype: alert
      name: example
      rules:
        - alert: ExampleAlert
          expr: vector(1)
      type: prometheus
VMRule кластера управления
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMRule
metadata:
  labels:
    cluster: clustername
    monitoringid: "0"
    app: demo-webhook
    role: user
  name: example-alert
  namespace: victoria-metrics
spec:
  groups:
    - concurrency: 1
      interval: 1m
      labels:
        app: demo-webhook
        ruletype: alert
      name: example
      rules:
        - alert: ExampleAlert
          expr: vector(1)
      type: prometheus

Шаг 5. Проверить логи webhook

  1. В неймспейсе monitoring кластера перейдите к просмотру пода с именем demo-webhook. Откройте окно просмотра логов контейнера. В логах будут сообщения сработавших алертах в кластере.
Скриншот интерфейса платформы

Скриншот: Шаг 5. Проверить логи webhook

Скриншот интерфейса: Скриншот интерфейса платформы