zoukankan      html  css  js  c++  java
  • linux(centos8):prometheus使用alertmanager发送报警邮件(prometheus 2.18.1/alertmanager 0.20.0)

    一,alertmanager的用途

    1,Alertmanager的作用:
    Alertmanager是一个独立的报警模块,
    它接收Prometheus等客户端发来的警报,并通过分组、删除重复等处理,
    通过路由把警报发送给正确的接收器;
    报警方式可以按照不同的规则发送给不同的模块负责人,
    Alertmanager支持Email, Slack,等报警方式, 
    也支持通过webhook接入钉钉等IM工具
     
    2,我们这里配置的例子:
    当一台运行node_exporter的服务器发生故障后,
    alertmanager通过prometheus得到监控信息,
    会发送邮件给指定的邮箱实现报警
     

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

    说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,下载alertmanager

    1,官网下载地址
    https://prometheus.io/download/
    2,下载安装包
    [root@blog prometheus]# pwd
    /usr/local/source/prometheus
    [root@blog prometheus]# wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz

    三,安装alertmanager

    1,解压
    [root@blog prometheus]# tar -zxvf alertmanager-0.20.0.linux-amd64.tar.gz
    2,移动到安装目录
    [root@blog prometheus]# mv alertmanager-0.20.0.linux-amd64 /usr/local/soft/
    3,查看安装效果:
       查看alertmanager的版本
    [root@blog prometheus]# /usr/local/soft/alertmanager-0.20.0.linux-amd64/alertmanager --version
    alertmanager, version 0.20.0 (branch: HEAD, revision: f74be0400a6243d10bb53812d6fa408ad71ff32d)
      build user:       root@00c3106655f8
      build date:       20191211-14:13:14
      go version:       go1.13.5

    四,配置alertmanager

    1,编辑配置文件
    [root@blog alertmanager-0.20.0.linux-amd64]# pwd
    /usr/local/soft/alertmanager-0.20.0.linux-amd64
    [root@blog alertmanager-0.20.0.linux-amd64]# vi alertmanager.yml
    内容:
    global:
      resolve_timeout: 5m
      smtp_smarthost: 'smtp.163.com:465'
      smtp_from: 'chinalinuxzend@163.com'
      smtp_auth_username: 'chinalinuxzend@163.com'
      smtp_auth_password: 'yourauthcode'
      smtp_require_tls: false
    route:
      group_by: ['alertname']
      group_wait: 10s
      group_interval: 10s
      repeat_interval: 1h
      receiver: 'mail'
    receivers:
    - name: 'mail'
      email_configs:
        - to: '371125307@qq.com'

    说明:

    如果是在阿里云上,需要配置465端口发送邮件,因为25端口被封禁了,参考这一篇:

    https://www.cnblogs.com/architectforest/p/12924395.html

    smtp_auth_password:它不是邮箱的登录密码,而是邮件服务商提供的一个授权码

    2,检查配置是否正确?
    [root@blog alertmanager-0.20.0.linux-amd64]# ./amtool check-config alertmanager.yml
    如果看到Checking 'alertmanager.yml’  SUCCESS
    表示配置正确
     

    五,使systemd支持alertmanager服务

     
    1,编辑service文件
    [root@blog alertmanager-0.20.0.linux-amd64]# vi /usr/lib/systemd/system/alertmanager.service 
    内容:
    [Unit]
    Description=Alertmanager
    After=network.target
     
    [Service]
    Type=simple
    ExecStart=/usr/local/soft/alertmanager-0.20.0.linux-amd64/alertmanager --config.file=/usr/local/soft/alertmanager-0.20.0.linux-amd64/alertmanager.yml
    Restart=on-failure
     
    [Install]
    WantedBy=multi-user.target
    2,重新加载service文件
    [root@blog alertmanager-0.20.0.linux-amd64]# systemctl daemon-reload
    3,启动alertmanager服务
    [root@blog alertmanager-0.20.0.linux-amd64]# systemctl start alertmanager.service
    4,检查服务启动是否成功
    [root@blog alertmanager-0.20.0.linux-amd64]# systemctl status alertmanager.service
    5,检查alertmanager是否已在守护端口?
    [root@blog alertmanager-0.20.0.linux-amd64]# ss -lntp | grep alertmanager
    LISTEN   0         1024                      *:9093                   *:*        users:(("alertmanager",pid=29807,fd=6))
    LISTEN   0         1024                      *:9094                   *:*        users:(("alertmanager",pid=29807,fd=3))
    6,通过url访问9093端口:
    http://121.122.123.47:9093/

    六,配置prometheus使用alertmanager报警

    1,生成报警的规则文件?
    [root@blog ~]# mkdir -p /data/prometheus/rules
    [root@blog ~]# cd /data/prometheus/rules/
    [root@blog rules]# vi rule.yml
    内容:
    groups:
    - name: alert-rules.yml
      rules:
      - alert: InstanceStatus # alert 名字
        expr: up{job="118node"} == 0 # 判断条件
        for: 10s # 条件保持 10s 才会发出 alter
        labels: # 设置 alert 的标签
          severity: "critical"
        annotations:  # alert 的其他标签,但不用于标识 alert
          description: 服务器  已当机超过 20s
          summary: 服务器  运行状态  
     
    2,在prometheus的配置文件中,指定rule和alert
    [root@blog ~]# vi /usr/local/soft/prometheus-2.18.1.linux-amd64/prometheus.yml
    内容:
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
          - localhost:9093
    rule_files:
      - "/data/prometheus/rules/rule.yml"

    说明:指定了报警服务的地址/规则文件的地址

    七,重启prometheus和alertmanager,使配置生效

    重启prometheus
    [root@blog ~]# systemctl restart prometheus.service
    重启alertmanager
    [root@blog ~]# systemctl restart alertmanager.service

    八,测试发送邮件效果:

    1,从promethus的管理界面查看已添加的alert
    http://121.122.123.47:9090/alerts
    如图:
     
    2,在118这个node上,关掉node_exporter
    [root@cacheServer ~]# ps auxfww | grep node
    root      6440  0.3  0.0 718788 16520 ?        Sl   Jun05  14:13 /usr/local/soft/node_exporter-1.0.0.linux-amd64/node_exporter
    [root@cacheServer ~]# kill 6440
    [root@cacheServer ~]# ps auxfww | grep node
    3,返回到管理界面,查看:
    状态变成了firing,同时也已经收到了邮件
    如图:
     
    邮件内容:
     
     

    九,查看prometheus的版本

    [root@blog ~]# /usr/local/soft/prometheus-2.18.1.linux-amd64/prometheus --version
    prometheus, version 2.18.1 (branch: HEAD, revision: ecee9c8abfd118f139014cb1b174b08db3f342cf)
      build user:       root@2117a9e64a7e
      build date:       20200507-16:51:47
      go version:       go1.14.2 

    十,查看linux的版本

    [root@blog ~]# cat /etc/redhat-release
    CentOS Linux release 8.0.1905 (Core) 
  • 相关阅读:
    GAN对抗神经网络(原理解析)
    Wasserstein distance(EM距离)
    浅谈KL散度
    深度学习中 Batch Normalization是什么
    Batch Normalization的正确打开方式
    对于梯度消失和梯度爆炸的理解
    [转贴]loadrunner 场景设计-添加Unix、Linux Resources计数器
    Volley(四)—— ImageLoader & NetworkImageView
    SQL单表查询
    ifconfig命令详解
  • 原文地址:https://www.cnblogs.com/architectforest/p/13065262.html
Copyright © 2011-2022 走看看