Управление оповещениями

Содержание

Обзор функции

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

Будь то администраторы платформы или бизнес-пользователи, они могут удобно настраивать и управлять политиками оповещений в рамках своих полномочий для эффективного мониторинга ресурсов платформы.

Ключевые возможности

  • Встроенные системные политики оповещений: Предустановлены богатые правила оповещений, основанные на типичных сценариях диагностики сбоев для кластеров global и рабочих кластеров.
  • Пользовательские правила оповещений: Поддерживается создание правил оповещений на основе различных источников данных, включая предустановленные метрики мониторинга, пользовательские метрики, black-box мониторинг, данные логов платформы и события платформы.
  • Управление шаблонами оповещений: Поддерживается создание и управление стандартизированными шаблонами оповещений для быстрого применения к похожим ресурсам.
  • Интеграция уведомлений об оповещениях: Поддерживается отправка информации об оповещениях операционному и техническому персоналу через различные каналы.
  • Изоляция просмотра оповещений: Разграничение оповещений управления платформой и бизнес-оповещений, что обеспечивает фокусировку персонала с разными ролями на соответствующей информации.
  • Просмотр оповещений в реальном времени: Предоставляет оповещения в реальном времени с концентрированным отображением количества ресурсов, находящихся в состоянии оповещения, и подробной информацией об оповещениях.
  • Просмотр истории оповещений: Поддерживается просмотр исторических записей оповещений за определённый период, что облегчает анализ последних состояний мониторинга для операционного и технического персонала и администраторов.

Преимущества функции

  • Всестороннее покрытие мониторинга: Поддерживается мониторинг различных типов ресурсов, таких как кластеры, узлы и вычислительные компоненты, а также предоставляются богатые встроенные системные политики оповещений, которые можно использовать без дополнительной настройки.
  • Эффективное управление оповещениями: Стандартизированные конфигурации через шаблоны оповещений повышают операционную эффективность, а разделение просмотров оповещений облегчает персоналу с разными ролями быстро находить соответствующие оповещения.
  • Своевременное обнаружение проблем: Уведомления об оповещениях автоматически запускаются для обеспечения своевременного обнаружения проблем, поддерживается многоканальная отправка оповещений для проактивного предотвращения проблем.
  • Надёжное управление правами доступа: Строгий контроль доступа к политикам оповещений гарантирует безопасность и управляемость информации об оповещениях.

Создание политик оповещений через UI

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

  • Настроена политика уведомлений (если требуется автоматическая отправка оповещений).
  • В целевом кластере установлены компоненты мониторинга (требуется при создании политик оповещений на основе метрик мониторинга).
  • В целевом кластере установлены компоненты хранения логов и сбора логов (требуется при создании политик оповещений на основе логов и событий).

Процедура

  1. Перейдите в Центр эксплуатации и обслуживания > alerts > alert Policies.
  2. Нажмите Create Alert Policy.
  3. Настройте базовую информацию.

Выбор типа оповещения

Оповещение по ресурсу

  • Типы оповещений классифицированы по типу ресурса (например, состояние deployment в namespace).
  • Описание выбора ресурса:
    • По умолчанию "Any", если параметр не выбран, поддерживается автоматическая привязка к вновь добавленным ресурсам.
    • При выборе "Select All" применяется только к текущему ресурсу.
    • При выборе нескольких namespace имена ресурсов поддерживают регулярные выражения (например, cert.*).

Оповещение по событию

  • Типы оповещений классифицированы по конкретным событиям (например, аномальное состояние Pod).
  • По умолчанию выбираются все ресурсы под указанным ресурсом, поддерживается автоматическая привязка к вновь добавленным ресурсам.

Настройка правил оповещений

Нажмите Add Alert Rule и настройте параметры в соответствии с типом оповещения:

Параметры оповещений по ресурсу

