Setting up a custom mail from domain

Prerequisites

Before you complete the procedures in this section, you have to perform the following
tasks:

  • Uninstall Sendmail, if it’s already installed on your system. The procedure
    for completing this step varies depending on the operating system you
    use.

  • Install Postfix. The procedure for completing this step varies depending on
    the operating system you use.

  • Install a SASL authentication package. The procedure for completing this step
    varies depending on the operating system you use. For example, if you use a
    RedHat-based system, you should install the
    package. If you use a Debian- or Ubuntu-based system, you should install the
    package.

Следующие шаги

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

  • Жизненный цикл запроса
  • Конфигурирование
  • Структура каталогов
  • Контейнер служб
  • Фасады

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

Laravel как клиент-серверный фреймворк

Laravel может служить клиент-серверным фреймворком. Под «клиент-серверным фреймворком» мы подразумеваем, что вы собираетесь использовать Laravel для маршрутизации запросов к вашему приложению и отрисовки интерфейса через шаблоны Blade или с использованием гибридной технологии одностраничного приложения, такой как Inertia.js. Это наиболее распространенный способ использования фреймворка Laravel.

Если вы планируете использовать Laravel именно таким образом, вы можете ознакомиться с нашей документацией по маршрутизации, представлениям или Eloquent ORM. Кроме того, вам может быть интересно узнать о таких пакетах сообщества, как Livewire и Inertia.js. Эти пакеты позволяют использовать Laravel в качестве фреймворка полного стека, при этом пользуясь многими преимуществами UI, предоставляемыми одностраничными JavaScript-приложениями.

Если вы используете Laravel в качестве фреймворка полного стека, мы также настоятельно рекомендуем вам научиться компилировать CSS и JavaScript вашего приложения с помощью Laravel Mix.

Laravel в качестве сервера API

Laravel также может служить серверной частью API для одностраничного JavaScript-приложения или мобильного приложения. Например, вы можете использовать Laravel в качестве серверной части API для своего Next.js приложения. В этом контексте вы можете использовать Laravel для обеспечения аутентификации и хранения / получения данных для вашего приложения, а также пользуясь преимуществами мощных служб Laravel, таких как очереди, электронная почта, уведомления и многое другое.

Если вы планируете использовать Laravel именно так, то вы можете ознакомиться с нашей документацией по маршрутизации, пакету Laravel Sanctum и Eloquent ORM.

Sending an Email using the SMTP Interface

Before you can use the Amazon SES SMTP endpoint, you must obtain two things. The SMTP credential and SMTP endpoint address.

Getting the SMTP Endpoint Interface Details

To find the appropriate SMTP endpoint information for your account, go to SMTP Settings in the Amazon SES console. You should be able to find the relevant SMTP interface information, such as the Server Name and Port.

Getting the SMTP interface details

Creating an SMTP Credential

The SMTP credential is not the same as your AWS credential. To obtain the SMTP credentials, click on the Create My SMTP Credentials button. Next, you can either enter the name you want to assign to the credential or accept the default name and click Create.

In the demonstration below, a new SMTP credential with the name SMTP1 is created.

Creating an SMTP credential

Once the SMTP credential is created, make sure to copy and save the SMTP username and password.

Sending an Email Through Amazon SES SMTP using PowerShell

Once you’ve modified the code above, copy the entire code and paste it in PowerShell to run it. Refer to the demonstration below that shows the message being sent using PowerShell and received by the destination address.

Integrating with Your Existing Email Server or Application

In the example below, a mail server (hMailServer) is configured to send outbound messages using the Amazon SES SMTP endpoint as its smart host.

Using Amazon SES SMTP as a smart host

Prerequisites

There are some requirements that you must have to follow along with the examples and steps in this article.

  • You must have an AWS account. If you don’t have this, you can sign up for a new AWS account. All the steps that will be performed in this article will work with the AWS Free Tier subscription.
  • If you plan to verify the identity of the whole domain, you need to have access to your DNS host. Verifying a domain requires adding new DNS records to confirm domain ownership.
  • If you plan to verify the identity of an email address, you need to have a valid mailbox using that email address. Email address ownership confirmation requires access to the confirmation email from Amazon SES.

