AlertManager安装及告警发送

Prometheus触发一条告警的过程
prometheus—> 触发阈值—>超出持续时间—>AlertManager—>分组|抑制|静默—>媒体类型—>邮件|钉钉|微信

分组(group): 将性质类似的报警合并为单个通知,比如网络通知,主机通知,服务通知
静默(silences): 是一种简单的特定时间静音机制.例如服务器维护前设置静默,晚上定时更新时设置静默
抑制(inhibition):当报警发出后,停止重复发送由此告警引发的其他告警,即合并一个故障引起的多个报警时间,可以消除冗余告警

1. 安装AlertManager

可以和prometheus在同一个服务器或不同服务器,只要网络能通就可以.

# cd /apps
# wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz
# tar xf alertmanager-0.24.0.linux-amd64.tar.gz
# ln -sf /apps/alertmanager-0.24.0.linux-amd64 /apps/alertmanager
# ln -sf /apps/alertmanager-0.24.0.linux-amd64/alertmanager /usr/bin/

2. 配置service文件

/etc/systemd/system/alertmanager.service

[Unit]
Description=Prometheus AlertManager
After=network.target[Service]
Restart=on-failure
ExecStart=/usr/bin/alertmanager --config.file=/apps/alertmanager/alertmanager.yml[Install]
WantedBy=multi-user.target

启动服务

# systemctl enable --now alertmanager.service

3. 告警通知

3.1 邮件告警

参数 含义
smtp_from 发件人邮箱
smtp_smarthost 邮件服务器smtp地址
smtp_auth_username 发件人账号
smtp_auth_password 发件人密码
smtp_require_tls 是否需要tls协议
wechart_api_url 企业微信API地址
wechart_api_secret 企业微信API SECRET
wechat_api_corp_id 企业微信CORP ID信息
resolve_timeout: 60s 当一个告警在AlertManager持续多久未接受到新告警后标记告警状态为resolved
group_by: [‘alertname’] 根据标签进行分组
group_wait: 10s 组告警等待时间,告警产生后等待10秒,10秒内有相同告警则合并发送
group_interval: 1m 第二次产生告警,间隔1m如果没有恢复,进入repeat_interval
repeat_interval: 2m 当第一条告警成功发送后,等待2分钟,如果没有恢复,再发送
severity: ‘critical’ 告警级别
alertmanager.yml
global:# 在没有报警的情况下声明为已解决的时间resolve_timeout: 1m# 配置邮件发送信息smtp_smarthost: 'smtp.qq.com:465'smtp_from: '2841809255@qq.com'smtp_auth_username: '2841809255@qq.com'smtp_auth_password: 'yujbvgdfhwd0bdij'smtp_hello: 'qq.com'smtp_require_tls: falseroute:group_by: ['alertname']group_wait: 10sgroup_interval: 10srepeat_interval: 2mreceiver: 'web.hook'
receivers:
- name: 'web.hook'email_configs:- to: '13917099322@139.com'inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']

3.1.1 配置告警规则

# mkdir /apps/prometheus/rules
# vi /apps/prometheus/rules/pods_rule.yaml

rule配置

   # 监控项说明- alert: node内存可用大小# prosql 表达式expr: node_memory_MemFree_bytes < 2*1024*1024*1024# 采样间隔for: 15s# 标签,告警级别labels:severity: critical# 告警内容annotations:description: node可用内存小于2G

3.1.2 配置prometheus

修改prometheus.yaml

  1. 设置alertmanager
  2. 设置rule路径

3.1.2.1 设置alertmanager

altermanager之前是装在prometheus同一个服务器上,也可以另外装在其他服务器上.只需修改这里的IP地址即可.

# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:- 192.168.31.201:9093

3.1.2.2 指定rule位置

这里rule可以写相对路径,也可以写绝对路径

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:- "/apps/prometheus/rules/pods_rule.yaml"

3.1.2.3 重启prometheus

# systemctl restart prometheus.service

此时访问altermanager可以看到告警已经产生

登录邮箱,发现已经收到了2条来自于prometheus的告警邮件

在prometheus的alters中也可以看到相关告警.

3.2 钉钉告警

3.2.1 添加机器人





3.2.2 钉钉脚本

