prometheus alertmanager告警

目录

  • 一、准备工作
    • 1.1 安装或关闭以下服务
    • 1.2 本次安装环境
  • 二、安装alertmanager
    • 2.1下载并解压
    • 2.2配置
  • 三、告警配置
    • 3.1创建文件
    • 3.2告警规则配置
    • 3.3告警模版配置
  • 四、测试


一、准备工作

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
prometheus alertmanager告警_第1张图片

三、告警配置

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: '[email protected]'       #发送邮箱名称
    smtp_smarthost: 'smtp.qq.com:465'  # 其它邮箱请填写相应的host
    smtp_auth_username: '[email protected]'  #邮箱名称
    smtp_auth_password: 'x'           #邮箱密码
    smtp_require_tls: false            # qq邮箱需要设定 
templates:
  - '/home/alermanager/tmplates/*.tmpl'               # 指定告警模板路径

receivers:
  - name: email
    email_configs:
    - to: '[email protected]'                 #接收报警邮箱地址
      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

你可能感兴趣的:(linux服务搭建,prometheus,prometheus)