Eventually, you can request to move your Amazon SES out of the sandbox.

(Optional) An existing mail server or application to integrate with Amazon SES.

Локализация отправлений

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

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

Предпочитаемые пользователем локализации

Иногда приложения хранят предпочтительный язык каждого пользователя. Реализуя контракт в ваших моделях, вы можете указать Laravel использовать этот сохраненный язык при отправке почты:

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

Двухфакторная аутентификация

Когда функционал двухфакторной аутентификации Fortify включен, тогда пользователь должен ввести шестизначный цифровой токен в процессе аутентификации. Этот токен создается с использованием одноразового пароля (TOTP), который может быть получен из любого TOTP-совместимого мобильного приложения для аутентификации, например Google Authenticator.

Перед началом работы вы должны убедиться, что модель вашего приложения использует трейт :

Затем, вы должны создать экран в своем приложении, где пользователи могут управлять своими настройками двухфакторной аутентификации. Этот экран должен позволить пользователю включать и отключать двухфакторную аутентификацию, а также повторно создавать коды восстановления двухфакторной аутентификации.

Включение двухфакторной аутентификации

Чтобы включить двухфакторную аутентификацию, ваше приложение должно сделать POST-запрос к урлу , определенному Fortify. Если запрос будет успешным, то пользователь будет перенаправлен обратно на предыдущий URL-адрес, а для переменной сессии будет установлено значение . Вы можете использовать эту переменную сессии в своих шаблонах, чтобы отобразить соответствующее сообщение об успешном выполнении. Если запрос был запросом XHR (аякс-запросом), будет возвращен HTTP-ответ:

Затем, вы должны отобразить QR-код двухфакторной аутентификации, чтобы пользователь мог сканировать его своим приложением для аутентификации. Если вы используете Blade для отрисовки интерфейса вашего приложения, то вы можете получить SVG с QR-кодом, используя метод экземпляра пользователя:

Если вы создаете интерфейс на основе JavaScript, то вы можете сделать XHR GET-запрос (аякс-запрос) к урлу , чтобы получить QR-код для двухфакторной аутентификации пользователя. Этот эндпоинт вернет объект JSON, содержащий ключ .

Отображение кодов восстановления

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

Если вы создаете интерфейс на основе JavaScript, то вы можете сделать XHR GET-запрос (аякс-запрос) к урлу . Этот эндпоинт вернет массив JSON, содержащий коды восстановления пользователя.

Чтобы повторно сгенерировать коды восстановления пользователя, ваше приложение должно сделать POST-запрос к урлу .

Использование двухфакторной аутентификации

В процессе аутентификации Fortify автоматически перенаправляет пользователя на экран запроса двухфакторной аутентификации приложения. Однако, если ваше приложение выполняет запрос XHR (аякс-запрос) для входа в систему, то ответ JSON, возвращаемый после успешной попытки аутентификации, будет содержать объект JSON, содержащий логическое свойство . Необходимо проверить это значение, чтобы узнать, следует ли перенаправлять на экран запроса двухфакторной аутентификации приложения.

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

Fortify позаботится об определении маршрута , который возвращает этот шаблон. Ваш шаблон должен включать форму, которая делает POST-запрос к урлу . Действие ожидает поле , которое содержит действительный TOTP-токен, или поле , которое содержит один из кодов восстановления пользователя.

Если попытка входа окажется успешной, то Fortify перенаправит пользователя на URI, указанный в параметре конфигурации файле конфигурации вашего приложения. Если запрос на вход был запросом XHR, будет возвращен HTTP-ответ.

Если запрос не был успешным, пользователь будет перенаправлен обратно к экрану входа в систему, и ошибки валидации будут доступны вам через общедоступную . Или, в случае запроса XHR, ошибки валидации будут возвращены с HTTP-ответом.

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