#!/bin/bash
source /etc/profile
MESSAGE=$1/usr/bin/curl -X "POST" 'https://oapi.dingtalk.com/robot/send?access_token=1179c64f197a5da70d4b393111dd43298e58f8112e22f3e00d6632591337c43a'\-H 'Content-Type: application/json'  \-d '{"msgtype": "text","text": {"content": "'${MESSAGE}'"}
}'

测试发送告警

root@prometheus-2:/apps/alertmanager# ./dingding.sh "alertname,测试测试"
{"errcode":0,"errmsg":"ok"}root@prometheus-2:/apps/alertmanager#
root@prometheus-2:/apps/alertmanager#

3.2.3 部署webhook-dingtalk

prometheus-webhook-dingtalk

root@prometheus-2:/apps# wget https://github.com/timonwong/prometheus-webhook-dingtalk/releases/download/v1.4.0/prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz
root@prometheus-2:/apps# tar xf prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz
root@prometheus-2:/apps# ln -sf /apps/prometheus-webhook-dingtalk-1.4.0.linux-amd64 /apps/prometheus-webhook-dingtalk

配置service文件

[Unit]
Description=Prometheus dingtalk
After=network.target[Service]
Restart=on-failure
ExecStart=/apps/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --web.listen-address="0.0.0.0:8060" --ding.profile="alertname=https://oapi.dingtalk.com/robot/send?access_token=1179c64f197a5da70d4b393111dd43298e58f8112e22f3e00d6632591337c43a"[Install]
WantedBy=multi-user.target

启动dingtalk

# systemctl enable --now prometheus_dingtalk.service
# ss -ntlup |grep 8060
tcp     LISTEN   0        4096                   *:8060                 *:*      users:(("prometheus-webh",pid=25625,fd=3))

3.2.4 配置altermanager

配置alertmanager.yml追加以下配置

route:group_by: ['alertname']group_wait: 10sgroup_interval: 10srepeat_interval: 2m## 这一行将接受人变更成钉钉receiver: 'dingtalk'
receivers:
- name: 'dingtalk'webhook_configs:- url: 'http://192.168.31.201:8060/dingtalk/alertname/send'send_resolved: true

重启alertmanager后,就能在钉钉上收到消息了

3.2.5 钉钉转发流程

  1. prometheus通过rule匹配到告警(prometheus.yml/rule_files:中指定的rule.yaml)
  2. 触发告警后,将告警转发给alertmanager(prometheus.yml/alerting:/alertmanagers:定义altermanager地址)
  3. alertmanager将收到的告警通过alertmanager.yml/route:/receiver: 'dingtalk’将告警转发给钉钉,并通过receivers:/webhook_configs:的配置来指定dingtalk webhook
  4. webhook通过启动文件配置中的–ding.profile最终将消息转发到钉钉

3.3 企业微信告警

3.3.1 创建机器人

发送测试数据,确保客户端能收到

3.3.2 拿到3个ID

企业ID

AgentId

Secret:


3.3.3 altermanager配置

  1. 通过修改receiver将altermanager的告警转发给企业微信
  2. 企业微信中分别设置企业id corp_id,AgentId agent_id,Secret api_secret
  3. to_party来限制消息发给哪些人
route:group_by: ['alertname']group_wait: 10sgroup_interval: 2mrepeat_interval: 10mreceiver: 'wechat'
- name: 'wechat'wechat_configs:- corp_id: 'ww11cfebc2eb8be3e2'to_party: '2'       # 发给哪个部门,可以在部门边上的...查看部门idagent_id: '1000003'api_secret: '9j4EAng3zKXabEMVkRQemGtBZQVA2728jHATBHgXD3w'send_resolved: true

3.3.4 将服务器IP添加到微信白名单

登录企业微信后台,在应用管理中打开机器人,在下面找到企业可惜IP,添加公网IP.
公网IP可以使用下面命令查询.

# curl ifconfig.me

3.3.4 重启alertmanager

# systemctl restart alertmanager

此时在客户端已经收到了告警信息

