Перейти к основному содержимому

Мониторинг и оповещения с Prometheus и Grafana

Selena предоставляет решение для мониторинга и оповещений с использованием Prometheus и Grafana. Это позволяет визуализировать работу вашего кластера, облегчая мониторинг и устранение неполадок.

Обзор

Selena предоставляет совместимый с Prometheus интерфейс для сбора информации. Prometheus может получать метрическую информацию Selena, подключаясь к HTTP-портам узлов BE и FE и сохраняя информацию в своей собственной базе данных временных рядов. Grafana затем может использовать Prometheus в качестве источника данных для визуализации метрической информации. Используя шаблоны панелей мониторинга, предоставляемые Selena, вы можете легко отслеживать свой кластер Selena и настраивать для него оповещения с помощью Grafana.

MA-1

Выполните следующие шаги для интеграции вашего кластера Selena с Prometheus и Grafana:

  1. Установите необходимые компоненты - Prometheus и Grafana.
  2. Изучите основные метрики мониторинга Selena.
  3. Настройте канал оповещений и правила оповещений.

Шаг 1: Установка компонентов мониторинга

Порты по умолчанию Prometheus и Grafana не конфликтуют с портами Selena. Однако для продакшена рекомендуется развертывать их на отдельном сервере от ваших кластеров Selena. Это снижает риск конфликтов ресурсов и избегает потенциального сбоя оповещений из-за аномального отключения сервера.

Кроме того, обратите внимание, что Prometheus и Grafana не могут отслеживать доступность своих собственных сервисов. Поэтому в продакшн-среде рекомендуется использовать Supervisor для настройки службы heartbeat для них.

Следующий учебник развертывает компоненты мониторинга на узле мониторинга (IP: 192.168.110.23) с использованием пользователя ОС root. Они отслеживают следующий кластер Selena (который использует порты по умолчанию). При настройке службы мониторинга для вашего собственного кластера Selena на основе этого учебника вам нужно только заменить IP-адреса.

ХостIPПользователь ОССервисы
node01192.168.110.101root1 FE + 1 BE
node02192.168.110.102root1 FE + 1 BE
node03192.168.110.103root1 FE + 1 BE

ПРИМЕЧАНИЕ

Prometheus и Grafana могут отслеживать только узлы FE, BE и CN, но не узлы Broker.

1.1 Развертывание Prometheus

1.1.1 Загрузка Prometheus

Для Selena вам нужно только загрузить установочный пакет сервера Prometheus. Загрузите пакет на узел мониторинга.

Нажмите здесь, чтобы загрузить Prometheus.

Возьмем в качестве примера LTS версию v2.45.0, нажмите на пакет, чтобы загрузить его.

MA-2

Альтернативно, вы можете загрузить его с помощью команды wget:

# Следующий пример загружает LTS версию v2.45.0.
# Вы можете загрузить другие версии, заменив номер версии в команде.
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz

После завершения загрузки загрузите или скопируйте установочный пакет в каталог /opt на узле мониторинга.

1.1.2 Установка Prometheus

  1. Перейдите в /opt и распакуйте установочный пакет Prometheus.

    cd /opt
    tar xvf prometheus-2.45.0.linux-amd64.tar.gz
  2. Для удобства управления переименуйте распакованный каталог в prometheus.

    mv prometheus-2.45.0.linux-amd64 prometheus
  3. Создайте путь для хранения данных для Prometheus.

    mkdir prometheus/data
  4. Для удобства управления вы можете создать файл запуска системной службы для Prometheus.

    vim /etc/systemd/system/prometheus.service

    Добавьте следующее содержимое в файл:

    [Unit]
    Description=Prometheus service
    After=network.target

    [Service]
    User=root
    Type=simple
    ExecReload=/bin/sh -c "/bin/kill -1 `/usr/bin/pgrep prometheus`"
    ExecStop=/bin/sh -c "/bin/kill -9 `/usr/bin/pgrep prometheus`"
    ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data --storage.tsdb.retention.time=30d --storage.tsdb.retention.size=30GB

    [Install]
    WantedBy=multi-user.target

    Затем сохраните и выйдите из редактора.

    ПРИМЕЧАНИЕ

    Если вы развертываете Prometheus по другому пути, убедитесь, что синхронизируете путь в команде ExecStart в файле выше. Кроме того, файл настраивает условия истечения срока действия для хранения данных Prometheus как "30 дней или более" или "больше 30 ГБ". Вы можете изменить это в соответствии с вашими потребностями.

  5. Измените конфигурационный файл Prometheus prometheus/prometheus.yml. Этот файл имеет строгие требования к формату содержимого. Обратите особое внимание на пробелы и отступы при внесении изменений.

    vim prometheus/prometheus.yml

    Добавьте следующее содержимое в файл:

    global:
    scrape_interval: 15s # Установить глобальный интервал сбора данных в 15 секунд. По умолчанию 1 минута.
    evaluation_interval: 15s # Установить глобальный интервал оценки правил в 15 секунд. По умолчанию 1 минута.
    scrape_configs:
    - job_name: 'Selena_Cluster01' # Отслеживаемый кластер соответствует заданию. Здесь вы можете настроить имя кластера Selena.
    metrics_path: '/metrics' # Указать Restful API для получения метрик мониторинга.
    static_configs:
    # Следующая конфигурация указывает группу FE, которая включает 3 узла FE.
    # Здесь вам нужно заполнить IP и HTTP-порты, соответствующие каждому FE.
    # Если вы изменили HTTP-порты во время развертывания кластера, обязательно настройте их соответственно.
    - targets: ['192.168.110.101:8030','192.168.110.102:8030','192.168.110.103:8030']
    labels:
    group: fe
    # Следующая конфигурация указывает группу BE, которая включает 3 узла BE.
    # Здесь вам нужно заполнить IP и HTTP-порты, соответствующие каждому BE.
    # Если вы изменили HTTP-порты во время развертывания кластера, обязательно настройте их соответственно.
    - targets: ['192.168.110.101:8040','192.168.110.102:8040','192.168.110.103:8040']
    labels:
    group: be

    После изменения конфигурационного файла вы можете использовать promtool для проверки действительности изменения.

    ./prometheus/promtool check config prometheus/prometheus.yml

    Следующее сообщение указывает, что проверка прошла успешно. Затем вы можете продолжить.

    SUCCESS: prometheus/prometheus.yml is valid prometheus config file syntax
  6. Запустите Prometheus.

    systemctl daemon-reload
    systemctl start prometheus.service
  7. Проверьте статус Prometheus.

    systemctl status prometheus.service

    Если возвращается Active: active (running), это означает, что Prometheus успешно запущен.

    Вы также можете использовать netstat для проверки статуса порта Prometheus по умолчанию (9090).

    netstat -nltp | grep 9090
  8. Настройте Prometheus для запуска при загрузке.

    systemctl enable prometheus.service