Как отправить письмо c вложением (attachment)

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

В связи с этим дальнейшие примеры кода будут базироваться на готовом решении, взятом из PEAR (репозиторий приложений и модулей PHP). Пакет, который будет использован в примерах, называется Mail_Mime. Скачать последнюю версию пакета и получить исчерпывающую документацию можно по адресуhttp://pear.php.net/package/Mail_Mime. Рассмотрим пример его использования:

Приведенный код довольно понятен, но все же несколько слов о нем.

Переменная $mime является экземпляром класса Mail_mime. В его конструктор мы передали необязательный параметр, определяющий, какой именно перевод строки будет использован: «\n» или «\r\n». Данный предназначен для формирования тела и заголовков отправляемого письма. При помощи метода setTXTBody мы определяем текстовую часть письма. В качестве параметра метод принимает строку или имя файла, который будет использован. Аналогично при помощи метода setHTMLBody мы задаем содержимое HTML-версии письма.

Рассмотрим метод addAttachment подробнее. Принимаемые параметры:

  • string $data

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

  • string $c_type

    Значение заголовка Сontent-type, который будет отправлен. Необязательный параметр, значение по умолчанию — application/octet-stream.

  • string $name

    Имя прикрепляемого файла. Будет использован только в случае, если первый параметр ($data) является содержимым файла.

  • boolean $isfile

    Определяет, является ли первый параметр путем к файлу. Необязательный параметр, значение по умолчанию — true.

  • string $encoding

    Значение заголовка Content-Transfer-Encoding, определяющего формат, в котором будет отправлено приложение. Необязательный параметр. Допустимые значения: base64 (используется для двоичных файлов), quoted-printable(используется для текстовых файлов). Значение по умолчанию: base64.

Таким образом, есть два способа применения данного метода.

  1. указывая путь к файлу на сервере:
    $mime->addAttachment('/home/user/report.txt', 'text/plain');
  2. указывая содержимое файла (в таком случае третий и четвертый параметры необходимо указывать принудительно):
    $mime->addAttachment($contentFile, 'text/plain', 'report.txt', false);

Переходим к формированию заголовка и тела письма. Это все еще обязанности экземпляра класса Mail_mime. Для формирования тела письма применяется метод get, который в качестве необязательного параметра принимает ассоциативный . Ключами могут выступать следующие значения: text_encoding, html_encoding, 7bit_wrap, text_charset, html_charset. Для формирования заголовков используется метод headers. В качестве необязательного параметра принимает хеш-массив. Для более детального ознакомления с допустимыми значениями данного параметра обратитесь к RFC-822.

Вызов метода get() должен осуществиться до того, как будет вызван метод headers(). Убедитесь, что в Вашем коде это условие соблюдено.

Сам процесс отправки уже сформированного письма возложен на класс Mail. Вначале необходимо при помощи статического вызова метода factory создать экземпляр данного класса. В нашем примере он принимает единственный параметр — строку ‘mail’. Более детально принимаемые параметры и их значения описаны ниже в статье, где описываются альтернативные способы отправки почты.

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

Проверку на ошибки, во время отправки письма, можно реализовать используя следующий код:

Для дальнейшего ознакомления с возможностями Mail и Mime_mail ознакомьтесь с разделами «Как отправить письмо с картинками», «Альтернативные способы отправки писем»

Использование Gmail для отправки писем¶

Во время разработки, вы можете предпочесть отправлять письма, используя Gmail
вместо установки обычного SMTP-сервера. Чтобы сделать это, обновите
вашего файла до следующего:

1
2
# имя пользователя - ваш полный почтовый адрес Gmail или Google Apps
MAILER_URL=gmail://username:

Транспорт это просто сокращение, которое использует транспорт ,
шифрование , режим авторизации«login« и хост . Если ваше
приложение использует другое шифрование или режим авторизации, вам нужно переопределить
эти значения (см. справочник конфигурации почтовой программы):

