Как настроить алертинг по логам

VMRule и VMAlert для VictoriaLogs.

В платформе «Штурвал» для клиентских кластеров и кластера управления логи хранятся в VictoriaLogs. При необходимости можно настроить оповещение (алертинг) по логам кластера — через кастомные ресурсы VMRule и VMAlert. Ниже — пошаговая инструкция с примерами.


Предварительные условия


Шаг 1: Создание VMRule

VMRule задаёт правило: при каком условии в логах срабатывает алерт.

apiVersion: operator.victoriametrics.com/v1beta1
kind: VMRule
metadata:
  labels:
    cluster: clustername
    role: user
    vmalert-type: vlogs
  name: vlogs-rule
  namespace: clustername
spec:
  groups:
    - headers:
        - ProjectID: 4
      interval: 5m
      name: vlogsgroup
      type: vlogs
      rules:
        - alert: vlogsrule
          annotations:
            description: 'SSC {{ index $labels "objectRef.name" }} was updated by {{ index $labels "user.username" }} in the last {{$for}}'
          expr: objectRef.resource:"shturvalserviceconfigs" verb:~"patch|update" | stats by(objectRef.name, objectRef.resource, user.username) count() as updateSSC | filter updateSSC:>1
          labels:
            source: vlogs
Параметр Описание
metadata.labels.cluster Имя кластера, где требуется алертинг по логам
metadata.name Имя правила
metadata.namespace Неймспейс кластера (имя кластера)
groups.name Имя группы правил
groups.headers ProjectID в VictoriaLogs. Можно указать только один проект
groups.type vlogs
rules.alert Имя алерта (оповещения)
rules.expr Выражение для оповещения по логам (поле expr в правиле)

Согласно установленному правилу в expr оповещения будут приходить при изменении сервисов (SSC) в кластере.


Шаг 2: Создание VMAlert

VMAlert оценивает правила и отправляет алерты в Alertmanager.

apiVersion: operator.victoriametrics.com/v1beta1
kind: VMAlert
metadata:
  labels:
    cluster: clustername
  name: vlogs
  namespace: clustername
spec:
  datasource:
    url: http://vlogs-logs.clustername:9428
  evaluationInterval: 30s
  externalLabels:
    cluster: clustername
  extraArgs:
    rule.defaultRuleType: vlogs
  notifiers:
    - url: http://vmalertmanager-shturval-metrics-collector.victoria-metrics:9093
  remoteRead:
    url: http://shturval-monitoring-vmselect.victoria-metrics:8481/select/monitoring_id:3/prometheus
  remoteWrite:
    url: http://shturval-monitoring-vminsert.victoria-metrics:8480/insert/monitoring_id:3/prometheus
  resources:
    limits:
      cpu: 200m
      memory: 256Mi
    requests:
      cpu: 100m
      memory: 128Mi
  ruleSelector:
    matchLabels:
      vmalert-type: vlogs
      cluster: clustername
  ruleNamespaceSelector: {}
  selectAllByDefault: false
Параметр Описание
metadata.namespace Неймспейс кластера, в котором настраивается алертинг по логам
metadata.labels.cluster Имя кластера, в котором настраивается алертинг по логам
spec.datasource.url URL источника логов кластера: http://vlogs-logs.<имя_кластера>:9428
externalLabels.cluster Имя кластера, в котором настраивается алертинг по логам
spec.remoteRead.url VictoriaMetrics Select; вместо monitoring_id укажите значение аннотации кластера с таким ключом
spec.remoteWrite.url VictoriaMetrics Insert; аналогично monitoring_id
spec.resources Ресурсы requests и limits (например: limits cpu 200m, memory 256Mi; requests cpu 100m, memory 128Mi)

Шаг 3: Загрузка в платформу

В кластере управления с помощью импорта манифестов, загрузите VMRule и VMAlert.

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

Импорт манифестов алертинга по логам


Проверка алертинга

Проверить алертинг по логам можно с помощью уведомления на devmail. Настройте devmail: создайте получателя типа email в разделе ОповещенияПолучатели. Подробнее — пример настройки отправки уведомления на devmail.