Другие команды:

  • Остановить Prometheus.

    systemctl stop prometheus.service
  • Перезапустить Prometheus.

    systemctl restart prometheus.service
  • Перезагрузить конфигурации во время выполнения.

    systemctl reload prometheus.service
  • Отключить запуск при загрузке.

    systemctl disable prometheus.service

1.1.3 Доступ к Prometheus

Вы можете получить доступ к веб-интерфейсу Prometheus через браузер, порт по умолчанию - 9090. Для узла мониторинга в этом учебнике вам нужно посетить 192.168.110.23:9090.

На главной странице Prometheus перейдите в Status --> Targets в верхнем меню. Здесь вы можете увидеть все отслеживаемые узлы для каждого группового задания, настроенного в файле prometheus.yml. Обычно статус всех узлов должен быть UP, указывая на нормальную связь службы.

MA-3

На этом этапе Prometheus настроен и установлен. Для получения более подробной информации вы можете обратиться к Документации Prometheus.

1.2 Развертывание Grafana

1.2.1 Загрузка Grafana

Нажмите здесь, чтобы загрузить Grafana.

Альтернативно, вы можете использовать команду wget для загрузки установочного пакета Grafana RPM.

# Следующий пример загружает LTS версию v10.0.3.
# Вы можете загрузить другие версии, заменив номер версии в команде.
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-10.0.3-1.x86_64.rpm

1.2.2 Установка Grafana

  1. Используйте команду yum для установки Grafana. Эта команда автоматически установит зависимости, необходимые для Grafana.

    yum -y install grafana-enterprise-10.0.3-1.x86_64.rpm
  2. Запустите Grafana.

    systemctl start grafana-server.service
  3. Проверьте статус Grafana.

    systemctl status grafana-server.service

    Если возвращается Active: active (running), это означает, что Grafana успешно запущена.

    Вы также можете использовать netstat для проверки статуса порта Grafana по умолчанию (3000).

    netstat -nltp | grep 3000
  4. Настройте Grafana для запуска при загрузке.

    systemctl enable grafana-server.service

Другие команды:

  • Остановить Grafana.

    systemctl stop grafana-server.service
  • Перезапустить Grafana.

    systemctl restart grafana-server.service
  • Отключить запуск при загрузке.

    systemctl disable grafana-server.service

Для получения дополнительной информации обратитесь к Документации Grafana.

1.2.3 Доступ к Grafana

Вы можете получить доступ к веб-интерфейсу Grafana через браузер, порт по умолчанию - 3000. Для узла мониторинга в этом учебнике вам нужно посетить 192.168.110.23:3000. Имя пользователя и пароль по умолчанию, необходимые для входа, оба установлены как admin. При первом входе Grafana предложит вам изменить пароль входа по умолчанию. Если вы хотите пропустить это сейчас, вы можете нажать Skip. Затем вы будете перенаправлены на главную страницу веб-интерфейса Grafana.

MA-4

1.2.4 Настройка источников данных

Нажмите на кнопку меню в верхнем левом углу, разверните Administration, а затем нажмите Data sources.

MA-5

На появившейся странице нажмите Add data source, а затем выберите Prometheus.

MA-6

MA-7

Для интеграции Grafana с вашей службой Prometheus вам нужно изменить следующую конфигурацию:

  • Name: Имя источника данных. Вы можете настроить имя для источника данных.

    MA-8

  • Prometheus Server URL: URL сервера Prometheus, который в этом учебнике http://192.168.110.23:9090.

    MA-9

После завершения конфигурации нажмите Save & Test, чтобы сохранить и протестировать конфигурацию. Если отображается Successfully queried the Prometheus API, это означает, что источник данных доступен.

MA-10

