alertmanager
Ansible Роль: osm_alertmanager
Alertmanager — это инструмент, который обрабатывает оповещения, отправленные Prometheus. Он получает оповещения от сервера Prometheus и группирует их на основе меток, а затем пересылает их различным получателям, таким как Email, PagerDuty, Slack.
Alertmanager настраивается с помощью командных флагов и файла конфигурации. Командная строка настраивает системные параметры, а конфигурационный файл содержит информацию о получателях и маршрутизации.
История версий
Дата | Версия | Описание | Изменено |
---|---|---|---|
Май 2020 | v0.0.1 | Первый черновик | Abhishek Dubey |
Июль 2020 | v0.1.0 | Добавлена интеграция с Slack, Google Chat | Mahesh Kumar |
Июнь 2022 | v0.1.1 | Добавлена поддержка кластера, пользовательских правил alertmanager, шаблонов, интеграция с AWS SNS, PagerDuty | Ishaan Ambashta |
Поддерживаемые ОС
- CentOS:7
- CentOS:6
- Ubuntu:bionic
- Ubuntu:focal
Зависимости
- prometheus-server
- libselinux-python
Требования
Нет особых требований для запуска этой роли. Эта роль не зависит от платформы для CentOS 6 или выше и Ubuntu 18 или выше. Единственная зависимость для CentOS 6 — это libselinux-python, и мы также включили это. Основные требования:
- Сервер CentOS/Ubuntu
- Python должен быть установлен на целевом сервере
- Порт 9093 должен быть открыт на вашем сервере
Переменные роли
---
# файл по умолчанию для alertmanager
alert_version: "0.20.0"
base_url: "https://github.com/prometheus/alertmanager/releases/download"
alertmanager_dir: "alertmanager-{{ version }}.linux-amd64"
download_url: "{{ base_url }}/v{{ version }}/{{ alertmanager_dir }}.tar.gz"
alertmanager_user: "alertmanager"
alertmanager_group: "alertmanager"
prometheus_user: "prometheus"
prometheus_group: "prometheus"
binary_path: "/usr/local/bin"
# Уведомление по электронной почте
email_integration: "no"
sender_email: "[email protected]"
alertmanager_email: "[email protected]"
smtp_server: "smtp.gmail.com:587"
# Интеграция с Slack
slack_integration: "yes"
slack_webhook: "https://hooks.slack.com/services/T00000000/B00/XXXXXX"
slack_channel_name: "alerting-channel"
# Интеграция с Google Chat
google_chat_integration: "no"
calert_home: "/opt/calert"
calert_base_url: "https://github.com/mr-karan/calert/releases/download"
calert_url: "{{ calert_base_url }}/v1.2.1/calert_1.2.1_linux_amd64.tar.gz"
google_chat_room: "google-room-name"
room_webhook: "google-chat-room-webhook"
# Интеграция с PagerDuty
PagerDuty_integration: "no"
PagerDuty_channel_name: "call-alerting-channel"
pagerduty_url: "https://events.pagerduty.com/v2/enqueue"
# Интеграция с SNS
sns_integration: "no"
sns_channel_name: "sns"
region: "us-east-1"
Вы можете определить любую версию prometheus, а также версию alertmanager, которую хотите установить на своем сервере.
Обязательные переменные
Переменная | Значение по умолчанию | Возможные значения | Описание |
---|---|---|---|
alert_version | "0.20.0" | Любая версия | Alertmanager будет загружен с релизов github, поэтому вы должны указать версию |
alertmanager_user | alertmanager | Любой пользователь | Пользователь службы Alertmanager |
alertmanager_group | alertmanager | Любая группа | Группа службы Alertmanager |
prometheus_user | prometheus | Любой пользователь | Пользователь службы Prometheus, владелец специфических правил узла |
prometheus_group | prometheus | Любая группа | Группа службы Prometheus, предоставляющая разрешения на файл специфических правил узла |
Необязательные переменные
Переменная | Значение по умолчанию | Возможные значения | Описание |
---|---|---|---|
base_url | https://github.com/prometheus/alertmanager/releases/download | Базовый URL для загрузки Alertmanager | Базовый URL для загрузки Alertmanager |
alertmanager_dir | alertmanager-{{ version }}.linux-amd64 | Имя директории Alertmanager | Директорий Alertmanager после распаковки |
download_url | {{ base_url }}/v{{ version }}/{{ alertmanager_dir }}.tar.gz | Ссылка для загрузки Alertmanager | URL на GitHub для загрузки бинарного файла Alertmanager |
binary_path | /usr/local/bin | Любой путь | Путь к бинарному файлу Alertmanager |
email_integration | "no" | "yes"/"no" | Включить/выключить интеграцию электронной почты с Alertmanager |
sender_email | "send.test@example.com" | Любой адрес электронной почты | Адрес электронной почты для отправки оповещений |
alertmanager_email | "alertmanager.test@example.com" | Любой адрес электронной почты | Адрес электронной почты Alertmanager |
smtp_server | "smtp.gmail.com:587" | Адрес SMTP-сервера с портом | SMTP-сервер электронной почты, используемый Alertmanager |
slack_integration | "no" | "yes"/"no" | Включить/выключить интеграцию Slack с Alertmanager |
slack_webhook | "https://hooks.slack.com/services/T00000000/B00/XXXXXX" | Любой вебхук канала | Вебхук канала Slack для интеграции с Alertmanager |
slack_channel_name | "alerting-channel" | Любое имя канала Slack | Имя канала Slack для отправки оповещений |
google_chat_integration | "yes" | "yes"/"no" | Включить/выключить интеграцию Google Chat с Alertmanager |
calert_home | "/opt/calert" | Путь к домашней директории Calert | Место, где находится бинарный файл и конфигурационные файлы Calert |
calert_base_url | "https://github.com/mr-karan/calert/releases/download" | URL для загрузки Calert | URL бинарного файла Calert |
calert_url | "{{ calert_base_url }}/v1.2.1/calert_1.2.1_linux_amd64.tar.gz" | URL для загрузки Calert | URL на GitHub для загрузки бинарного файла Calert |
google_chat_room | "google-room-name" | Любая комната Google Chat | Комната Google Chat для отправки оповещений |
room_webhook | "google-chat-room-webhook" | Вебхук любой комнаты Google Chat | Вебхук комнаты Google Chat для интеграции с Calert |
rules_file | "node_exporter.rules" | Файл с правилами по умолчанию | Файл правил для установки оповещений |
templates | "email.tmpl" | Шаблон по умолчанию | Шаблон файла для формата оповещений |
PagerDuty_integration | "no" | "yes"/"no" | Включить/выключить интеграцию PagerDuty с Alertmanager |
PagerDuty_channel_name | "call-alerting-channel" | Любое имя канала PagerDuty | Имя канала PagerDuty для отправки оповещений |
pagerduty_url | "https://events.pagerduty.com/v2/enqueue" | указанный URL PagerDuty | URL PagerDuty |
sns_integration | "no" | "yes"/"no" | Включить/выключить интеграцию SNS с Alertmanager |
sns_channel_name | "sns" | Любое имя канала AWS SNS | Имя канала SNS для отправки оповещений в AWS SNS |
region | "us-east-1" | любой регион для sns | Регион, в который отправляются оповещения |
Пример плейбука
Вот пример основного плейбука
---
- hosts: alertmanager
roles:
- role: alertmanager
Здесь мы используем root в качестве пользователя, но вы можете использовать другого пользователя. Для этого просто установите значение become в true. Например:
---
- hosts: alertmanager
roles:
- role: alertmanager
become: yes
Пример инвентаря
Для инвентаря вы можете создать файл хостов, в котором определите IP вашего сервера. Например:
[alertmanager]
10.1.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=server1.pem
[prometheus]
10.1.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=server1.pem
Примечание: Пожалуйста, добавьте IP сервера Prometheus. Конфигурация Alert Manager будет автоматически добавлена в файл prometheus.yml.
Вы можете просто использовать эту роль, выполнив следующую команду
ansible-playbook -i hosts site.yml
Вы можете добавить несколько правил и файлов шаблонов сразу, передав дополнительные переменные или файл JSON с дополнительными переменными, например:
Передача дополнительных переменных
ansible-playbook -i hosts site.yml --extra-vars='{"rules_file": ["rule_file1","rule_file2"], "templates": ["file1.tmpl", "file2.tmpl"]}'
Передача файла дополнительных переменных
ansible-playbook -i hosts site.yml --extra-vars "@extra_vars.json"
Примечание:
Вы должны сначала переместить свои пользовательские шаблоны или файлы правил в папку osm_alertmanager/files.
Файл дополнительных переменных должен быть в формате JSON. Например:
Файл дополнительных переменных - extra_vars.json
{
"rules_file": "rule_file1",
"templates": "file2.tmpl"
}
Структура каталога роли
Вот структура каталога роли:
osm_alertmanager
├── defaults
│ └── main.yml
├── files
│ ├── alertmanager.init
│ ├── email.tmpl
| ├── sns.tmpl
| ├── slack_notification.tmpl
│ ├── google_chat_calert.tmpl
│ ├── node_exporter.rules
│ ├── mysql_exporter.rules
│ ├── telegraf_kafka.rules
│ └── telegraf_node.rules
├── handlers
│ └── main.yml
├── README.md
├── site.yml
├── tasks
│ ├── calert.yml
│ ├── debian.yml
│ ├── main.yml
│ ├── prerequisites.yml
│ └── redhat.yml
└── templates
├── alertmanager.service.j2
├── alertmanager.yml.j2
├── calert.service.j2
└── calert.toml.j2
После успешной установки alertmanager вы можете зайти по URL alertmanager и увидеть веб-интерфейс.
Лицензия
BSD
Ссылки
Информация об авторе
Эта роль написана и поддерживается [Abhishek Dubey] (https://gitlab.com/abhishek-dubey). Если у вас есть какие-либо вопросы и предложения, пожалуйста, свяжитесь по следующим адресам.
Alertmanager is tool that handles alerts sent by Prometheus.
ansible-galaxy install OT-OSM/alertmanager