ПараметрОписание
ExpressionАлгоритм метрики мониторинга в формате Prometheus, например, rate(node_network_receive_bytes{instance="$server",device!~"lo"}[5m])
Metric UnitЕдиница измерения пользовательской метрики мониторинга, можно ввести вручную или выбрать из предустановленных платформой единиц
Legend ParameterУправляет именем, соответствующим кривой на графике, формат {{.LabelName}}, например, {{.hostname}}
Time RangeВременное окно для запросов логов/событий
Log ContentПоля запроса для содержимого логов (например, Error), несколько полей связаны через OR
Event ReasonПоля запроса для причин событий (Reason, например, BackOff, Pulling, Failed и др.), несколько полей связаны через OR
Trigger ConditionУсловие, состоящее из операторов сравнения, порогов оповещения и длительности (опционально). Определяет, срабатывает ли оповещение на основе сравнения текущих значений/количества логов/событий с порогом оповещения, а также длительности нахождения значений в пределах порога.
alert LevelДелится на четыре уровня: Critical, Serious, Warning и Info. Можно установить разумный уровень оповещения в зависимости от влияния правил оповещений на бизнес для соответствующих ресурсов.

Параметры оповещений по событию

ПараметрОписание
Time RangeВременное окно для запросов событий
Event Monitoring ItemПоддерживает мониторинг уровней событий или причин событий, несколько полей связаны через OR
Trigger ConditionОсновано на количестве событий для оценки сравнения
alert LevelОпределение такое же, как для уровней оповещений по ресурсу

Другие настройки

  1. Выберите одну или несколько созданных политик уведомлений.
  2. Настройте интервалы отправки оповещений.
    • Global: Использовать конфигурацию по умолчанию платформы.
    • Custom: Можно задать разные интервалы отправки в зависимости от уровней оповещений.
    • При выборе "Do Not Repeat" уведомления будут отправляться только при срабатывании и восстановлении оповещения.

Дополнительные примечания

  1. В разделе "More" правила оповещения можно задать labels и annotations.
  2. Пожалуйста, обратитесь к Prometheus Alerting Rules Documentation для настройки labels и annotations.
  3. Внимание: не используйте переменную $value в labels, так как это может вызвать исключения оповещений.

Создание оповещений по ресурсам через CLI

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

  • Настроена политика уведомлений (если требуется автоматическая отправка оповещений).
  • В целевом кластере установлены компоненты мониторинга (требуется при создании политик оповещений на основе метрик мониторинга).
  • В целевом кластере установлены компоненты хранения логов и сбора логов (требуется при создании политик оповещений на основе логов и событий).

Процедура

  1. Создайте новый YAML-файл конфигурации с именем example-alerting-rule.yaml.

  2. Добавьте ресурсы PrometheusRule в YAML-файл и отправьте его. В следующем примере создаётся новая политика оповещений с именем policy:

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      annotations:
        alert.cpaas.io/cluster: global # Имя кластера, где расположено оповещение
        alert.cpaas.io/kind: Cluster # Тип ресурса
        alert.cpaas.io/name: global # Объект ресурса, поддерживает одиночный, множественный (через |) или любой (.*)
        alert.cpaas.io/namespace: cpaas-system # Namespace, где расположен объект оповещения, поддерживает одиночный, множественный (через |) или любой (.*)
        alert.cpaas.io/notifications: '["test"]'
        alert.cpaas.io/repeat-config: '{"Critical":"never","High":"5m","Medium":"5m","Low":"5m"}'
        alert.cpaas.io/rules.description: '{}'
        alert.cpaas.io/rules.disabled: '[]'
        alert.cpaas.io/subkind: ''
        cpaas.io/description: ''
        cpaas.io/display-name: policy # Отображаемое имя политики оповещений
      labels:
        alert.cpaas.io/owner: System
        alert.cpaas.io/project: cpaas-system
        cpaas.io/source: Platform
        prometheus: kube-prometheus
        rule.cpaas.io/cluster: global
        rule.cpaas.io/name: policy
        rule.cpaas.io/namespace: cpaas-system
      name: policy
      namespace: cpaas-system
    spec:
      groups:
        - name: general # имя правила оповещения
          rules:
            - alert: cluster.pod.status.phase.not.running-tx1ob-e998f0b94854ee1eade5ae79279e005a
              annotations:
                alert_current_value: '{{ $value }}' # Уведомление о текущем значении, оставить по умолчанию
              expr: (count(min by(pod)(kube_pod_container_status_ready{}) !=1) or on() vector(0))>2
              for: 30s # Длительность
              labels:
                alert_cluster: global # Имя кластера, где расположено оповещение
                alert_for: 30s # Длительность
                alert_indicator: cluster.pod.status.phase.not.running # Имя индикатора правила оповещения (пользовательское имя индикатора)
                alert_indicator_aggregate_range: '30' # Время агрегации для правила оповещения в секундах
                alert_indicator_blackbox_name: '' # Имя black-box мониторинга
                alert_indicator_comparison: '>' # Метод сравнения для правила оповещения
                alert_indicator_query: '' # Запрос к логам правила оповещения (только для лог-оповещений)
                alert_indicator_threshold: '2' # Порог для правила оповещения
                alert_indicator_unit: '' # Единица измерения индикатора правила оповещения
                alert_involved_object_kind: Cluster # Тип объекта, к которому относится правило оповещения: Cluster|Node|Deployment|Daemonset|Statefulset|Middleware|Microservice|Storage|VirtualMachine
                alert_involved_object_name: global # Имя объекта, к которому относится правило оповещения
                alert_involved_object_namespace: '' # Namespace объекта, к которому относится правило оповещения
                alert_name: cluster.pod.status.phase.not.running-tx1ob # Имя правила оповещения
                alert_namespace: cpaas-system # Namespace, где расположено правило оповещения
                alert_project: cpaas-system # Имя проекта объекта, к которому относится правило оповещения
                alert_resource: policy # Имя политики оповещений, где расположено правило оповещения
                alert_source: Platform # Тип данных политики оповещений: Platform - данные платформы, Business - бизнес-данные
                severity: High # Уровень серьёзности правила оповещения: Critical - критический, High - серьёзный, Medium - предупреждение, Low - информация

Создание оповещений по событиям через CLI

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

  • Настроена политика уведомлений (если требуется автоматическая отправка оповещений).
  • В целевом кластере установлены компоненты мониторинга (требуется при создании политик оповещений на основе метрик мониторинга).
  • В целевом кластере установлены компоненты хранения логов и сбора логов (требуется при создании политик оповещений на основе логов и событий).