1.2.5 Настройка Dashboard

  1. Загрузите соответствующий шаблон Dashboard на основе вашей версии Selena.

    ПРИМЕЧАНИЕ

    Файл шаблона нужно загрузить через веб-интерфейс Grafana. Поэтому вам нужно загрузить файл шаблона на машину, которую вы используете для доступа к Grafana, а не на сам узел мониторинга.

  2. Настройте шаблон Dashboard.

    Нажмите на кнопку меню в верхнем левом углу и нажмите Dashboards.

    MA-11

    На появившейся странице разверните кнопку New и нажмите Import.

    MA-12

    На новой странице нажмите на Upload Dashboard JSON file и загрузите файл шаблона, который вы загрузили ранее.

    MA-13

    После загрузки файла вы можете переименовать Dashboard. По умолчанию он называется Selena Overview. Затем выберите источник данных, который вы создали ранее (starrocks_monitor). Затем нажмите Import.

    MA-14

    После завершения импорта вы должны увидеть отображенный Dashboard Selena.

    MA-15

1.2.6 Мониторинг Selena через Grafana

Войдите в веб-интерфейс Grafana, нажмите на кнопку меню в верхнем левом углу и нажмите Dashboards.

MA-16

На появившейся странице выберите Selena Overview из каталога General.

MA-17

После входа в Dashboard мониторинга Selena вы можете вручную обновить страницу в верхнем правом углу или установить интервал автоматического обновления для мониторинга статуса кластера Selena.

MA-18

Шаг 2: Понимание основных метрик мониторинга

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

2.1 Метрики для статуса FE и BE

МетрикаОписаниеПравило оповещенияПримечание
Frontends StatusСтатус узла FE. Статус живого узла представлен как 1, в то время как узел, который не работает (DEAD), будет отображаться как 0.Статус всех узлов FE должен быть живым, и любой узел FE со статусом DEAD должен вызывать оповещение.Сбой любых узлов FE или BE считается критическим, и требует немедленного устранения неполадок для выявления причины сбоя.
Backends StatusСтатус узла BE. Статус живого узла представлен как 1, в то время как узел, который не работает (DEAD), будет отображаться как 0.Статус всех узлов BE должен быть живым, и любой узел BE со статусом DEAD должен вызывать оповещение.

2.2 Метрики для сбоев запросов

МетрикаОписаниеПравило оповещенияПримечание
Query ErrorЧастота сбоев запросов (включая тайм-аут) в течение одной минуты. Его значение рассчитывается как количество неудачных запросов за одну минуту, деленное на 60 секунд.Вы можете настроить это на основе фактического QPS вашего бизнеса. 0.05, например, может использоваться как предварительная настройка. Вы можете настроить это позже по мере необходимости.Обычно частота сбоев запросов должна быть низкой. Установка этого порога на 0.05 означает разрешение максимум 3 неудачных запросов в минуту. Если вы получите оповещение от этого элемента, вы можете проверить использование ресурсов или настроить тайм-аут запроса соответствующим образом.

2.3 Метрики для сбоев внешних операций

МетрикаОписаниеПравило оповещенияПримечание
Schema ChangeЧастота сбоев операций Schema Change.Schema Change - это низкочастотная операция. Вы можете настроить этот элемент для отправки оповещения немедленно при сбое.Обычно операции Schema Change не должны завершаться неудачей. Если оповещение срабатывает для этого элемента, вы можете рассмотреть увеличение лимита памяти для операций Schema Change, который по умолчанию установлен на 2 ГБ.

2.4 Метрики для сбоев внутренних операций

МетрикаОписаниеПравило оповещенияПримечание
BE Compaction ScoreНаивысший Compaction Score среди всех узлов BE, указывающий на текущее давление compaction.В типичных офлайн-сценариях это значение обычно ниже 100. Однако, когда есть большое количество задач загрузки, Compaction Score может значительно увеличиться. В большинстве случаев требуется вмешательство, когда это значение превышает 800.Обычно, если Compaction Score больше 1000, Selena вернет ошибку "Too many versions". В таких случаях вы можете рассмотреть снижение параллелизма и частоты загрузки.
CloneЧастота сбоев операций клонирования tablet.Вы можете настроить этот элемент для отправки оповещения немедленно при сбое.Если оповещение срабатывает для этого элемента, вы можете проверить статус узлов BE, статус диска и статус сети.

2.5 Метрики для доступности сервиса

МетрикаОписаниеПравило оповещенияПримечание
Meta Log CountКоличество записей журнала метаданных BDB на узле FE.Рекомендуется настроить этот элемент для немедленного оповещения, если он превышает 100,000.По умолчанию ведущий узел FE запускает checkpoint для сброса журнала на диск, когда количество журналов превышает 50,000. Если это значение превышает 50,000 на большую величину, это обычно указывает на сбой checkpoint. Вы можете проверить, разумна ли конфигурация кучи памяти Xmx в fe.conf.

2.6 Метрики для системной нагрузки

