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

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

В этом разделе описано, как настраивать компоненты оповещений и управлять их использованием. MatrixDB поддерживает оповещения по следующим метрикам:

  • Состояние подключения к базе данных
  • Сбой экземпляра в кластере
  • Использование диска в каталоге данных превышает заданный порог
  • Чтение/запись диска превышает заданный порог

Для каждой метрики доступны четыре метода уведомлений. Вы можете выбрать один или комбинировать несколько методов:

  • Оповещения по SMS
  • Голосовые вызовы
  • Оповещения по электронной почте
  • Оповещения в DingTalk

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

После развертывания вы увидите интерфейс, аналогичный следующему:
Стандартная панель оповещений

1. Развертывание

Перед импортом предопределенных дашбордов оповещений необходимо скопировать файл alert.json с сервера на локальную машину. Процесс аналогичен импорту dashboard.json и database.json в Grafana: найдите файл на сервере, скопируйте его и загрузите локально. Выполните следующие шаги:

Войдите на сервер и переключитесь на пользователя mxadmin. Найдите файл alert.json по указанному в изображении пути. Вы можете использовать команду cd, команду find или любой другой предпочитаемый метод.

[mxadmin@mdw ~]$ cd /usr/local/matrixdb/share/doc/postgresql/extension

##or

[mxadmin@mdw ~]$ find /usr/local/matrixdb/share/doc/postgresql/extension -name alert.json

Затем используйте команду scp, чтобы скопировать файл на локальную машину. Возможны проблемы с правами доступа, поэтому рекомендуется сначала скопировать файл в общую директорию /tmp/, а затем перенести его из /tmp/ на локальную систему.

Примечание!
При копировании из /tmp/ убедитесь, что вы корректно переключаете пользователей, чтобы избежать ошибок прав доступа.

[mxadmin@mdw]$ scp mxadmin@<server IP>:/usr/local/matrixdb/share/doc/postgresql/extension/"alert.json" mxadmin@<server IP>:/tmp/

~ scp waq@<server IP>:/tmp/"alert.json" /Users/akkepler/workplace/Grafana

Наконец, откройте локальную папку или используйте командную строку, чтобы убедиться, что файл успешно скопирован. После подтверждения замените все вхождения переменной $host в локальном файле alert.json на фактические имена хостов вашего кластера. Например, если ваш кластер состоит из одного мастера и двух сегментов с именами mdw, sdw1 и sdw2, замените каждое вхождение $host на 'mdw','sdw1','sdw2'. После изменения импортируйте файл в Grafana.

Примечание!
Файлы dashboard.json и database.json, загруженные в ваш интерфейс Grafana, также должны иметь изменённые переменные, и их необходимо импортировать до alert.json. В dashboard.json замените все ${cluster} на local и $host на фактические имена хостов. В database.json замените только ${cluster}.

Импорт дашборда оповещений

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

2. Руководство по настройке

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

Сначала настройте каналы оповещений (Notification Channels). Точка входа показана ниже:
Стандартная панель оповещений — Каналы оповещений

2.1.1 Оповещения по SMS

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

Документация Alibaba Cloud: Быстрый старт для SMS в Китае

Альтернативно, вы можете реализовать пользовательские SMS-оповещения с помощью вебхуков, написав собственную логику вебхука. Дополнительную информацию см. в: Документация Grafana: Уведомления через вебхук

2.1.1.1 Создание файла конфигурации

Создайте файл alert.yaml в директории /etc/matrixdb/:

# aliyun service config
aliyun_service:
  access_key_id: "your access_key_id"
  access_key_secret: " access_key_secret"
  signature: "signature"
  sms_template_code: "SMS_123445678"

Здесь:

  • access_key_id и access_key_secret выдаются после активации сервисов Alibaba Cloud.
  • signature — утвержденный текст подписи, зарегистрированный в консоли SMS Alibaba Cloud.
  • sms_template_code — ID шаблона, начинающийся с "SMS_", утвержденный в консоли SMS Alibaba Cloud. Содержимое шаблона можно просмотреть на платформе Alibaba Cloud. Используйте ${name} как заполнитель переменной для сообщения оповещения.

Пример шаблона:

尊敬的管理员您好,贵公司的数据库系统发生${name}报警,请登陆网站查看详情,并及时处理。
2.1.1.2 Настройка вебхука в Grafana

Как показано:
Канал оповещений — Alibaba SMS

Рекомендуем называть канал в следующем формате:

Aliyun Batch Short Message - For SuperAdministrators

"SuperAdministrators" обозначает группу получателей. Для определения другой группы создайте отдельное правило. Обратите внимание, что параметр phoneNumbers чувствителен к регистру. Можно указать несколько номеров, разделяя их запятыми:

http://:/api/alert/batch-sms?phoneNumbers=18311111111,13811111111

2.1.2 Голосовые оповещения

Помимо SMS, MatrixDB поддерживает голосовые оповещения через голосовой сервис Alibaba Cloud. При срабатывании вызов осуществляется на ваши настроенные номера. Поддерживается массовый вызов. Перед использованием зарегистрируйте и настройте голосовой сервис Alibaba Cloud. Подробности см.: Документация Alibaba Cloud: Быстрый старт для голосового сервиса в Китае

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

2.1.2.1 Редактирование файла конфигурации

Добавьте tts_template_code и region_id в файл alert.yaml в директории /etc/matrixdb/:

# aliyun service config
aliyun_service:
  access_key_id: "your access_key_id"
  access_key_secret: " access_key_secret"
  signature: "signature"
  sms_template_code: "SMS_123445678"
  tts_template_code: "TTS_123456788"
  region_id: "cn-hangzhou"
  • access_key_id и access_key_secret используются совместно с сервисом SMS.
  • tts_template_code начинается с "TTS_" и относится к утвержденному TTS-шаблону в консоли Alibaba Cloud. Используйте ${name} как переменную для сообщения оповещения.