1
2
# имя пользователя - ваш полный почтовый адрес Gmail или Google Apps
MAILER_URL=gmail://username:?encryption=tls&auth_mode=oauth

Obtaining Amazon SES SMTP credentials using the Amazon SES console

When you generate SMTP credentials by using the Amazon SES console, the Amazon SES
console
creates an IAM user with the appropriate policies to call Amazon SES and provides
you with
the SMTP credentials associated with that user.

Requirement

An IAM user can create Amazon SES SMTP credentials, but the IAM user’s policy must
give them permission to use IAM itself, because Amazon SES SMTP credentials are created
by using IAM. Your IAM policy must allow you to perform the following IAM
actions: , ,
, and . If you try
to create Amazon SES SMTP credentials using the console and your IAM user doesn’t
have
these permissions, you see an error that states that your account is «not authorized
to perform iam:ListUsers.»

To create your SMTP credentials

  1. Sign in to the AWS Management Console and open the Amazon SES console at
    https://console.aws.amazon.com/ses/.

  2. In the navigation pane, choose SMTP Settings.

  3. In the content pane, choose Create My SMTP
    Credentials
    .

  4. For Create User for SMTP, type a name for your SMTP user.
    Alternatively, you can use the default value that is provided in this field.
    When you finish, choose Create.

  5. Choose Show User SMTP Credentials. Your SMTP credentials
    are shown on the screen. Download or copy these credentials and store them in a
    safe place, as you cannot view or save your credentials after you dismiss this
    dialog box.

  6. Choose Close Window.

You can view a list of existing SMTP credentials that you’ve created using this
procedure by going to the IAM console at https://console.aws.amazon.com/iam/. In the navigation pane,
under Access management, choose Users. Use the
search bar to find all users that you’ve assigned SMTP credentials.

You can also use the IAM console to delete existing SMTP users. To learn more about
deleting users, see https://docs.aws.amazon.com/IAM/latest/UserGuide/Managing IAM Users in the
IAM Getting Started Guide.

If you want to rotate your SMTP credentials, complete the procedure above to generate
a new set of SMTP credentials. Then, test the new credentials to ensure that they
work
as expected. Finally, delete the IAM user associated with the old SMTP credentials
in
the IAM console. For more information about deleting users in IAM, see in
the IAM User Guide.

Заголовок «Return-Path: …»

Обычно заголовок «Return-Path: …» является важным заголовком в глазах почтовых сервисов. Установить его или в настройках php.ini, директива «sendmail_path = /usr/sbin/sendmail -t -i -f no-reply@remotehelp.pp.ua» — если есть пользовательский php.ini, а если нет, то непосредственно в самой функции mail(); пятым параметром. В противном случае заголовок «Return-Path: …» будет равен примерно такому значению «Return-Path: <wrs@localhost.localdomain>«. ОЧЕНЬ желательно чтобы значение заголовка «Return-Path: …» всегда совпадало с именем домена с которого отправляется письмо, независимо от значения заголовка «From: …», иначе оно может быть отправлено в «Спам» или же отклонено вовсе!

Если письмо отправляется от имени «From: …» другого отправителя (домена) и не установлен «Reply-To: …», то для ответа будет использоваться «Return-Path: …». В CMS Joomla 1.5, заголовок «Reply-To: …» устанавливается десятым параметром в функции JUtility::sendMail(); и по умолчанию при отправке ссылки другу по почте не используется в /components/com_mailto/controller.php, его нужно допиливать в ручную.

В почту отправляемую с аккаунта Gmail устанавливается только заголовок «Return-Path: …», значение которого соответствует значению заголовка «From: …», а также домену с которого оно отправлено, а по этому нет необходимости в добавлении заголовка «Reply-To: …».