Процедура

  1. Создайте новый YAML-файл конфигурации с именем example-alerting-rule.yaml.

  2. Добавьте ресурсы PrometheusRule в YAML-файл и отправьте его. В следующем примере создаётся новая политика оповещений с именем policy2:

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      annotations:
        alert.cpaas.io/cluster: global
        alert.cpaas.io/events.scope:
          '[{"names":["argocd-gitops-redis-ha-haproxy"],"kind":"Deployment","operator":"=","namespaces":["*"]}]'
          # names: Имя ресурса для оповещения по событию; оператор не действует, если имя пустое.
          # kind: Тип ресурса, вызывающего оповещение по событию.
          # namespace: Namespace, к которому принадлежит ресурс, вызывающий оповещение по событию. Пустой массив означает ресурс без namespace; при ns=['*'] — все namespace.
          # operator: Селектор =, !=, =~, !~
        alert.cpaas.io/kind: Event # Тип оповещения, Event (оповещение по событию)
        alert.cpaas.io/name: '' # Используется для оповещений по ресурсам; для оповещений по событиям остаётся пустым
        alert.cpaas.io/namespace: cpaas-system
        alert.cpaas.io/notifications: '["acp-qwtest"]'
        alert.cpaas.io/repeat-config: '{"Critical":"never","High":"5m","Medium":"5m","Low":"5m"}'
        alert.cpaas.io/rules.description: '{}'
        alert.cpaas.io/rules.disabled: '[]'
        cpaas.io/description: ''
        cpaas.io/display-name: policy2
      labels:
        alert.cpaas.io/owner: System
        alert.cpaas.io/project: cpaas-system
        cpaas.io/source: Platform
        prometheus: kube-prometheus
        rule.cpaas.io/cluster: global
        rule.cpaas.io/name: policy2
        rule.cpaas.io/namespace: cpaas-system
      name: policy2
      namespace: cpaas-system
    spec:
      groups:
        - name: general
          rules:
            - alert: cluster.event.count-6sial-34c9a378e3b6dda8401c2d728994ce2f
              # 6sial-34c9a378e3b6dda8401c2d728994ce2f можно настроить для обеспечения уникальности
              annotations:
                alert_current_value: '{{ $value }}' # Уведомление о текущем значении, оставить по умолчанию
              expr: round(((avg
                by(kind,namespace,name,reason)(increase(cpaas_event_count{namespace=~".*",id="policy2-cluster.event.count-6sial"}[300s])))
                + (avg
                by(kind,namespace,name,reason)(abs(increase(cpaas_event_count{namespace=~".*",id="policy2-cluster.event.count-6sial"}[300s])))))
                / 2)>2
              # id в policy2 должен совпадать с именем политики оповещений; 6sial должен соответствовать имени предыдущего правила оповещения
              for: 15s # Длительность
              labels:
                alert_cluster: global # Имя кластера, где расположено оповещение
                alert_for: 15s # Длительность
                alert_indicator: cluster.event.count # Имя индикатора правила оповещения (пользовательское имя индикатора)
                alert_indicator_aggregate_range: '300' # Время агрегации для правила оповещения в секундах
                alert_indicator_blackbox_name: ''
                alert_indicator_comparison: '>' # Метод сравнения для правила оповещения
                alert_indicator_event_reason: ScalingReplicaSet # Причина события.
                alert_indicator_threshold: '2' # Порог для правила оповещения
                alert_indicator_unit: pieces # Единица измерения индикатора правила оповещения; для оповещений по событиям остаётся без изменений
                alert_involved_object_kind: Event
                alert_involved_object_options: Single
                alert_name: cluster.event.count-6sial # Имя правила оповещения
                alert_namespace: cpaas-system # Namespace, где расположено правило оповещения
                alert_project: cpaas-system # Имя проекта объекта, к которому относится правило оповещения
                alert_repeat_interval: 5m
                alert_resource: policy2 # Имя политики оповещений, где расположено правило оповещения
                alert_source: Platform # Тип данных политики оповещений: Platform - данные платформы, Business - бизнес-данные
                severity: High # Уровень серьёзности правила оповещения: Critical - критический, High - серьёзный, Medium - предупреждение, Low - информация

Создание политик оповещений через alert Templates

alert templates — это сочетание правил оповещений и политик уведомлений, ориентированных на похожие ресурсы. С помощью alert templates легко и быстро создавать политики оповещений для кластеров, узлов или вычислительных компонентов на платформе.

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

  • Настроена политика уведомлений (если требуется автоматическая отправка оповещений).
  • В целевом кластере установлены компоненты мониторинга (требуется при создании политик оповещений на основе метрик мониторинга).

Процедура

Создание шаблона оповещений

  1. В левой навигационной панели нажмите Центр эксплуатации и обслуживания > alerts > alert Templates.
  2. Нажмите Create alert Template.
  3. Настройте базовую информацию шаблона оповещений.
  4. В разделе alert Rules нажмите Add alert Rule и добавьте правила оповещений согласно описаниям параметров ниже:
