欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):github.com/zq2599/blog…
本篇概览
-
本文是《prometheus实战》系列的第四篇,在《prometheus实战之三:告警规则》中曾经提到过,整个告警功能分为规则和通知两部分,前文详细说明了规则,今天要学习的就是剩下的通知部分
-
完整的数据流如下图,告警从prometheus出发,到达alertmanager之后,根据配置,alertmanager会调用web服务的接口,而web服务自己又会向飞书服务器发送请求,从而触发飞书APP收到通知
-
之所以选飞书作通知手段,首先是简单,其次是相对熟悉,您也可以按照自己的喜好去选择通知途径
-
本篇要做的是把alertmanager部署好,配置好,至于后面的web服务就留在下一篇吧,咱们适当控制篇幅
-
接下来把本篇的操作步骤按顺序列一下,然后开工,如下所示,一共八步,助您完成完全个性化的告警配置
graph TD
A(1. 编写部署alertmanager的ansible脚本)
-->
B(2. 部署alertmanager)
-->
C(3. 配置prometheus,使告警到达alertmanager)
-->
D(4. 配置alertmanager,使通知到达web服务)
-->
E(5. 简单验证)
- 接下来就逐步完成吧
1. 编写部署alertmanager的ansible脚本
- 关于用ansible部署软件的操作,咱们在《prometheus实战之一:用ansible部署》有详细的说明,因此关于ansible的基本设置就不在本篇赘述了,直接给出部署alertmanager的ansible脚本即可
- ansible的改动一共有以下三步
graph TD
A(1. 修改hosts : 增加alertmanager所在机器的登录信息)
-->
B(2. 修改vars.yml : 增加几个变量的定义)
-->
C(3. 新增install_alertmanager.yml : alertmanager部署脚本)
- hosts文件内容如下,新增了alertmanager,可见我这里是把prometheus和alertmanager部署在同一台机器上的,您可以按自己的实际情况调整
[prometheus-group]
prometheus ansible_host=192.168.50.134 ansible_port=22 ansible_user=prometheus ansible_password=888888
working001 ansible_host=192.168.50.134 ansible_port=22 ansible_user=prometheus ansible_password=888888
alertmanager ansible_host=192.168.50.134 ansible_port=22 ansible_user=prometheus ansible_password=888888
- vars.yml文件内容如下,新增四个和alertmanager有关的
prometheus_user_home: /home/prometheus
prometheus_base_path: '{{prometheus_user_home}}/prometheus'
prometheus_url: https://github.com/prometheus/prometheus/releases/download
prometheus_version: 2.37.7
prometheus_deploy_path: '{{prometheus_base_path}}/prometheus-{{prometheus_version}}.linux-amd64'
node_exporter_base_path: '{{prometheus_user_home}}/node_exporter'
node_exporter_url: https://github.com/prometheus/node_exporter/releases/download
node_exporter_version: 1.5.0
node_exporter_deploy_path: '{{node_exporter_base_path}}/node_exporter-{{node_exporter_version}}.linux-amd64'
alertmanager_base_path: '{{prometheus_user_home}}/alertmanager'
alertmanager_url: https://github.com/prometheus/alertmanager/releases/download
alertmanager_version: 0.25.0
alertmanager_deploy_path: '{{alertmanager_base_path}}/alertmanager-{{alertmanager_version}}.linux-amd64'
- 最后是执行部署的脚本install_alertmanager.yml
- name: 部署alertmanager
hosts: alertmanager
gather_facts: True
vars_files:
- vars.yml
tasks:
- name: 停止残留的alertmanager
ignore_errors: yes
systemd:
name: alertmanager
state: stopped
become: yes
- name: 清理可能的alertmanager service残留文件
file:
path: /etc/systemd/system/alertmanager.service
state: absent
become: yes
- name: 清理可能的alertmanager残留文件夹
file:
path: '{{alertmanager_base_path}}'
state: absent
- name: 新建部署文件夹
file:
path: '{{alertmanager_base_path}}'
state: directory
mode: '0755'
- name: 下载并解压文件alertmanager-{{alertmanager_version}}.linux-amd64.tar.gz
ansible.builtin.unarchive:
src: '{{alertmanager_url}}/v{{alertmanager_version}}/alertmanager-{{alertmanager_version}}.linux-amd64.tar.gz'
dest: '{{alertmanager_base_path}}'
remote_src: yes
- name: 生成systemd的service文件
shell: |
tee /etc/systemd/system/alertmanager.service