【云原生 | Kubernetes 系列】---AlertManager安装及告警发送相关推荐

  1. 【云原生 | Kubernetes 系列】---Skywalking部署和监控

    [云原生 | Kubernetes 系列]-Skywalking部署和监控 1. 分布式链路追踪概念 在较大的web集群和微服务环境中,客户端的一次请求可能需要经过多个不同的模块,多个不同中间件,多个 ...

  2. 【云原生Kubernetes系列第五篇】kubeadm v1.20 部署K8S 集群架构(人生这道选择题,总会有遗憾)

    系列文章目录 ??即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔 ??收录至专栏 云原生 ??[云原生Docker系列第一篇]Docker镜像管理 ??[云原生Docker系列第二篇]Do ...

  3. 云原生|kubernetes|centos下安装部署kubeapps以及简单的使用示例

    前言: kubeapps是Bitnami公司的一个项目,其目的是为Kubernetes的使用者们提供已经打包好的应用仪表盘,它拥有网页界面可以更方便的部署和管理k8s 原生应用. 包含绝大多数的云原生 ...

  4. 【云原生 | Kubernetes 系列】--持续交付和持续部署GITOPS(上)

    1. 持续交付和持续部署 Continuous Integration Continuous Delivery Continuous Deployment Plan Code Build Test R ...

  5. 【云原生 | Kubernetes 系列】K8s 实战 管理 Secret 详解

    kubectl 管理 Secret 前言 一.使用 kubectl 管理 Secret 1.1.创建 Secret 1.2.验证 Secret 1.3.解码 Secret 1.4.清理 二.使用配置文 ...

  6. 【云原生 | Kubernetes 系列】---CephFS和OSS

    1. CephFS ceph fs即ceph filesystem,可以实现文件系统共享功能,客户端通过ceph协议挂载并使用ceph集群作为数据存储服务器. Ceph FS需要运行Meta Data ...

  7. 【云原生 | Kubernetes 系列】K8s 实战 一文学会如何从 PodSecurityPolicy 迁移到内置的 PodSecurity 准入控制器

    PodSecurityPolicy 迁移到内置的 PodSecurity 准入控制器 前言 一.Pod 安全性 二.访问权限 三.标准化 PodSecurityPolicy 3.1.去掉纯粹变更性质的 ...

  8. 【云原生 | Kubernetes 系列】--Gitops持续交付和持续Tekton Triggers

    Tekton Triggers Tekton 几个项目 Tekton Pipelines Task Steps:执行具体操作,在容器中执行的命令或脚本 command script TaskRun 运 ...

  9. 【云原生 | Kubernetes 系列】1个POD2个container实现Wordpress K8s部署

    1. Wordpress架构 2. 构建wordpress镜像 2.1 构建nginx-base-wordpress镜像 Dockerfile FROM harbor.intra.com/baseim ...

最新文章

  1. 评估指标:ROC,AUC,Precision、Recall、F1-score
  2. CloudStack学习-2
  3. 手把手教您如何用U盘给电脑安装WIN10系统详细教程
  4. The J2EE Architect's Handbook
  5. 七个你没用过的炫酷开发工具推荐
  6. 理解zookeeper选举机制
  7. 51单片机入门教程(5)——定时器中断
  8. 插件怎么用_【Anki插件篇】(01)插件介绍
  9. 如何搞定知乎模拟登陆的加密难题?
  10. selenium 无法启动IE浏览器的解决方法
  11. ios官方菜单项目重点剖析附项目源码
  12. Deep Speaker代码解析
  13. pb 使用mysql_pb连接mySql数据库
  14. 研究生期间各方面规划
  15. 支持跨域的html元素
  16. c 添加mysql表单的一行数据类型,MySQL InnoDB表行格式及压缩
  17. 第五章 软件项目成本管理
  18. 腾讯WeTest:为用户开新篇,七周年全球惠享巨献
  19. 人工智能技术--四要素分析
  20. ie自带css定位,CSS实现元素相对于浏览器窗口进行定位_css

热门文章

  1. elitebook 735 G5安装linux系统卡在黑/紫屏解决方案
  2. Socket 基础 非阻塞式TCP socket,实现文件传输jpg,mov等格式
  3. 无人驾驶货运卡车技术企业图森未来获C轮5500万美元融资丨Xtecher 融资消息
  4. 全新概念的国际学习平台诞生了
  5. sql server 删表外键约束报错
  6. 受用一生的做人做事准则
  7. Unity实时接收麦克风音频将音频可视化类卡拉OK效果展示
  8. oracle安装后 服务没有,Oracle10g安装后没有服务项
  9. mysql学习笔记6——用phpmyadmin和在腾讯微云中创建数据库
  10. 多目标跟踪MOT踩坑记录