ПараметрОписание
ExpressionАлгоритм метрики мониторинга в формате Prometheus, например, rate(node_network_receive_bytes{instance="$server",device!~"lo"}[5m])
Metric UnitЕдиница измерения пользовательской метрики мониторинга, можно ввести вручную или выбрать из предустановленных платформой единиц
Legend ParameterУправляет именем, соответствующим кривой на графике, формат {{.LabelName}}, например, {{.hostname}}
Time RangeВременное окно для запросов логов/событий
Log ContentПоля запроса для содержимого логов (например, Error), несколько полей связаны через OR
Event ReasonПоля запроса для причин событий (Reason, например, BackOff, Pulling, Failed и др.), несколько полей связаны через OR
Trigger ConditionУсловие, состоящее из операторов сравнения, порогов оповещения и длительности (опционально).
alert LevelДелится на четыре уровня: Critical, Serious, Warning и Info. Можно установить разумный уровень оповещения в зависимости от влияния правил оповещений на бизнес для соответствующих ресурсов.
  1. Нажмите Create.

Создание политик оповещений с использованием alert Templates

  1. В левой навигационной панели нажмите Центр эксплуатации и обслуживания > alerts > alert Policies.
    Совет: Вы можете переключать целевой кластер через верхнюю панель навигации.
  2. Нажмите кнопку раскрытия рядом с кнопкой Create alert Policy > Template Create alert Policy.
  3. Настройте некоторые параметры, опираясь на описания ниже:
ПараметрОписание
Template NameИмя используемого шаблона оповещений. Шаблоны классифицированы по кластерам, узлам и вычислительным компонентам. При выборе шаблона можно просмотреть правила оповещений, политики уведомлений и другую информацию, заданную в шаблоне оповещений.
Resource TypeВыберите, является ли шаблон шаблоном политики оповещений для Cluster, Node или Computing Component; будет отображено соответствующее имя ресурса.
  1. Нажмите Create.

Настройка заглушения оповещений

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

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

Примечание: Когда статус заглушения достигает времени окончания, настройка заглушения автоматически снимается.

Настройка через UI

  1. В левой навигационной панели нажмите Центр эксплуатации и обслуживания > alerts > alert Policies.

  2. Нажмите кнопку действий справа от политики оповещений, которую нужно заглушить > Set Silence.

  3. Включите переключатель alert Silence.

    Совет: Этот переключатель управляет применением настройки заглушения. Чтобы отменить заглушение, просто выключите переключатель.

  4. Настройте соответствующие параметры согласно описаниям ниже:

    Совет: Если не выбран диапазон заглушения или имя ресурса, по умолчанию используется Any, что означает, что последующие действия Delete/Add ресурсов будут соответствовать удалению/добавлению заглушения в политиках оповещений; если выбрано "Select All", заглушение применяется только к текущему выбранному диапазону ресурсов, и последующие действия Delete/Add ресурсов не обрабатываются.

    ПараметрОписание
    Silence RangeОбласть ресурсов, на которую распространяется настройка заглушения.
    Resource NameИмя объекта ресурса, на который направлено заглушение.
    Silence TimeВременной диапазон заглушения оповещений. Оповещение переходит в состояние заглушения в начале времени заглушения, и если политика оповещений остаётся в состоянии оповещения или срабатывает после окончания времени заглушения, уведомления возобновляются. Permanent: настройка заглушения действует до удаления политики оповещений. Custom: пользовательская настройка времени начала и окончания заглушения с интервалом не менее 5 минут.
  5. Нажмите Set.

    Совет: С момента установки заглушения до начала времени заглушения статус политики оповещений считается Silence Waiting. В этот период при срабатывании правил уведомления отправляются как обычно; с начала заглушения до её окончания статус политики — Silencing, и при срабатывании правил уведомления не отправляются.