МетрикаОписаниеПравило оповещенияПримечание
BE CPU IdleЧастота простоя CPU узла BE.Рекомендуется настроить этот элемент для оповещения, если частота простоя ниже 10% в течение 30 последовательных секунд.Этот элемент используется для мониторинга узких мест ресурсов CPU. Использование CPU может значительно колебаться, и установка небольшого интервала опроса может привести к ложным оповещениям. Поэтому вам нужно настроить этот элемент на основе фактических бизнес-условий. Если у вас есть несколько задач пакетной обработки или большое количество запросов, вы можете рассмотреть установку более низкого порога.
BE MemИспользование памяти для узла BE.Рекомендуется настроить этот элемент на 90% от доступного размера памяти для каждого BE.Это значение эквивалентно значению Process Mem, и лимит памяти BE по умолчанию составляет 90% от размера памяти сервера (контролируется конфигурацией mem_limit в be.conf). Если вы развернули другие сервисы на том же сервере, обязательно настройте это значение, чтобы избежать OOM. Порог оповещения для этого элемента должен быть установлен на 90% от фактического лимита памяти BE, чтобы вы могли подтвердить, достигли ли ресурсы памяти BE узкого места.
Disks Avail CapacityСоотношение доступного дискового пространства (процент) локальных дисков на каждом узле BE.Рекомендуется настроить этот элемент для оповещения, если значение меньше 20%.Рекомендуется зарезервировать достаточное доступное пространство для Selena на основе ваших бизнес-требований.
FE JVM Heap StatПроцент использования кучи памяти JVM для каждого узла FE в кластере.Рекомендуется настроить этот элемент для оповещения, если значение больше или равно 80%.Если оповещение срабатывает для этого элемента, рекомендуется увеличить конфигурацию кучи памяти Xmx в fe.conf; в противном случае это может повлиять на эффективность запросов или привести к проблемам FE OOM.

Шаг 3: Настройка оповещений по электронной почте

3.1 Настройка службы SMTP

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

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

После выполнения этих шагов измените конфигурационный файл Grafana на узле, где развернута Grafana.

vim /usr/share/grafana/conf/defaults.ini

Пример:

###################### SMTP / Emailing #####################
[smtp]
enabled = true
host = <smtp_server_address_and_port>
user = johndoe@gmail.com
# If the password contains # or ; you have to wrap it with triple quotes.Ex """#password;"""
password = ABCDEFGHIJKLMNOP # Пароль авторизации, полученный после включения SMTP.
cert_file =
key_file =
skip_verify = true ## Проверить SSL для SMTP-сервера
from_address = johndoe@gmail.com ## Адрес, используемый при отправке электронных писем.
from_name = Grafana
ehlo_identity =
startTLS_policy =