Пример шаблона:

尊敬的管理员您好,贵公司的数据库系统发生${name}报警,请登陆网站查看详情,并及时处理。
2.1.2.2 Настройка вебхука в Grafana

Канал оповещений — Alibaba Voice

Назовите канал в следующем формате:

Aliyun Voice Message - For SuperAdministrators

"SuperAdministrators" обозначает группу получателей. Дополнительные группы определяйте по необходимости. Параметр phoneNumbers чувствителен к регистру и поддерживает несколько номеров, разделенных запятыми:

http://:/api/alert/vms?phoneNumbers=18311111111,13811111111

2.1.3 Оповещения по электронной почте

Grafana предоставляет встроенную поддержку оповещений по электронной почте, которая проста в настройке и использовании.

2.1.3.1 Создание файла конфигурации

Поскольку оповещения по электронной почте — это встроенная функция Grafana, настройки SMTP выполняются в конфигурационном файле Grafana. Расположение может отличаться в зависимости от развертывания. В CentOS 7 стандартный путь:

/usr/local/etc/grafana/grafana.ini

Дополнительную информацию см. в: Официальная документация Grafana: Конфигурация

Ниже приведен пример конфигурации:

#################################### SMTP / Emailing #####################
[smtp]
enabled = true
host = <your smtp host>
user = <your user>
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = <your password>
;cert_file =
;key_file =
skip_verify = true
from_address = <your email address>
from_name = Grafana
;ehlo_identity =
;startTLS_policy =

[emails]
welcome_email_on_sign_up = false
templates_pattern = emails/*.html
2.1.3.2 Настройка канала оповещений по электронной почте в Grafana

Как показано:
Канал оповещений — Email

Назовите канал в следующем формате:

Email - For SuperAdministrators

"SuperAdministrators" обозначает группу получателей. Дополнительные группы определяйте по необходимости.

2.1.4 Оповещения в DingTalk

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

2.1.4.1 Настройка DingTalk

Как показано:
Создайте группу DingTalk и добавьте одного или нескольких ботов для оповещений.

Канал оповещений — DingTalk
Канал оповещений — DingTalk
Канал оповещений — DingTalk

Нажмите «Настройки» в интерфейсе «Добавить бота», выберите «Пользовательский», задайте имя бота, добавьте ключевые слова для оповещений и сохраните URL вебхука.

Канал оповещений — DingTalk
Канал оповещений — DingTalk
Канал оповещений — DingTalk
Канал оповещений — DingTalk

2.1.4.2 Создание правила оповещения в Grafana

Сначала создайте правило оповещения в Grafana и заполните необходимые поля.
Канал оповещений — DingTalk
Канал оповещений — DingTalk

После настройки нажмите «Тест», чтобы проверить соединение между Grafana и DingTalk. При успешном подключении клик по сообщению оповещения в группе DingTalk должен перенаправлять на дашборд Grafana. Если вы видите ошибку вроде «localhost отказал в соединении», вы, вероятно, забыли заменить localhost на ваш реальный IP-адрес.
Канал оповещений — DingTalk
Канал оповещений — DingTalk

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

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

Дополнительные сведения о настройке оповещений см. в: Официальная документация Grafana: Оповещения

Наведите курсор на заголовок панели, чтобы отобразить стрелку выпадающего меню справа. Нажмите «Редактировать», чтобы перейти в режим редактирования.
Редактировать

Переключитесь с вкладки «Query» на вкладку «Alert» в разделе «Edit Panel». Если появляется всплывающее окно с сообщением «Обнаружен нерабочий идентификатор нотификатора», не нажимайте «Удалить», так как это может удалить всю панель. Вместо этого нажмите «Отмена» и закройте окно.
Отмена

Прокрутите вниз до раздела «Notifications». Введите краткое сообщение оповещения (рекомендуется 4–6 символов). Это сообщение отображается в электронных письмах и заменяет переменную ${name} в шаблонах SMS и голосовых сообщений. Оставьте его кратким из-за ограничений на длину сообщения. Выберите один или несколько каналов оповещений (настроенных ранее) в разделе «Send to».

Alert-Send-to

2.2.1 Оповещение о подключении

Временные базы данных агрегируют данные за интервалы времени. Условие «Нет данных» может возникать из-за временных несоответствий (например, время Grafana опережает системное время на 5 минут при запросе последней минуты). Также отсутствие данных может быть вызвано сбоями сбора. Условие «Нет данных» обрабатывается механизмом «Оповещений».
Настройка оповещения о подключении

2.2.2 Оповещение о состоянии экземпляра

Как показано:
Настройка оповещения об экземпляре

2.2.3 Оповещение о дисковом пространстве

Красная пороговая линия в оповещении «Использованное дисковое пространство» обозначает уровень срабатывания. Красные области превышают этот порог и представляют критические условия. Значение порога по умолчанию — 85%, но вы можете настроить значение «IS ABOVE» по необходимости.
Настройка оповещения о дисковом пространстве

2.2.4 Оповещение о чтении/записи диска

Оповещения о чтении и записи диска (Disk IO Reading, Disk IO Writing) отключены по умолчанию, что позволяет задавать пользовательские пороги.
Настройка оповещения о чтении диска
Настройка оповещения о записи диска

Часто задаваемые вопросы

  1. Если вы изменяете файл конфигурации alert.yaml, выполните следующие команды для применения изменений:
source /usr/local/matrixdb/greenplum_path.sh
supervisorctl stop mxui
supervisorctl start mxui