Отправка оповещений по электронной почте в Yandex Managed Service for OpenSearch
Вы можете настроить отправку оповещений по почте с помощью плагина Notifications в Managed Service for OpenSearch. Для этого в веб-интерфейсе OpenSearch Dashboards необходимо создать канал уведомлений, настроить SMTP отправителя и указать получателей. Пароль отправителя необходимо добавить в хранилище ключей OpenSearch.
Чтобы настроить отправку оповещений по почте, выполните следующие действия:
- Подготовьте инфраструктуру.
- Создайте отправителя.
- Добавьте данные аутентификации в хранилище ключей OpenSearch.
- Обновите настройки кластера.
- Создайте группу получателей.
- Создайте канал уведомлений.
- Отправьте тестовое письмо.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
- Кластер Managed Service for OpenSearch: использование вычислительных ресурсов и объем хранилища (см. тарифы Managed Service for OpenSearch).
- Публичные IP-адреса, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
Подготовьте инфраструктуру
-
Создайте кластер Managed Service for OpenSearch с публичным доступом к группам хостов Dashboards и OpenSearch.
-
Настройте группы безопасности кластера Managed Service for OpenSearch следующим образом:
- Создайте правила для доступа к группам хостов Dashboards и OpenSearch через интернет.
- Создайте правило для исходящего трафика, разрешающее TCP-подключения на порт
465или другой порт, который будет использоваться для отправки оповещений по почте.
Создайте отправителя
-
В левом верхнем углу OpenSearch Dashboards нажмите на значок
и в блоке Management выберите Notifications. -
На панели слева выберите пункт Email senders.
-
Нажмите кнопку Create SMTP sender.
-
В поле Sender name введите
my_sender. -
В поле Email address введите адрес почты, с которой будут отправляться оповещения.
-
Заполните поля Host и Port.
Для указанного порта должен быть разрешен исходящий трафик в группах безопасности кластера.
-
В поле Encryption method выберите метод шифрования, который поддерживается SMTP-сервером отправителя.
-
Нажмите кнопку Create.
Добавьте данные аутентификации в хранилище ключей OpenSearch
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы добавить данные аутентификации в хранилище ключей OpenSearch, выполните команду:
yc managed-opensearch cluster update <имя_или_идентификатор_кластера> \
--set-keystore-settings opensearch.notifications.core.email.my_sender.username=<почта_отправителя> \
--set-keystore-settings opensearch.notifications.core.email.my_sender.password=<пароль>
Имя и идентификатор кластера можно получить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.Update и выполните запрос, например с помощью cURL
:curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-opensearch/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "configSpec.opensearchSpec.setKeystoreSettings", "configSpec": { "opensearchSpec": { "setKeystoreSettings": [ { "name": "opensearch.notifications.core.email.my_sender.username", "value": "<почта_отправителя>" }, { "name": "opensearch.notifications.core.email.my_sender.password", "value": "<пароль>" } ] } } }'Важно
Все настройки изменяемого объекта в кластере, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например с помощью gRPCurl
:grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/opensearch/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "config_spec.opensearch_spec.set_keystore_settings" ] }, "config_spec": { "opensearch_spec": { "set_keystore_settings": [ { "name": "opensearch.notifications.core.email.my_sender.username", "value": "<почта_отправителя>" }, { "name": "opensearch.notifications.core.email.my_sender.password", "value": "<пароль>" } ] } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.opensearch.v1.ClusterService.UpdateВажно
Все настройки изменяемого объекта в кластере, которые не были явно переданы в запросе, будут переопределены на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
После добавления ключей обновите защищенные настройки кластера.
Обновите настройки кластера
-
Установите SSL-сертификат:
Linux (Bash)/macOS (Zsh)Windows (PowerShell)mkdir -p ~/.opensearch && \ wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \ --output-document ~/.opensearch/root.crt && \ chmod 0600 ~/.opensearch/root.crtСертификат будет сохранен в файле
~/.opensearch/root.crt.mkdir $HOME\.opensearch; curl.exe -o $HOME\.opensearch\root.crt https://storage.yandexcloud.net/cloud-certs/CA.pemСертификат будет сохранен в файле
$HOME\.opensearch\root.crt.Важно
Загрузка сертификата может быть ограничена корпоративными политиками или антивирусом.
-
Обновите защищенные настройки кластера:
Linux (Bash)/macOS (Zsh)Windows (PowerShell)curl \ --user admin:<пароль> --cacert ~/.opensearch/root.crt \ -X POST 'https://<FQDN_хоста_с_ролью_DATA>:9200/_nodes/reload_secure_settings'curl ` -Certificate $HOME\.opensearch\root.crt ` -Uri https://<FQDN_хоста_с_ролью_DATA>:9200/_nodes/reload_secure_settings ` -Method Post ` -Credential adminПодробнее о получении FQDN хоста читайте в разделе FQDN хостов OpenSearch.
Создайте группу получателей
- В левом верхнем углу OpenSearch Dashboards нажмите на значок
и в блоке Management выберите Notifications. - На панели слева выберите пункт Email recipient groups.
- Нажмите кнопку Create recipient group.
- В поле Name введите
my_recipient_group. - В поле Emails выберите или введите почтовые адреса, которые вы хотите добавить в группу получателей оповещений.
- Нажмите кнопку Create.
Создайте канал уведомлений
- В левом верхнем углу OpenSearch Dashboards нажмите на значок
и в блоке Management выберите Notifications. - Нажмите кнопку Create channel.
- В поле Name введите
my_channel. - В поле Channel type выберите
Email. - В поле Sender type выберите
SMTP sender. - В поле SMTP sender выберите
my_sender. - В поле Default recipients выберите
my_recipient_group. - Нажмите кнопку Create.
Отправьте тестовое письмо
- В левом верхнем углу OpenSearch Dashboards нажмите на значок
и в блоке Management выберите Notifications. - В списке каналов нажмите на имя
my_channel. - В меню Actions выберите пункт Send test message.
Важно
Если параметры SMTP отправителя заданы неверно, оповещения отправляться не будут.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать: