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"

Примечание:

  1. Вы должны сначала переместить свои пользовательские шаблоны или файлы правил в папку osm_alertmanager/files.

  2. Файл дополнительных переменных должен быть в формате 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 и увидеть веб-интерфейс. web

Лицензия

BSD

Ссылки

Информация об авторе

Эта роль написана и поддерживается [Abhishek Dubey] (https://gitlab.com/abhishek-dubey). Если у вас есть какие-либо вопросы и предложения, пожалуйста, свяжитесь по следующим адресам.

Abhishek Dubey
Ishaan Ambashta

О проекте

Alertmanager is tool that handles alerts sent by Prometheus.

Установить
ansible-galaxy install OT-OSM/alertmanager
Лицензия
Unknown
Загрузки
69
Владелец