Настройте уведомление Prometheus по электронной почте с помощью Alertmanager |
Добро пожаловать в это руководство о том, как настроить уведомление по электронной почте Prometheus с помощью Alertmanager. Prometheus – это бесплатный инструмент с открытым исходным кодом для мониторинга и оповещения о событиях. Впервые он был разработан SoundCloud в 2012 году.
Prometheus работает путем сбора и хранения данных временных рядов. Эта числовая количественная оценка время от времени меняется, поэтому собранные данные сохраняются с отметкой времени. Предпочтителен Prometheus, поскольку он предлагает следующие интересные функции:
- Узлы с одним сервером автономны и не полагаются на распределенное хранилище.
- Цели обнаруживаются посредством обнаружения служб или статической конфигурации.
- Сбор метрик временных рядов происходит с помощью модели извлечения через HTTP.
- Поддерживает несколько режимов построения графиков и информационных панелей.
- Он использует язык запросов PromQL, который позволяет гибко использовать эту размерность.
- Многомерная модель данных, в которой данные временных рядов идентифицируются по имени метрики и парам ключ/значение.
Настройка оповещений в Prometheus жизненно важна, поскольку она может помочь выявить проблемы с производительностью и работоспособностью вашего сервера или приложений, как только они возникнут. Alertmanager — это приложение, которое обрабатывает оповещения, отправленные приложениями, и уведомляет пользователя по электронной почте, Slack или другим инструментам. Правила оповещений, определенные в Prometheus, учитываются при сборе метрик. Если какое-либо из условий оповещения срабатывает в зависимости от правил, Prometheus отправляет их в AlertManager.
Alertmanager может обрабатывать группировку, дедупликацию и маршрутизацию оповещений нужному получателю. Он управляет оповещениями через свои конвейеры, а именно:
- Отключение звука: отключает оповещения на определенный период.
- Группировка: оповещения схожего характера группируются в одно уведомление, чтобы избежать отправки нескольких уведомлений.
- Ингибирование: подавляет определенные оповещения, если другие оповещения уже активированы.
Теперь давайте углубимся и настроим AlertManager.
Прежде чем мы начнем
Для этого руководства требуется, чтобы в вашей системе был установлен Prometheus. Это можно сделать, используя приведенные ниже руководства:
- В Ubuntu
- Установите сервер Prometheus в Ubuntu
- В Debian
- Установите Prometheus и node_exporter в Debian.
- В RHEL 9/CentOS 9/Rocky Linux 9/Alma Linux 9
- Установите Prometheus с помощью Node Exporter в Rocky Linux 9/AlmaLinux 9.
- В RHEL 8/CentOS 8/Rocky Linux 8/Alma Linux 8
- Как установить Prometheus на RHEL 8/CentOS 8
#.1 Установите AlertManager в Linux
Мы начнем с установки AlertManager для управления группировкой, дедупликацией и маршрутизацией оповещений для Prometheus. Загрузите AlertManager со страницы загрузки Prometheus.
Также можно вытащить архив с помощью wget.
Сначала экспортируйте последнюю версию:
VER=${curl -s https://api.github.com/repos/prometheus/alertmanager/releases/latest|grep tag_name|cut -d '"' -f 4|sed 's/v//'}
Теперь скачайте версию командой;
wget https://github.com/prometheus/alertmanager/releases/download/v${VER}/alertmanager-${VER}.linux-amd64.tar.gz
Распакуйте архив:
tar xzf alertmanager-*.linux-amd64.tar.gz
Скопируйте двоичные файлы в папку ` PATH;
sudo cp alertmanager-$VER.linux-amd64/{alertmanager,amtool} /usr/local/bin/
Создайте пользователя для управления сервисом AlertManager:
sudo adduser -M -r -s /sbin/nologin alertmanager
Создайте файл конфигурации для AlertManager с правильным владельцем:
sudo mkdir -p /etc/alertmanager/data
sudo cp alertmanager-$VER.linux-amd64/alertmanager.yml /etc/alertmanager/
sudo chown -R alertmanager: /etc/alertmanager
№2. Настройка AlertManager в Linux
После установки нам нужно настроить AlertManager для обработки оповещений от Prometheus. Для этого мы отредактируем файл конфигурации, как показано:
sudo vim /etc/alertmanager/alertmanager.yml
В файле внесите следующие изменения:
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 1m
receiver: 'email'
receivers:
- name: 'web.hook'
webhook_configs:
- url: 'http://127.0.0.1:5001/'
- name: 'email'
email_configs:
- to: '[email '
from: '[email '
smarthost: smtp.gmail.com:587
auth_username: '[email '
auth_identity: '[email '
auth_password: 'google-app-password'
send_resolved: true
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
В приведенном выше файле:
- repeat_interval сообщает AlertManager подождать заданное время перед отправкой следующего уведомления. Значение по умолчанию — 1 час, но вы можете изменить его по своему усмотрению.
- receiver: ’email’ устанавливает используемого получателя по умолчанию. В этом уроке мы установили получателем по умолчанию email.
- приемники: список доступных приемников с их конфигурациями. например web.hook и email, как указано выше.
Помните, что адрес электронной почты отправителя и получателя может быть одним и тем же адресом Gmail, например, [электронная почта защищена]. Позже я покажу, как получить пароль-приложения Google
После указания правильных данных электронной почты сохраните файл и подтвердите его с помощью команды:
$ amtool check-config /etc/alertmanager/alertmanager.yml
Checking '/etc/alertmanager/alertmanager.yml' SUCCESS
Found:
Found:
- global config
- route
- 1 inhibit rules
- 2 receivers
- 0 templates
Теперь создайте файл службы systemd для AlertManager;
sudo vim /etc/systemd/system/alertmanager.service
Добавьте в файл следующие строки:
[Unit]
Description=AlertManager Server Service
Wants=network-online.target
After=network-online.target
[Service]
User=alertmanager
Group=alertmanager
Type=simple
ExecStart=/usr/local/bin/alertmanager --config.file /etc/alertmanager/alertmanager.yml --storage.path=/etc/alertmanager/data
[Install]
WantedBy=multi-user.target
Сохраните файл и перезагрузите конфигурации systemd.
sudo systemctl daemon-reload
В системах на базе Rhel измените SELinux, как показано;
sudo /sbin/restorecon -v /usr/local/bin/alertmanager
Запустите и включите службу:
sudo systemctl enable --now alertmanager
Проверьте, запущена ли служба:
$ systemctl status alertmanager
● alertmanager.service - AlertManager Server Service
Loaded: loaded (/etc/systemd/system/alertmanager.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-09-07 11:28:03 CEST; 3s ago
Main PID: 91886 (alertmanager)
Tasks: 6 (limit: 23441)
Memory: 15.8M
CPU: 55ms
CGroup: /system.slice/alertmanager.service
└─91886 /usr/local/bin/alertmanager --config.file /etc/alertmanager/alertmanager.yml --storage.path=/etc/alertmanager/data
№3. Настройте Prometheus для оповещений
Теперь мы настроим Prometheus, создав правило оповещения. Для этого отредактируйте файл конфигурации, как показано;
sudo vim /etc/prometheus/prometheus.yml
В файл конфигурации добавьте следующие строки:
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "alert_rules.yml"
Сохраните файл и создайте правила оповещений Prometheus (alert_rules.yml), как указано в конфигурации.
sudo vim /etc/prometheus/alert_rules.yml
В файле определите нужные правила:
groups:
- name: alert_rules
rules:
- alert: InstanceDown
expr: up == 0
for: 1m
В приведенном выше файле мы настроили правило оповещения для целей — postgres_exporter уже настроено. Чтобы настроить цель, вы можете использовать любое из приведенных ниже руководств:
- Как контролировать сервер PostgreSQL с помощью Prometheus и Grafana
- Установите Prometheus с помощью Node Exporter в Rocky Linux 9/AlmaLinux 9.
На панели управления Prometheus вы поймете, что когда цель активна, состояние равно 1, а когда она достигнута, состояние равно 0. Чтобы подтвердить это, выполните команду ниже.
Итак, для этого руководства мы настроили Prometheus на отправку оповещений, если цель не работает (состояние 0) в течение 1 минуты.
Чтобы правила вступили в силу, перезапустите Prometheus:
sudo systemctl restart prometheus
В веб-интерфейсе Prometheus в разделе Статус->Правила вы должны увидеть добавленные правила.
№4. Настройка приемника Gmail для AlertManager
Чтобы иметь возможность получать уведомления на указанный адрес Gmail. Вам необходимо сгенерировать пароль приложения для AlertManager.
Для этого войдите в свою учетную запись Gmail и выберите Безопасность > Пароли приложений, как показано.
Нажав Пароли приложений, выберите приложения как Почта в раскрывающемся меню.
Для устройства выберите Другое (настраиваемое имя) и укажите имя alertmanager или любое другое имя по вашему выбору.
Теперь сгенерируйте пароль для приложения.
После создания. вам необходимо скопировать этот пароль, поскольку он потребуется на следующем шаге.
Отредактируйте конфигурацию AlertManager и укажите пароль приложения для вашей учетной записи.
sudo vim /etc/alertmanager/alertmanager.yml
Добавьте пароль, заменив auth_password: ‘google-app-password’, как показано на рисунке.
После внесения изменений перезапустите AlertManager.
sudo systemctl restart alertmanager.service
№5. Тестирование уведомлений по электронной почте с помощью Alertmanager
Чтобы проверить, работает ли Alertmanager должным образом, мы остановим любую из доступных целей на Prometheus. Например Postgres Exporter.
sudo systemctl stop postgres_exporter
Вы увидите это на панели управления Prometheus в разделе Статус->Цели.
Теперь перейдите к Оповещениям. Вы увидите статус оповещения: активное и Ожидание.
Это показывает, что оповещение вот-вот будет отправлено, но все еще ожидает истечения установленного времени. По истечении установленного времени статус изменится на ВЫПУСК.
В этом состоянии оповещение отправляется в AlertManager, который отвечает за маршрутизацию получателю электронной почты.
Вы можете проверить электронную почту, чтобы увидеть полученное уведомление.
Чтобы просмотреть журналы и устранить неполадки службы, используйте команду:
$ sudo journalctl --follow --no-pager --boot --unit alertmanager.service
Sep 07 12:42:09 localhost.localdomain alertmanager[93736]: ts=2022-09-07T10:42:09.170Z caller=main.go:232 level=info build_context="(go=go1.17.8, user=root@265f14f5c6fc, date=20220325-09:31:33)"
Sep 07 12:42:09 localhost.localdomain alertmanager[93736]: ts=2022-09-07T10:42:09.171Z caller=cluster.go:185 level=info component=cluster msg="setting advertise address explicitly" addr=192.168.205.12 port=9094
Sep 07 12:42:09 localhost.localdomain alertmanager[93736]: ts=2022-09-07T10:42:09.181Z caller=cluster.go:680 level=info component=cluster msg="Waiting for gossip to settle..." interval=2s
Sep 07 12:42:09 localhost.localdomain alertmanager[93736]: ts=2022-09-07T10:42:09.202Z caller=coordinator.go:113 level=info component=configuration msg="Loading configuration file" file=/etc/alertmanager/alertmanager.yml
Sep 07 12:42:09 localhost.localdomain alertmanager[93736]: ts=2022-09-07T10:42:09.202Z caller=coordinator.go:126 level=info component=configuration msg="Completed loading of configuration file" file=/etc/alertmanager/alertmanager.yml
Sep 07 12:42:09 localhost.localdomain alertmanager[93736]: ts=2022-09-07T10:42:09.204Z caller=main.go:431 level=info component=configuration msg="skipping creation of receiver not referenced by any route" receiver=web.hook
Sep 07 12:42:09 localhost.localdomain alertmanager[93736]: ts=2022-09-07T10:42:09.204Z caller=main.go:535 level=info msg=Listening address=:9093
Sep 07 12:42:09 localhost.localdomain alertmanager[93736]: ts=2022-09-07T10:42:09.204Z caller=tls_config.go:195 level=info msg="TLS is disabled." http2=false
Sep 07 12:42:11 localhost.localdomain alertmanager[93736]: ts=2022-09-07T10:42:11.181Z caller=cluster.go:705 level=info component=cluster msg="gossip not settled" polls=0 before=0 now=1 elapsed=2.000046363s
Sep 07 12:42:19 localhost.localdomain alertmanager[93736]: ts=2022-09-07T10:42:19.183Z caller=cluster.go:697 level=info component=cluster msg="gossip settled; proceeding" elapsed=10.001985143s
.....
Вердикт
Мы триумфально рассмотрели, как настроить уведомление об оповещениях по электронной почте Prometheus с помощью Alertmanager. В зависимости от установленных оповещений вы сможете вовремя получать уведомления прямо в свою учетную запись Gmail. Надеюсь, это было важно для вас.
Похожие сообщения:
- Установите Grafana в Kubernetes для мониторинга кластера
- Лучшие инструменты мониторинга на базе терминалов для Linux
- Просмотр и анализ трафика API Kubernetes с помощью Kubeshark