Настройка через CLI

  1. Укажите имя ресурса политики оповещений, для которой нужно настроить заглушение, и выполните команду:

    kubectl edit PrometheusRule <TheNameOfThealertPolicyYouWantToSet>
  2. Измените ресурс, добавив аннотации заглушения, как показано в примере, и отправьте изменения.

    ---
    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      annotations:
        alert.cpaas.io/cluster: global
        alert.cpaas.io/kind: Node
        alert.cpaas.io/name: 0.0.0.0
        alert.cpaas.io/namespace: cpaas-system
        alert.cpaas.io/notifications: '[]'
        alert.cpaas.io/rules.description: '{}'
        alert.cpaas.io/rules.disabled: '[]'
        alert.cpaas.io/rules.version: '23'
        alert.cpaas.io/silence.config:
          '{"startsAt":"2025-02-08T08:01:37Z","endsAt":"2025-02-22T08:01:37Z","creator":"leizhu@alauda.io","resources":{"nodes":[{"name":"192.168.36.11","ip":"192.168.36.11"},{"name":"192.168.36.12","ip":"192.168.36.12"},{"name":"192.168.36.13","ip":"192.168.36.13"}]}}'
          # Конфигурация заглушения для политик оповещений на уровне узлов, включая время начала, окончания, создателя и т.д.; если диапазон заглушения включает конкретные узлы, добавьте информацию resources.node как показано выше. Если требуется заглушение для всех ресурсов, поле resources не нужно.
        # alert.cpaas.io/silence.config: '{"startsAt":"2025-02-08T08:04:50Z","endsAt":"2199-12-31T00:00:00Z","creator":"leizhu@alauda.io","name":["alb-operator-ctl","apollo"],"namespace":["cpaas-system"]}'
        # Конфигурация заглушения для политик оповещений на уровне workload, включая время начала, окончания, создателя и т.д.; если диапазон заглушения включает конкретные workload, добавьте имя и namespace как показано выше. Если требуется заглушение для всех ресурсов, поля name и namespace не нужны.
        # Установка поля endsAt в 2199-12-31T00:00:00Z означает постоянное заглушение.
        alert.cpaas.io/subkind: ''
        cpaas.io/creator: leizhu@alauda.io
        cpaas.io/description: ''
        cpaas.io/display-name: policy3
        cpaas.io/updated-at: 2025-02-08T08:01:42Z
      labels:
      ## Исключены нерелевантные данные

Рекомендации по настройке правил оповещений

Большее количество правил оповещений не всегда означает лучший результат. Избыточные или сложные правила могут привести к лавине оповещений и увеличить нагрузку на обслуживание. Рекомендуется ознакомиться с приведёнными ниже рекомендациями перед настройкой правил, чтобы пользовательские правила достигали своих целей при сохранении эффективности.

  • Используйте минимально необходимое количество новых правил: Создавайте только те правила, которые соответствуют вашим конкретным требованиям. Использование минимального количества правил позволяет создать более управляемую и централизованную систему оповещений в среде мониторинга.
  • Фокусируйтесь на симптомах, а не на причинах: Создавайте правила, которые уведомляют пользователей о симптомах, а не о корневых причинах этих симптомов. Это гарантирует, что при появлении соответствующих симптомов пользователи получат оповещения и смогут исследовать причины, вызвавшие эти оповещения. Такой подход значительно сокращает общее количество необходимых правил.
  • Планируйте и оценивайте потребности перед внесением изменений: Сначала определите, какие симптомы важны и какие действия вы хотите, чтобы пользователи выполняли при их появлении. Затем оцените существующие правила, чтобы решить, можно ли их изменить для достижения целей без создания новых правил для каждого симптома. Модификация существующих правил и тщательное создание новых помогает упростить систему оповещений.
  • Предоставляйте чёткие сообщения оповещений: При создании сообщений оповещений включайте описание симптомов, возможных причин и рекомендуемых действий. Информация должна быть ясной, краткой и содержать процедуры устранения неполадок или ссылки на дополнительную релевантную информацию. Это помогает пользователям быстро оценивать ситуацию и принимать соответствующие меры.
  • Разумно устанавливайте уровни серьёзности: Назначайте уровням серьёзности правила, чтобы указать, как пользователи должны реагировать при срабатывании оповещений. Например, классифицируйте оповещения с уровнем Critical как требующие немедленных действий соответствующего персонала. Установление уровней серьёзности помогает пользователям принимать решения о реакции на оповещения и обеспечивает своевременное реагирование на критические проблемы.