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"

注意

  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 后,您可以浏览 alertmanager URL 查看 Web 界面 web

许可证

BSD

参考文献

作者信息

该角色由 Abhishek Dubey 编写和维护。如果您有任何疑问和建议,请随时与以下身份联系。

Abhishek Dubey
Ishaan Ambashta

关于项目

Alertmanager is tool that handles alerts sent by Prometheus.

安装
ansible-galaxy install opstree_devops.alertmanager
许可证
Unknown
下载
81
拥有者