Настроить алертинг в кластере

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

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

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

  1. В кластере в боковом меню откройте раздел Сервисы и репозитории и перейдите на страницу Установленные сервисы, найдите компонент управления модуля мониторинга (shturval-metrics-collector).
Скриншот

metrics-collector

  1. Откройте карточку модуля и в блоке Спецификация сервиса включите локальную базу данных хранения метрик vmsingle и необходимые компоненты, как показано в customvalues далее.
Пример customvalues
alertmanager:
  enabled: true
defaultRules:
  create: true
vmagent:
  additionalRemoteWrites:
    - url: <ваше значение параметра>
vmalert:
  enabled: true
vmsingle:
  enabled: true
Параметр Описание Тип данных Пример
additionalRemoteWrites.url URL-адрес Victoria Metrics Insert, указанный в спецификации до изменений string https://vminsert.apps.ip-10-11-12-13.shturval.link/insert/2452490585/prometheus/

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

Скриншот

vmsinglenable1

  1. Сохраните внесенные изменения для модуля.

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

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

Обратите внимание!

  • В графическом интерфейсе из раздела Оповещения вы можете настроить только централизованный алертинг.
  • Конфигурация локального алертинга должна быть настроена в ssc (спецификации) shturval-metrics-collector.
  • При необходимости создания нового правила для локального алертинга, необходимо добавить правило в клиентский кластер с помощью импорта манифеста объекта VMRule.
  1. Чтобы настроить маршруты, получателей, блокировку оповещений, в блоке Спецификация сервиса компонента управления модуля мониторинга (shturval-metrics-collector) задайте требуемую конфигурацию в alertmanager.
Пример конфигурации в customvalues, где получатель webhook
alertmanager:
  enabled: true
  config:
    receivers:
      - name: blackhole # Получатель по умолчанию. Должен быть обязательно указан
      - name:  <ваше значение параметра>
        webhook_configs:
          - max_alerts:  <ваше значение параметра>
            send_resolved: false
            url: <ваше значение параметра>
    route:
      routes:
        - matchers:
          - <ваше значение параметра>
          receiver: <ваше значение параметра>
Параметр Описание Тип данных Пример
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

Сохраните внесенные изменения.

Troubleshooting

Чтобы проверить настройку работы локального алертинга необходимо проверить состояние локального хранилища экземпляра 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.
Скриншот

vmapigroup

vmalert vmdeployments

Алертинг заполненности пространства Opensearch

В кластере управления вы можете настроить оповещение (алертинг) о заполненности дискового пространства под хранение логов в Opensearch. Это может быть полезно для своевременного информирования, когда требуется освободить место или увеличить объем пространства Opensearch.

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

Централизованный алертинг

  1. В графическом интерфейсе кластера управления в разделе Администрирование перейдите на страницу Кастомные ресурсы. Найдите группу operator.victoriametrics.com и перейдите к списку кастомных ресурсов VMRule. Откройте манифест кастомного ресурса vmrule-user-0 и добавьте правило проверки в блок groups.
Правило проверки заполненности пространства Opensearch
spec:
  groups:
    - name: opensearch-disk-space
      rules:
        - alert: OpenSearchLowDiskSpace
          annotations:
            description: |-
              На кластере OpenSearch осталось менее 10% свободного места.
              Узел: {{ $labels.node }}
              Использовано: {{ $value }}%
            summary: На кластере OpenSearch осталось мало дискового пространства
          expr: >
            100 * (1 - (opensearch_fs_total_free_bytes / opensearch_fs_total_total_bytes)) > 90
          for: 5m
          labels:
            cluster: opensearch
            severity: warning

Согласно установленному правилу в expr алертинг сработает, когда дисковое пространство будет заполнено более чем на 90%.

Скриншот

vmruleopensearch

Нажмите Проверить и сохраните внесенные изменения.

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

Локальный алертинг

  1. В графическом интерфейсе кластера управления в боковом меню откройте раздел Сервисы и репозитории и перейдите на страницу Установленные сервисы, найдите компонент управления модуля мониторинга (shturval-metrics-collector). Откройте карточку модуля и в блоке Спецификация сервиса включите локальную базу данных хранения метрик vmsingle и необходимые компоненты, как показано в customvalues далее.
Пример customvalues
defaultRules:
  create: true
vmalert:
  enabled: true
vmsingle:
  enabled: true
  1. Загрузите кастомный ресурс VMRule в кластер управления с помощью импорта манифеста.
VMRule с правилом проверки заполненности дискового пространств Opensearch
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMRule
metadata:
  name: opensearchcluster-disk
  namespace: shturval-logging 
spec:
  groups:
    - name: opensearch-disk-space
      rules:
        - alert: OpenSearchLowDiskSpace
          annotations:
            description: |-
              На кластере OpenSearch осталось менее 10% свободного места.
              Узел: {{ $labels.node }}
              Использовано: {{ $value }}%
            summary: На кластере OpenSearch осталось мало дискового пространства
          expr: >
            100 * (1 - (opensearch_fs_total_free_bytes / opensearch_fs_total_total_bytes)) > 90
          for: 5m
          labels:
            cluster: opensearch
            severity: warning

Согласно установленному правилу в expr алертинг сработает, когда дисковое пространство будет заполнено более чем на 90%.

Скриншот

mgmtvmrulemanifest

mgmtvmrulemanifest1

Загрузите VMRule.

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

Настройка маршрута и получателя для алертинга

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

Когда правило заполненности пространства Opensearch добавлено в кластер управления, в боковом меню откройте раздел Сервисы и репозитории и перейдите на страницу Установленные сервисы, найдите компонент управления модуля мониторинга (shturval-metrics-collector). Откройте карточку модуля и в блоке Спецификация сервиса укажите необходимую конфигурацию.

Пример конфигурации в customvalues, где получатель webhook
alertmanager:
  enabled: true
  config:
    receivers:
      - name: blackhole # Получатель по умолчанию. Должен быть обязательно указан
      - name: <ваше значение параметра> 
        webhook_configs:
          - max_alerts: <ваше значение параметра> 
            send_resolved: false
            url: <ваше значение параметра>
    route:
      routes:
        - matchers:
          - <ваше значение параметра>
          receiver: <ваше значение параметра>
Параметр Описание Тип данных Пример
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. Загрузите в кластер манифесты объектов Deployment, Service, VMRule с помощью импорта манифестов.
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
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:
        ruletype: alert
      name: example
      rules:
        - alert: ExampleAlert
          expr: vector(1)
      type: prometheus
  1. В кластере в боковом меню откройте раздел Сервисы и репозитории и перейдите на страницу Установленные сервисы, найдите компонент управления модуля мониторинга (shturval-metrics-collector). В блоке Спецификации сервиса настройте demo-webhook как получателя и укажите его в маршрутах для отправки алертов.
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

Сохраните внесенные изменения.

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

webhooklocalalert2

webhooklocalalert

×