prometheus alertmanager告警


一、准备工作

1.1 安装或关闭以下服务

关闭防火墙等
linux时间校对
prometheus+grafana安装文档

1.2 本次安装环境

配置信息说明
服务器IP地址192.168.1.10
交换机IP地址192.168.10.1
上网行为管理IP地址192.168.20.1
系统版本CentOS7.4
内核ml-3.10.0
go版本1.19.4

接上篇prometheus snmp采集网络设备数据接着写。完成数据采集后,需要搭配上告警。
prometheus snmp采集网络设备数据

二、安装alertmanager

2.1下载并解压

alertmanager下载

tar xf alertmanager-0.25.0.linux-amd64.tar.gz

2.2配置

mv alertmanager-0.25.0.linux-amd64 /home/alermanager #修改文件名称,并移动到指定位置
cd /home/alermanager      
./alertmanager   #启动

测试访问192.168.1.10:9093
在这里插入图片描述

三、告警配置

3.1创建文件

mkdir /usr/local/prometheus/rules #告警规则目录
mkdir /home/alermanager/tmplates #告警模版目录

3.2告警规则配置

编辑prometheus文件

vim /usr/local/prometheus/prometheus.yml 
alerting:
  alertmanagers:
    - static_configs:
        - targets: ["192.168.1.10:9093"]

rule_files:             #告警规则位置
    - "/usr/local/prometheus/*_rules.yml"

编辑告警规则

vim /usr/local/prometheus/rules/sw_cpu.yml
groups:
- name: SW  #名称
  rules:

  - alert: CPU告警    #告警名称
    annotations:      #告知具体告警信息
      description: "{{ $labels.instance }} CPU > 15% (当前值: {{ $value }})"  #15%为了查看是否预警
      summary: "SW  {{ $labels.instance }} CPU非常高!!!"
    expr: hwEntityCpuUsage > 15   #告警数值
    for: 1m    #满足告警条件并持续设定时间后,发送告警
    labels:
      severity: warning
   - alert: 内存告警
    annotations:
      description: "{{ $labels.instance }} CPU > 15% (当前值: {{ $value }})"
      summary: "SW  {{ $labels.instance }}内存非常高!!!"
    expr: hwEntityMemUsage > 75
    for: 1m
    labels:
      severity: warning

  - alert: 温度告警    
    annotations:
      description: "{{ $labels.instance }} CPU > 15% (当前值: {{ $value }})"
      summary: "SW  {{ $labels.instance }}温度非常高!!!"
    expr: hwEntityTemperature > 75
    for: 1m
    labels:
      severity: warning
vim /usr/local/prometheus/rules/HWac.yml
groups:
- name: HWac
  rules:

  - alert: AP状态异常
    annotations:
      description: "{{ $labels.instance }} AP在线用户 ≠ 8 (当前值: {{ $value }})"
      summary: "AP  {{ $labels.instance }}AP状态异常,请尽快检查!!!"
    expr: hwWlanIDIndexedApRunState != 8
    for: 1m
    labels:
      severity: warning

3.3告警模版配置

编辑alertmanager文件

vim /home/alermanager/alertmanager.yml 
global:
    resolve_timeout: 5m
    # 邮箱告警配置
    smtp_hello: 'prometheus'
    smtp_from: 'xxx@qq.com'       #发送邮箱名称
    smtp_smarthost: 'smtp.qq.com:465'  # 其它邮箱请填写相应的host
    smtp_auth_username: 'xxx@qq.com'  #邮箱名称
    smtp_auth_password: 'x'           #邮箱密码
    smtp_require_tls: false            # qq邮箱需要设定 
templates:
  - '/home/alermanager/tmplates/*.tmpl'               # 指定告警模板路径

receivers:
  - name: email
    email_configs:
    - to: 'x@qq.com'                 #接收报警邮箱地址
      headers: {"subject":'{{ template "email.header" . }}'}
      html: '{{ template "email.html" . }}'
      send_resolved: true            # 发送报警解除邮件

route:
    group_wait: 5s                     # 分组等待时间
    group_interval: 5s                 # 上下两组发送告警的间隔时间
    receiver: email
    repeat_interval: 5m                # 重复发送告警时间
inhibit_rules:                       # 告警抑制:当多级别规则同时生效时,只发送最高级别的告警
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname']

编辑告警模板

vim /home/alermanager/tmplates/test.tmpl       # 告警模版
test.tmpl: |-           
    {{ define "email.header" }}
    {{ if eq .Status "firing"}}[Warning]: {{ range .Alerts }}{{ .Annotations.summary }} {{ end }}{{ end }}
    {{ if eq .Status "resolved"}}[Resolved]: {{ range .Alerts }}{{ .Annotations.resolve_summary }} {{ end }}{{ end }}
    {{ end }}

    {{ define "email.html" }}
    {{ if gt (len .Alerts.Firing) 0 -}}
    <font color="#FF0000"><h3>[Warning]:</h3></font>
    {{ range .Alerts }}
    告警级别:{{ .Labels.severity }}   <br>
    告警类型:{{ .Labels.alertname }}   <br>
    故障主机: {{ .Labels.instance }}   <br>
    告警主题: {{ .Annotations.summary }}   <br>
    告警详情: {{ .Annotations.description }}   <br>
    触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}   <br>
    {{- end }}
    {{- end }}

    {{ if gt (len .Alerts.Resolved) 0 -}}
    <font color="#66CDAA"><h3>[Resolved]:</h3></font>
    {{ range .Alerts }}
    告警级别:{{ .Labels.severity }}   <br>
    告警类型:{{ .Labels.alertname }}   <br>
    故障主机: {{ .Labels.instance }}   <br>
    告警主题: {{ .Annotations.resolve_summary }}   <br>
    告警详情: {{ .Annotations.resolve_description }}   <br>
    触发时间: {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}   <br>
    恢复时间: {{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}   <br>
    {{- end }}
    {{- end }}
    {{- end }}

四、测试

将告警数值设置低,查看是否有告警和到时间后是否发邮件。不过文章中,关于告警内容太少,后续慢慢添加。
收到的邮件

[Warning]:
告警级别:warning
告警类型:CPU告警
故障主机: 192.168.10.1
告警主题: SW 192.168.10.1CPU非常高!!!
告警详情: 192.168.10.1 CPU > 15% (当前值: 23)
触发时间: 2023-03-01 20:59:47
告警级别:warning
告警类型:内存告警
故障主机: 192.168.10.1
告警主题: SW 192.168.10.1内存非常高!!!
告警详情: 192.168.10.1 CPU > 15% (当前值: 30)
触发时间: 2023-03-01 20:59:47
告警级别:warning
告警类型:温度告警
故障主机: 192.168.10.1
告警主题: SW 192.168.10.1温度非常高!!!
告警详情: 192.168.10.1 CPU > 15% (当前值: 26)
触发时间: 2023-03-01 20:59:47
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、prometheus简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana:监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetes、docker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值