[emails]
welcome_email_on_sign_up = false
templates_pattern = emails/*.html, emails/*.txt
content_types = text/html

Вам нужно изменить следующие элементы конфигурации:

  • enabled: Разрешить ли Grafana отправлять оповещения по электронной почте. Установите этот элемент в true.
  • host: SMTP-сервер и порт для вашей электронной почты, разделенные двоеточием (:). Пример: smtp.gmail.com:465.
  • user: Имя пользователя SMTP.
  • password: Пароль авторизации, полученный после включения SMTP.
  • skip_verify: Пропускать ли проверку SSL для SMTP-сервера. Установите этот элемент в true.
  • from_address: Адрес электронной почты, используемый для отправки оповещений.

После завершения конфигурации перезапустите Grafana.

systemctl daemon-reload
systemctl restart grafana-server.service

3.2 Создание канала оповещений

Вам нужно создать канал оповещений (Contact Point) в Grafana, чтобы указать, как уведомлять контакты при срабатывании оповещения.

  1. Войдите в веб-интерфейс Grafana, нажмите на кнопку меню в верхнем левом углу, разверните Alerting и выберите Contact Points. На странице Contact points нажмите Add contact point, чтобы создать новый канал оповещений.

    MA-19

  2. В поле Name настройте имя точки контакта. Затем в выпадающем списке Integration выберите Email.

    MA-20

  3. В поле Addresses введите адреса электронной почты контактов для получения оповещения. Если есть несколько адресов электронной почты, разделите адреса точками с запятой (;), запятыми (,) или переносами строк.

    Конфигурации на странице можно оставить со значениями по умолчанию, за исключением следующих двух элементов:

    • Single email: При включении, если есть несколько контактов, оповещение будет отправлено им через одно электронное письмо. Рекомендуется включить этот элемент.
    • Disable resolved message: По умолчанию, когда проблема, вызвавшая оповещение, решена, Grafana отправляет другое уведомление о восстановлении сервиса. Если вам не нужно это уведомление о восстановлении, вы можете отключить этот элемент. Не рекомендуется отключать эту опцию.
  4. После завершения конфигурации нажмите кнопку Test в верхнем правом углу страницы. В появившемся запросе нажмите Sent test notification. Если ваша служба SMTP и конфигурация адреса правильны, целевая учетная запись электронной почты должна получить тестовое электронное письмо с темой "TestAlert Grafana". После подтверждения, что вы можете успешно получать тестовые оповещения по электронной почте, нажмите кнопку Save contact point внизу страницы, чтобы завершить конфигурацию.

    MA-21

    MA-22

Вы можете настроить несколько методов уведомления для каждой точки контакта через "Add contact point integration", что не будет подробно рассматриваться здесь. Для получения дополнительных сведений о Contact Points вы можете обратиться к Документации Grafana

Для последующей демонстрации предположим, что на этом шаге вы создали две точки контакта, "SelenaДев" и "SelenaОп", используя разные адреса электронной почты.

3.3 Установка политик уведомлений

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

  1. Войдите в веб-интерфейс Grafana, нажмите на кнопку меню в верхнем левом углу, разверните Alerting и выберите Notification policies.

    MA-23

  2. На странице Notification policies нажмите значок больше (...) справа от Default policy и нажмите Edit, чтобы изменить политику по умолчанию.

    MA-24

    MA-25

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

    1. В поле Default contact point выберите точку контакта, которую вы создали ранее, например, "SelenaОп".

    2. Group by - это ключевая концепция в Grafana Alerting, группирующая экземпляры оповещений с похожими характеристиками в единую воронку. Этот учебник не включает группировку, и вы можете использовать настройку по умолчанию.

      MA-26

    3. Разверните поле Timing options и настройте Group wait, Group interval и Repeat interval.

      • Group wait: Время ожидания для отправки первоначального уведомления после того, как новое оповещение создает новую группу. По умолчанию 30 секунд.
      • Group interval: Интервал, с которым оповещения отправляются для существующей группы. По умолчанию 5 минут, что означает, что уведомления не будут отправлены этой группе раньше, чем через 5 минут с момента отправки предыдущего оповещения. Это означает, что уведомления не будут отправлены раньше, чем через 5 минут (по умолчанию) с момента доставки последней партии обновлений, независимо от того, был ли интервал правила оповещения для этих экземпляров оповещения ниже. По умолчанию 5 минут.
      • Repeat interval: Время ожидания для повторной отправки оповещения после их успешной отправки. Интервал, с которым оповещения отправляются для существующей группы. По умолчанию 5 минут, что означает, что уведомления не будут отправлены этой группе раньше, чем через 5 минут с момента отправки предыдущего оповещения.

      Вы можете настроить параметры, как показано ниже, чтобы Grafana отправляла оповещение по этим правилам: через 0 секунд (Group wait) после выполнения условий оповещения, Grafana отправит первое оповещение по электронной почте. После этого Grafana будет повторно отправлять оповещение каждую 1 минуту (Group interval + Repeat interval).

      MA-27

      ПРИМЕЧАНИЕ

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

  3. После завершения конфигурации нажмите Update default policy.

  4. Если вам нужно создать вложенную политику, нажмите на New nested policy на странице Notification policies.

    Вложенные политики используют метки для определения правил соответствия. Метки, определенные во вложенной политике, могут использоваться как условия для соответствия при настройке правил оповещений позже. Следующий пример настраивает метку как Group=Development_team.

    MA-28

    В поле Contact point выберите "SelenaДев". Таким образом, при настройке правил оповещений с меткой Group=Development_team, "SelenaДев" настроен для получения оповещений.

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

    MA-29

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

3.4 Определение правил оповещений

После настройки политик уведомлений вам также нужно определить правила оповещений для Selena.

Войдите в веб-интерфейс Grafana и найдите и перейдите к ранее настроенному Dashboard Selena Overview.

MA-30

MA-31

3.4.1 Правило оповещения о статусе FE и BE

Для кластера Selena статус всех узлов FE и BE должен быть живым. Любой узел со статусом DEAD должен вызывать оповещение.

Следующий пример использует метрики Frontends Status и Backends Status под Selena Overview для мониторинга статуса FE и BE. Поскольку вы можете настроить несколько кластеров Selena в Prometheus, обратите внимание, что метрики Frontends Status и Backends Status предназначены для всех кластеров, которые вы зарегистрировали.

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

Выполните следующие процедуры для настройки оповещений для Frontends Status:

  1. Нажмите на значок Больше (...) справа от элемента мониторинга Frontends Status и нажмите Edit.

    MA-32

  2. На новой странице выберите Alert, затем нажмите Create alert rule from this panel, чтобы войти на страницу создания правил.

    MA-33

  3. Установите имя правила в поле Rule name. Значение по умолчанию - это заголовок метрики мониторинга. Если у вас есть несколько кластеров, вы можете добавить имя кластера в качестве префикса для различения, например, "[PROD]Frontends Status".

    MA-34

  4. Настройте правило оповещения следующим образом.

    1. Выберите Grafana managed alert.
    2. Для раздела B измените правило на (up{group="fe"}).
    3. Нажмите на значок удаления справа от раздела A, чтобы удалить раздел A.
    4. Для раздела C измените поле Input на B.
    5. Для раздела D измените условие на IS BELOW 1.

    После завершения этих настроек страница будет выглядеть, как показано ниже:

    MA-35

    Нажмите, чтобы просмотреть подробные инструкции

    Настройка правил оповещений в Grafana обычно включает три шага:

    1. Получить значения метрик из Prometheus через запросы PromQL. PromQL - это DSL язык запросов данных, разработанный Prometheus, и он также используется в JSON-шаблонах Dashboard. Свойство expr каждого элемента мониторинга соответствует соответствующему PromQL. Вы можете нажать Run queries на странице настроек правил, чтобы просмотреть результаты запроса.
    2. Применить функции и режимы для обработки данных результата из вышеуказанных запросов. Обычно вам нужно использовать функцию Last для получения последнего значения и использовать режим Strict, чтобы убедиться, что если возвращаемое значение является нечисловыми данными, оно может отображаться как NaN.
    3. Установить правила для обработанных результатов запроса. Взяв FE в качестве примера, если статус узла FE живой, результат вывода 1. Если узел FE не работает, результат 0. Поэтому вы можете установить правило IS BELOW 1, означающее, что оповещение будет срабатывать при возникновении этого условия.
  5. Настройте правила оценки оповещений.

    Согласно документации Grafana, вам нужно настроить частоту оценки правил оповещений и частоту изменения их статуса. Простыми словами, это включает настройку "как часто проверять правила оповещений" и "как долго должно сохраняться аномальное состояние после обнаружения перед срабатыванием оповещения (чтобы избежать ложных оповещений, вызванных переходными всплесками)". Каждая группа оценки содержит независимый интервал оценки для определения частоты проверки правил оповещений. Вы можете создать новую папку с именем PROD специально для производственного кластера Selena и создать новую группу оценки 01 внутри нее. Затем настройте эту группу для проверки каждые 10 секунд и срабатывания оповещения, если аномалия сохраняется в течение 30 секунд.

    MA-36

    ПРИМЕЧАНИЕ

    Ранее упомянутая опция "Disable resolved message" в разделе конфигурации канала оповещений, которая контролирует время отправки электронных писем для восстановления службы кластера, также зависит от параметра "Evaluate every" выше. Другими словами, когда Grafana выполняет новую проверку и обнаруживает, что служба восстановлена, она отправляет электронное письмо для уведомления контактов.

  6. Добавьте аннотации оповещений.

    В разделе Add details for your alert rule нажмите Add annotation, чтобы настроить содержимое оповещения по электронной почте. Обратите внимание, не изменяйте поля Dashboard UID и Panel ID.

    MA-37

    В выпадающем списке Choose выберите Description и добавьте описательное содержимое для оповещения по электронной почте, например, "Узел FE в вашем производственном кластере Selena вышел из строя, пожалуйста, проверьте!"

  7. Сопоставьте политики уведомлений.

    Укажите политику уведомлений для правила оповещения. По умолчанию все правила оповещений соответствуют политике по умолчанию. Когда условие оповещения выполнено, Grafana будет использовать точку контакта "SelenaОп" в политике по умолчанию для отправки сообщений оповещений в настроенную группу электронной почты.

    MA-38

    Если вы хотите использовать вложенную политику, установите поле Label в соответствующую вложенную политику, например, Group=Development_team.

    Пример:

    MA-39

    Когда условие оповещения выполнено, электронные письма будут отправлены в "SelenaДев" вместо "SelenaОп" в политике по умолчанию.

  8. После завершения всех конфигураций нажмите Save rule and exit.

    MA-40

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

Вы можете вручную остановить узел FE для тестирования оповещения. В этот момент символ в форме сердца справа от Frontends Status изменится с зеленого на желтый, а затем на красный.

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

MA-41

Желтый: Указывает, что во время последней периодической проверки экземпляр элемента метрики был обнаружен аномальным, но продолжительность аномального состояния еще не достигла "Duration", настроенной выше. В этот момент Grafana не будет отправлять оповещение и будет продолжать периодические проверки до тех пор, пока продолжительность аномального состояния не достигнет настроенной "Duration". В течение этого периода, если статус восстановлен, символ изменится обратно на зеленый.

MA-42

Красный: Когда продолжительность аномального состояния достигает настроенной "Duration", символ изменяется на красный, и Grafana отправит оповещение по электронной почте. Символ останется красным до тех пор, пока аномальное состояние не будет решено, после чего он изменится обратно на зеленый.

MA-43

Ручная приостановка оповещений

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

Перейдите на вкладку Alert, соответствующую элементу метрики на Dashboard, и нажмите значок редактирования:

MA-44

В разделе Alert Evaluation Behavior переключите переключатель Pause Evaluation в положение ON.

MA-45

ПРИМЕЧАНИЕ

После приостановки оценки вы получите электронное письмо, уведомляющее вас о том, что служба восстановлена.

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

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

Редактирование конфигурации для элемента метрики Backends Status:

  1. В разделе Set an alert rule name настройте имя как "[PROD]Backends Status".
  2. В разделе Set a query and alert condition установите PromSQL в (up{group="be"}) и используйте те же настройки, что и в правиле оповещения FE для других элементов.
  3. В разделе Alert evaluation behavior выберите каталог PROD и группу оценки 01, созданные ранее, и установите продолжительность в 30 секунд.
  4. В разделе Add details for your alert rule нажмите Add annotation, выберите Description и введите содержимое оповещения, например, "Узел BE в вашем производственном кластере Selena вышел из строя, пожалуйста, проверьте! Информация о стеке для сбоя BE будет напечатана в файле журнала BE be.out. Вы можете определить причину на основе журналов".
  5. В разделе Notifications настройте Labels так же, как правило оповещения FE. Если Labels не настроены, Grafana будет использовать политику по умолчанию и отправлять оповещения по электронной почте в канал оповещений "SelenaОп".

3.4.2 Правило оповещения о запросах

Элемент метрики для сбоев запросов - Query Error под Query Statistic.

Настройте правило оповещения для элемента метрики "Query Error" следующим образом:

  1. В разделе Set an alert rule name настройте имя как "[PROD] Query Error".
  2. В разделе Set a query and alert condition удалите раздел B. Установите Input в разделе A в C. В разделе C используйте значение по умолчанию для PromQL, которое rate(starrocks_fe_query_err{job="Selena_Cluster01"}[1m]), представляющее количество неудачных запросов в минуту, деленное на 60 секунд. Это включает как неудачные запросы, так и запросы, которые превысили лимит времени ожидания. Затем в разделе D настройте правило как A IS ABOVE 0.05.
  3. В разделе Alert evaluation behavior выберите каталог PROD и группу оценки 01, созданные ранее, и установите продолжительность в 30 секунд.
  4. В разделе Add details for your alert rule нажмите Add annotation, выберите Description и введите содержимое оповещения, например, "Высокая частота сбоев запросов, пожалуйста, проверьте использование ресурсов или настройте тайм-аут запроса разумно. Если запросы завершаются неудачей из-за тайм-аутов, вы можете настроить тайм-аут запроса, установив системную переменную query_timeout".
  5. В разделе Notifications настройте Labels так же, как правило оповещения FE. Если Labels не настроены, Grafana будет использовать политику по умолчанию и отправлять оповещения по электронной почте в канал оповещений "SelenaОп".

3.4.3 Правило оповещения о сбое пользовательских операций

Этот элемент отслеживает частоту сбоев операций Schema Change, соответствующую элементу метрики Schema Change под BE tasks. Он должен быть настроен для оповещения при значении больше 0.

  1. В разделе Set an alert rule name настройте имя как "[PROD] Schema Change".
  2. В разделе Set a query and alert condition удалите раздел A. Установите Input в разделе C в B. В разделе B используйте значение по умолчанию для PromQL, которое irate(starrocks_be_engine_requests_total{job="Selena_Cluster01", type="create_rollup", status="failed"}[1m]), представляющее количество неудачных задач Schema Change в минуту, деленное на 60 секунд. Затем в разделе D настройте правило как C IS ABOVE 0.
  3. В разделе Alert evaluation behavior выберите каталог PROD и группу оценки 01, созданные ранее, и установите продолжительность в 30 секунд.
  4. В разделе Add details for your alert rule нажмите Add annotation, выберите Description и введите содержимое оповещения, например, "Обнаружены неудачные задачи Schema Change, пожалуйста, проверьте немедленно. Вы можете увеличить лимит памяти, доступный для Schema Change, настроив параметр конфигурации BE memory_limitation_per_thread_for_schema_change, который по умолчанию установлен на 2 ГБ".
  5. В разделе Notifications настройте Labels так же, как правило оповещения FE. Если Labels не настроены, Grafana будет использовать политику по умолчанию и отправлять оповещения по электронной почте в канал оповещений "SelenaОп".

3.4.4 Правило оповещения о сбое операций Selena

BE Compaction Score

Этот элемент соответствует BE Compaction Score под Cluster Overview и используется для мониторинга давления compaction на кластер.

  1. В разделе Set an alert rule name настройте имя как "[PROD] BE Compaction Score".
  2. В разделе Set a query and alert condition настройте правило в разделе C как B IS ABOVE 0. Вы можете использовать значения по умолчанию для других элементов.
  3. В разделе Alert evaluation behavior выберите каталог PROD и группу оценки 01, созданные ранее, и установите продолжительность в 30 секунд.
  4. В разделе Add details for your alert rule нажмите Add annotation, выберите Description и введите содержимое оповещения, например, "Высокое давление compaction. Пожалуйста, проверьте, есть ли высокочастотные или высокопараллельные задачи загрузки, и уменьшите частоту загрузки. Если кластер имеет достаточные ресурсы CPU, памяти и I/O, рассмотрите настройку стратегии compaction кластера".
  5. В разделе Notifications настройте Labels так же, как правило оповещения FE. Если Labels не настроены, Grafana будет использовать политику по умолчанию и отправлять оповещения по электронной почте в канал оповещений "SelenaОп".
Clone

Этот элемент соответствует Clone в BE tasks и в основном используется для мониторинга операций балансировки реплик или восстановления реплик внутри Selena, которые обычно не должны завершаться неудачей.

  1. В разделе Set an alert rule name настройте имя как "[PROD] Clone".
  2. В разделе Set a query and alert condition удалите раздел A. Установите Input в разделе C в B. В разделе B используйте значение по умолчанию для PromQL, которое irate(starrocks_be_engine_requests_total{job="Selena_Cluster01", type="clone", status="failed"}[1m]), представляющее количество неудачных задач Clone в минуту, деленное на 60 секунд. Затем в разделе D настройте правило как C IS ABOVE 0.
  3. В разделе Alert evaluation behavior выберите каталог PROD и группу оценки 01, созданные ранее, и установите продолжительность в 30 секунд.
  4. В разделе Add details for your alert rule нажмите Add annotation, выберите Description и введите содержимое оповещения, например, "Обнаружен сбой в задаче clone. Пожалуйста, проверьте статус BE кластера, статус диска и статус сети".
  5. В разделе Notifications настройте Labels так же, как правило оповещения FE. Если Labels не настроены, Grafana будет использовать политику по умолчанию и отправлять оповещения по электронной почте в канал оповещений "SelenaОп".

3.4.5 Правило оповещения о доступности сервиса

Этот элемент отслеживает количество журналов метаданных в BDB, соответствующее элементу мониторинга Meta Log Count под Cluster Overview.

  1. В разделе Set an alert rule name настройте имя как "[PROD] Meta Log Count".
  2. В разделе Set a query and alert condition настройте правило в разделе C как B IS ABOVE 100000. Вы можете использовать значения по умолчанию для других элементов.
  3. В разделе Alert evaluation behavior выберите каталог PROD и группу оценки 01, созданные ранее, и установите продолжительность в 30 секунд.
  4. В разделе Add details for your alert rule нажмите Add annotation, выберите Description и введите содержимое оповещения, например, "Обнаружено, что количество метаданных в FE BDB значительно выше ожидаемого значения, что может указывать на неудачную операцию Checkpoint. Пожалуйста, проверьте, разумна ли конфигурация кучи памяти Xmx в конфигурационном файле FE fe.conf".
  5. В разделе Notifications настройте Labels так же, как правило оповещения FE. Если Labels не настроены, Grafana будет использовать политику по умолчанию и отправлять оповещения по электронной почте в канал оповещений "SelenaОп".

3.4.6 Правило оповещения о перегрузке системы

BE CPU Idle

Этот элемент отслеживает частоту простоя CPU на узлах BE.

  1. В разделе Set an alert rule name настройте имя как "[PROD] BE CPU Idle".
  2. В разделе Set a query and alert condition настройте правило в разделе C как B IS BELOW 10. Вы можете использовать значения по умолчанию для других элементов.
  3. В разделе Alert evaluation behavior выберите каталог PROD и группу оценки 01, созданные ранее, и установите продолжительность в 30 секунд.
  4. В разделе Add details for your alert rule нажмите Add annotation, выберите Description и введите содержимое оповещения, например, "Обнаружено, что нагрузка CPU BE постоянно высокая. Это повлияет на другие задачи в кластере. Пожалуйста, проверьте, аномален ли кластер или есть ли узкое место ресурсов CPU".
  5. В разделе Notifications настройте Labels так же, как правило оповещения FE. Если Labels не настроены, Grafana будет использовать политику по умолчанию и отправлять оповещения по электронной почте в канал оповещений "SelenaОп".
BE Memory

Этот элемент соответствует BE Mem под BE, отслеживая использование памяти на узлах BE.

  1. В разделе Set an alert rule name настройте имя как "[PROD] BE Mem".
  2. В разделе Set a query and alert condition настройте PromSQL как starrocks_be_process_mem_bytes{job="Selena_Cluster01"}/(<be_mem_limit>*1024*1024*1024), где <be_mem_limit> нужно заменить на текущий лимит доступной памяти узла BE, то есть размер памяти сервера, умноженный на значение элемента конфигурации BE mem_limit. Пример: starrocks_be_process_mem_bytes{job="Selena_Cluster01"}/(49*1024*1024*1024). Затем в разделе C настройте правило как B IS ABOVE 0.9.
  3. В разделе Alert evaluation behavior выберите каталог PROD и группу оценки 01, созданные ранее, и установите продолжительность в 30 секунд.
  4. В разделе Add details for your alert rule нажмите Add annotation, выберите Description и введите содержимое оповещения, например, "Обнаружено, что использование памяти BE постоянно высокое. Чтобы предотвратить сбой запроса, пожалуйста, рассмотрите расширение размера памяти или добавление узлов BE".
  5. В разделе Notifications настройте Labels так же, как правило оповещения FE. Если Labels не настроены, Grafana будет использовать политику по умолчанию и отправлять оповещения по электронной почте в канал оповещений "SelenaОп".
Disks Avail Capacity

Этот элемент соответствует Disk Usage под BE, отслеживая соотношение оставшегося пространства в каталоге, где расположен путь хранения BE.

  1. В разделе Set an alert rule name настройте имя как "[PROD] Disks Avail Capacity".
  2. В разделе Set a query and alert condition настройте правило в разделе C как B`` IS BELOW 0.2. Вы можете использовать значения по умолчанию для других элементов.
  3. В разделе Alert evaluation behavior выберите каталог PROD и группу оценки 01, созданные ранее, и установите продолжительность в 30 секунд.
  4. В разделе Add details for your alert rule нажмите Add annotation, выберите Description и введите содержимое оповещения, например, "Обнаружено, что доступное пространство диска BE ниже 20%, пожалуйста, освободите дисковое пространство или расширьте диск".
  5. В разделе Notifications настройте Labels так же, как правило оповещения FE. Если Labels не настроены, Grafana будет использовать политику по умолчанию и отправлять оповещения по электронной почте в канал оповещений "SelenaОп".
FE JVM Heap Stat

Этот элемент соответствует Cluster FE JVM Heap Stat под Overview, отслеживая долю использования памяти JVM FE к лимиту памяти кучи FE.

  1. В разделе Set an alert rule name настройте имя как "[PROD] FE JVM Heap Stat".
  2. В разделе Set a query and alert condition настройте правило в разделе C как B IS ABOVE 80. Вы можете использовать значения по умолчанию для других элементов.
  3. В разделе Alert evaluation behavior выберите каталог PROD и группу оценки 01, созданные ранее, и установите продолжительность в 30 секунд.
  4. В разделе Add details for your alert rule нажмите Add annotation, выберите Description и введите содержимое оповещения, например, "Обнаружено, что использование памяти кучи FE высокое, пожалуйста, настройте лимит памяти кучи в конфигурационном файле FE fe.conf".
  5. В разделе Notifications настройте Labels так же, как правило оповещения FE. Если Labels не настроены, Grafana будет использовать политику по умолчанию и отправлять оповещения по электронной почте в канал оповещений "SelenaОп".

Вопросы и ответы

В: Почему Dashboard не может обнаружить аномалии?

О: Dashboard Grafana полагается на системное время сервера, на котором он размещен, для получения значений элементов мониторинга. Если страница Dashboard Grafana остается неизменной после аномалии кластера, вы можете проверить, синхронизированы ли системные часы серверов, а затем выполнить калибровку времени кластера.

В: Как можно реализовать градацию оповещений?

О: Взяв элемент Query Error в качестве примера, вы можете создать два правила оповещений для него с разными порогами оповещений. Например:

  • Уровень риска: Установите частоту сбоев больше 0.05, указывая на риск. Отправьте оповещение команде разработки.
  • Уровень серьезности: Установите частоту сбоев больше 0.20, указывая на серьезность. В этот момент уведомление об оповещении будет отправлено одновременно как команде разработки, так и команде эксплуатации.