opstree_devops.alertmanager
Ansible 角色:osm_alertmanager
Alertmanager 是一个处理 Prometheus 发送的警报的工具。它从 Prometheus 服务器获取警报,并根据标签将警报进行分组,然后将警报转发给不同的接收者,例如电子邮件、PagerDuty、Slack。
Alertmanager 通过命令行标志和配置文件进行配置。命令行设置系统参数,配置文件则包含接收者和路由等信息。
版本历史
日期 | 版本 | 描述 | 更改者 |
---|---|---|---|
2020年5月 | v0.0.1 | 初始草稿 | Abhishek Dubey |
2020年7月 | v0.1.0 | 添加 Slack、Google Chat 集成 | Mahesh Kumar |
2022年6月 | 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 | Alertmanager 下载链接的基本 URL | Alertmanager 下载链接的基本 URL |
alertmanager_dir | alertmanager-{{ version }}.linux-amd64 | Alertmanager 目录名 | 解压后的 Alertmanager 目录 |
download_url | {{ base_url }}/v{{ version }}/{{ alertmanager_dir }}.tar.gz | Alertmanager 下载链接 | 下载 Alertmanager 二进制文件的 GitHub URL |
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_server 地址 | Alertmanager 使用的邮件 SMTP 服务器 |
slack_integration | "no" | "yes"/"no" | 启用/禁用与 Alertmanager 的 Slack 集成 |
slack_webhook | "https://hooks.slack.com/services/T00000000/B00/XXXXXX" | 任何频道的 Webhook | 用于将 Slack 渠道与 Alertmanager 集成的 Slack 渠道 Webhook |
slack_channel_name | "alerting-channel" | 任何 Slack 渠道名称 | 用于发送警报的 Slack 渠道名称 |
google_chat_integration | "yes" | "yes"/"no" | 启用/禁用与 Alertmanager 的 Google Chat 集成 |
calert_home | "/opt/calert" | Calert 服务的主路径 | Calert 服务主路径,存放 Calert 服务二进制文件和配置文件 |
calert_base_url | "https://github.com/mr-karan/calert/releases/download" | Calert 服务下载链接 | Calert 二进制文件的 URL |
calert_url | "{{ calert_base_url }}/v1.2.1/calert_1.2.1_linux_amd64.tar.gz" | Calert 服务下载链接 | 下载 Calert 二进制文件的 GitHub URL |
google_chat_room | "google-room-name" | 任何 Google Chat 房间 | 用于发送警报的 Google Chat 房间 |
room_webhook | "google-chat-room-webhook" | 任何 Google Chat 房间的 Webhook | 用于将 Calert 服务与 Google Chat 房间集成的 Webhook |
rules_file | "node_exporter.rules" | 默认规则文件 | 设置警报的规则文件 |
templates | "email.tmpl" | 默认模板 | 警报格式的模板文件 |
PagerDuty_integration | "no" | "yes"/"no" | 启用/禁用与 Alertmanager 的 PagerDuty 集成 |
PagerDuty_channel_name | "call-alerting-channel" | 任何 PagerDuty 渠道名称 | 用于发送警报的 PagerDuty 渠道名称 |
pagerduty_url | "https://events.pagerduty.com/v2/enqueue" | PagerDuty 的指定 URL | PagerDuty 的 URL |
sns_integration | "no" | "yes"/"no" | 启用/禁用与 Alertmanager 的 SNS 集成 |
sns_channel_name | "sns" | 任何 AWS SNS 渠道名称 | 用于将警报发送到 AWS SNS 的 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
注意:请添加 Prometheus 服务器的 IP。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 后,您可以浏览 alertmanager URL 查看 Web 界面
许可证
BSD
参考文献
作者信息
该角色由 Abhishek Dubey 编写和维护。如果您有任何疑问和建议,请随时与以下身份联系。
Alertmanager is tool that handles alerts sent by Prometheus.
ansible-galaxy install opstree_devops.alertmanager