Bootstrap

Prometheus邮件告警

一.  部署Alertmanager:

        1.  解压Alertmanager压缩包:

[root@node5 ~]# tar xf alertmanager-0.24.0.linux-amd64.tar.gz -C /usr/local/

        2.  为解压后的文件做软连接:

[root@node5 ~]# ln -sv /usr/local/alertmanager-0.24.0.linux-amd64/ /usr/local/alertmanager

        3.  配置Alertmanager配置文件:

[root@node5 ~]# cd /usr/local/alertmanager

## 备份原本配置文件
[root@node5 alertmanager]# cp alertmanager.yml{,.bak}

[root@node5 alertmanager]# vim alertmanager.yml

global:  ##全局配置
  resolve_timeout: 5m  
  smtp_smarthost: 'smtp.163.com:456'
  smtp_from: '[email protected]'  ##发送告警的邮箱
  smtp_auth_username: '[email protected]'  ##邮箱的用户名
  smtp_auth_password: 'KEZSZMNTQZXBQXRU'  ##邮箱的授权码,并非邮箱的登陆密码
  smtp_require_tls: false

route:  ##配置报警分发策略
  group_by: ['alertname']  ##分组标签
  group_wait: 10s  ##告警等待时间
  group_interval: 10s  ##两组告警的间隔时间
  repeat_interval: 1m  ##重复告警的间隔时间
  receiver: 'mail'  ##默认接收者
  routes:  ##指定哪些组可以接受消息
    - receiver: mail

receivers:  ##配置接收者信息
  - name: 'mail'
    email_configs:
      - to: '[email protected]'  ##接收报警邮件的邮箱

        4.  测试配置文件语法是否正确:

[root@node5 alertmanager]# ./amtool check-config alertmanager.yml

Checking 'alertmanager.yml'  SUCCESS
Found:
 - global config
 - route
 - 0 inhibit rules
 - 1 receivers
 - 0 templates

二.  关联Prometheus和Alertmanager:

        1.  修改Prometheus.yml文件中的alerting配置项及rule_files配置项:

[root@node5 ~]# vim /usr/local/prometheus/prometheus.yml

alerting:
  alertmanagers:
    - static_configs:
        - targets:
            - localhost:9093

rule_files:  ##告警规则的文件
  - "rules.yml"

        2.  编写告警规则文件" rules.yml ":

[root@node5 ~]# vim /usr/local/prometheus/rules.yml

groups:
  - name: mem_rule
    rules:  ##告警规则
      - alert: '内存报警'  ##告警规则的名称
        expr: (node_memory_MemTotal_bytes - (node_memory_MemFree_bytes+node_memory_Buffers_bytes+node_memory_Cached_bytes )) / node_memory_MemTotal_bytes * 100 > 1  
##基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件
        for: 30s  ##评估等待时间,可选参数。用于表示只有当触发条件持续一段时间后才发送告警
        labels:  ##自定义标签,允许用户指定要附加到告警上的一组附加标签
          severity: warning
        annotations:  ##用于指定一组附加信息
          summary: "服务名:{{$labels.altername}} 内存报警"  ##告警的摘要信息
          description: "{{ $labels.altername }} 内存资源利用率大于 10%"  ##告警的详细信息
          value: "{{ $value }}"  ##表达式计算后的值

        3.  重启prometheus服务:

[root@node5 ~]# systemctl restart prometheus.service

三.  配置Alertmanager服务启动文件:

        1.  编写服务启动文件:

[root@node5 ~]# vim /usr/lib/systemd/system/alertmanager.service

[Unit]
Description=alertmanager
Documentation=https://github.com/prometheus/alertmanager
After=network.target

[Service]
Type=simple
User=prometheus
WorkingDirectory=/usr/local/alertmanager
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml --storage.path=/usr/local/alertmanager/data --log.level=debug --log.format=json
Restart=on-failure

[Install]
WantedBy=multi-user.target

        2.  创建alertmanager的数据目录:

[root@node5 ~]# mkdir -p /usr/local/altermanager/data

        3.  修改目录属主,属组:

[root@node5 ~]# chown -R prometheus.prometheus /usr/local/alertmanager/*

         4.  启动服务:

[root@node5 ~]# systemctl daemon-reload

[root@node5 ~]# systemctl enable --now alertmanager.service

        5.  alertmanager服务默认端口是9093,查看端口是否监听:

[root@slave2 ~]# ss -lntup | grep 9093
tcp    LISTEN     0      4096   [::]:9093     [::]:*    users:(("alertmanager",pid=9770,fd=8))

        6.  访问alertmanager:

http://192.168.188.115:9093

;