У Postfix и Sendmail разный подход к «Return-Path: …». Так например в начале настройки Postfix, первое отправленное через него письмо пришло без заголовка «Return-Path: …» (или то меня проглючило, ни-ни, перепроверил же — без Return-Path) и для его появления нужно было указывать адрес возврата явно при помощи « -f«, Sendmail же вставляет заголовок «Return-Path: …» автоматически собирая его из пользователь@mydomain.com, где «пользователь» имя пользователя от которого работает Apache/PHP, а mydomain.com обычно localhost или localhost.localdomain.

Sendmail не позволяет посторонним модифицировать заголовки при помощи -fвключительно и обнаружив такую модификацию вставляет в письмо заголовок X-Authentication-Warning с сообщением типа «X-Authentication-Warning: mydomain.com: username set sender to no-reply@mydomain.com using -f«. Этого заголовка с предупреждением можно избежать, указав доверенных пользователей в vi /etc/mail/trusted-users

Если нужно использовать отличный от vi /etc/mail/trusted-users файл то добавьте в vi /etc/mail/sendmail.mc следующие строки:

×

Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!

Пересоберите sendmail.cf из sendmail.mc: m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf, перезапустите sendmail.

Отправка писем из скриптов bash/shell

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

#!/bin/bash
du -sh | mail -s "disk usage report" user@yourmaildomain.com

Откройте новый файл, вставьте в него приведенные выше строки, сохраните и запустите. Вы получите письмо, содержащее вывод команды «du -sh».
И последняя хитрость в письмах из командной сроки — добавление вложений к письмам, отправляемым из скриптов. Предположим, вам необходимо сделать резервную копию директории с конфигурационными файлами, заархивировать ее и отправить в качестве вложения с помощью mutt:

#!/bin/bash
tar -zcf /home/user/backup.tar.gz /home/user/files_to_backup
echo "Archived configuration files" | mutt -a /home/user/backup.tar.gz -s "backup data" user@yourmaildomain.com

Команда echo в начале третьей строки добавляет текст «Archived configuration files» в тело письма.

Step 4: Verify your domain in Amazon SES

To verify your domain in Amazon SES

In the Amazon SES console, from the
left-navigation menu, choose Domains.

Choose Verify a New Domain.

Enter the domain that you want to verify, and select the Generate DKIM
Settings check box.

The domain that you verify should be the same domain that you’re using with your
WordPress instance in Lightsail.

Choose Verify This Domain.

Open a new browser tab and navigate to the Lightsail console.

On the Lightsail home page, choose the Networking tab, then
choose your domain’s DNS zone.

Add the DNS records from the Amazon SES console. For more information about editing a DNS
zone in Lightsail, see the Edit a DNS zone in Amazon Lightsail.

The result should look like the following example.

In the Amazon SES console, close the
Verify a New Domain page.

After a few minutes, your domain listed in the Amazon SES console is labeled as verified
and enabled for sending, as shown in the following example:

Отправка почты

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

Пользователи Debian/Ubuntu могут воспользоваться командой apt-get:

# apt-get install mailutils

Пользователи Fedora / CentOS / Red Hat Enterprise Linux (RHEL) могут сделать это с помощью yum:

# yum install mailutils

Теперь команда mail должна быть готова к работе.

Выполните приведенную ниже команду, заменив «user@yourmaildomain.com» на свой адрес электронной почты. Опция s задает тему письма.

$ mail -s "Hello World" user@yourmaildomain.com

Теперь вы можете вводить текст письма. Когда закончите, нажмите «control-D» в начале новой строки.

# mail -s "This is the subject" m00n.silv3r@gmail.com
Cc: 
Hi Silver
How are you doing
Hope its going fine.
Bye

Вы отправили первое письмо из командной строки. Содержимое письма можно вставить из файла.
В некоторых дистрибутивах командная оболочка сначала запросит в интерактивном режиме ввод других полей, таких как «Cc» (Carbon copy). Просто нажимайте «Enter», чтобы пропустить этот этап. Когда вы введете адрес или адреса электронной почты, необходимо нажать «Enter», чтобы перейти на новую строку, к телу письма.
После нажатия Ctrl+D вы возвращаетесь в командную строку без каких либо дополнительных оповещений. Однако ваше письмо было отправлено.
Интересно, что если вы ничего не введете в теле письма и нажмете Ctrl+D, команда mail отреагирует на это:

# mail -s "This is the subject" m00n.silv3r@gmail.com
Cc: 
Null message body; hope that's ok

Если тело письма хранится у нас в отдельном файле, мы можем напрямую использовать его для отправки письма. Это полезно при вызове команды mail из скриптов, или других программ, написанных, например, на perl или php.

$ mail -s "Hello World" user@yourmaildomain.com < /home/user/mailcontent.txt

Или быстрая отправка письма одной строкой:

# echo "This is the message body" | mail -s "This is the subject" m00n.silv3r@gmail.com

Другие полезные параметры команды mail:

Ниже пример использования этих опций:

$ mail -s "Hello World" user@yourmaildomain.com -c usertocc@yourmaildomain.com -b usertobcc@yourmaildomain.com

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

$ mail -s "Hello World" user1@yourmaildomain.com,user2@yourmaildomain.com

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

(двойное тире) (пробел) (одинарное тире) (без пробела) f

Ниже пример:

$ mail -s "Hello World" user@yourmaildomain.com -- -f from_user@yourmaildomain.com

Однако приведенная выше последовательность может работать в centos, но не в debian или ubuntu. В этих системах используется альтернативный синтаксис:

# echo "This is the message body" | mail -s "This is the subject" m00n.silv3r@gmail.com -aFrom:blog@binarytides.com

Опция a в целом добавляет дополнительные заголовки. Чтобы задать с ее помощью отправителя, используется следующий синтаксис:

# echo "This is the message body" | mail -s "This is the subject" m00n.silv3r@gmail.com -aFrom:Blogger\<blog@binarytides.com\>

Обратите внимание, что бы экранируем угловые скобки, так как они могут иметь свое назначение для командной оболочки

Complaint rate

AWS SES CloudWatch metrics

For alerting we can use AWS CloudWatch metrics for AWS SES:

  • Sends: total emails being sent
  • Deliveries: total emails being delivered to a recipient’s mailbox
  • Bounces: a recipient’s mail server refused to accept an email (counted as hard bounces)
  • Complaints: an email was delivered to the recipient’s mailbox, but was marked as spam

Also, we have two additional recalculated metrics here for the Bounce and Complaint — Reputation.BounceRate and Reputation.ComplaintRate.

At this moment, our Reputation.BounceRate == 0.1432, i.e 14%:

(at the end of this post it will grow to 18% — we’ve got an additional 4% per day)

There are two ways for alerting: by using AWS CloudWatch Alerts and SNS, see Creating reputation monitoring alarms using CloudWatch, or by collecting those metrics to an external monitoring system.

In our case, we will collect them to a Prometheus instance which will then use its Alertmanager to send alerts to the Opsgenie, and Opsgenie will forward them to our Slack.

Prometheus alert

But here is a problem.

From the graph, we can see that the Bounce Rate is displayed with gaps (on the left side):

So, if using a simple alert like:

- alert: AWSSESReputationBounceRate  expr: aws_ses_reputation_bounce_rate_sum{job="aws_ses"} * 100 > 5  for: 1s  labels:    severity: warning  annotations:    summary: 'AWS SES Bounce rate too high'    description: 'Latest observed value: {{ $value | humanize }} %'    tags: aws

It will be activated and closed on itself each 20 minutes as well.

What we can do here?

As a solution — the function can be used here with a period in 10 or 20 minutes, then we’ll see the graph without gaps:

Update the alert (1 hour used here):

- alert: AWSSESReputationBounceRate  expr: avg_over_time(aws_ses_reputation_bounce_rate_sum{job="aws_ses"}) * 100 > 5  for: 1s  labels:    severity: warning  annotations:    summary: 'AWS SES Bounce rate too high'    description: 'Latest observed value: {{ $value | humanize }} %'    tags: aws

And got a notification to Slack:

Done.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: