• @Zabbix配置邮箱告警及钉钉告警



    在这里插入图片描述

    1.邮件告警配置

    1)本地mail搭建

    CentOS 7自带邮件系统,利用配置mail邮件系统发送邮件告警

    #配置系统自带mail服务器(默认可能没有配置mail,重新手动配置即可)
    [root@Zabbix server ~]# egrep '^[^#]' /etc/mail.rc 
    set bsdcompat
    set from=zeny-he@qq.com                       #发送邮件后显示的邮件发送方
    set smtp=smtp.qq.com                          #网易邮箱smtp邮件服务器地址
    set smtp-auth-user=zeny-he@qq.com             #发件人邮箱
    set smtp-auth-password=ychwmzxeblxlbfbh       #发件人认证邮箱密码及校验码
    set smtp-auth=login                           #邮箱动作,表示登录动作
    
    
    
    
    
    
    
    #测试邮件服务器(发送两条测试,没有同步发送,时间有差异,如下所示:)
    [root@Zabbix server ~]# echo '你好'|mail -s '主题' zeny-he@qq.com
    [root@Zabbix server ~]# echo '你服务器已宕机,请确认哦'|mail -s '【zabbix告警】' zeny-he@qq.com
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    mail服务器已搭建完毕,如下所示:

    在这里插入图片描述

    2)zabbix server配置

    #查看zabbix脚本启动参数
    [root@Zabbix server ~]# egrep 'AlertScriptsPath' /etc/zabbix/zabbix_server.conf
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    
    
    
    
    
    
    
    #配置mail脚本
    [root@Zabbix server ~]# cd /usr/lib/zabbix/alertscripts/
    [root@Zabbix server alertscripts]# chmod +x sendmailzeny.sh 
    [root@Zabbix server alertscripts]# ll
    total 8
    -rwxr-xr-x 1 root root 1365 Aug  9 15:20 sendalert.py
    -rwxr-xr-x 1 root root  315 Aug 10 14:53 sendmailzeny.sh
    [root@Zabbix server ~]# cat  /usr/lib/zabbix/alertscripts/sendmailzeny.sh 
    #!/bin/bash
    messages=`echo $3 | tr '\r\n' '\n'`
    subject=`echo $2 | tr '\r\n' '\n'`
    echo "${messages}" | mail -v -s "${subject}" -c "zeny-he@qq.com" "zeny.he@qq.com" $1 >>/tmp/sendmail.log 2>&1
    
    
    
    
    #echo $1 >> /tmp/sendmail.log 2>&1
    #echo $messages >> /tmp/sendmail.log 2>&1
    #echo $subject >> /tmp/sendmail.log 2>&1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    3)zabbix web配置

    zabbix web配置报警媒介:

    在这里插入图片描述

    配置告警媒介动作:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    主题:
    zeny Alarm:{TRIGGER.STATUS}: {EVENT.NAME}
    消息:
    zeny 您好!
    以下是 Zabbix监控服务器发来的监控邮件。
    【监控对象】: {HOSTNAME}: {HOST.CONN}
    【事件信息】: {EVENT.NAME}: {TRIGGER.STATUS}
    【发生时间】: {EVENT.DATE} {EVENT.TIME}
    【报警级别】: {TRIGGER.SEVERITY}
    【最新数值】: {ITEM.LASTVALUE}

    在这里插入图片描述

    4)查看告警动作

    在这里插入图片描述

    2.钉钉告警配置

    1)创建接收告警群

    创建告警的群聊,可随意创建群聊

    在这里插入图片描述

    2)创建群聊机器人

    添加钉钉群聊机器人:

    在这里插入图片描述

    机器人添加

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    复制保存此项,接入的api

    在这里插入图片描述

    3)告警脚本配置

    #查看zabbix server配置中脚本默认路径
    [root@Zabbix server ~]# grep 'AlertScriptsPath' /etc/zabbix/zabbix_server.conf 
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    
    
    
    
    
    
    
    #配置钉钉告警脚本及日志
    [root@Zabbix server ~]# vim /usr/lib/zabbix/alertscripts/sendalert.py
    [root@Zabbix server ~]# ll /usr/lib/zabbix/alertscripts/sendalert.py
    -rw-r--r-- 1 root root 1365 Aug  9 15:20 /usr/lib/zabbix/alertscripts/sendalert.py
    [root@Zabbix server ~]# chmod +x /usr/lib/zabbix/alertscripts/sendalert.py
    [root@Zabbix server ~]# ll /usr/lib/zabbix/alertscripts/sendalert.py
    -rwxr-xr-x 1 root root 1365 Aug  9 15:20 /usr/lib/zabbix/alertscripts/sendalert.py
    [root@Zabbix server ~]# ll /var/log/zabbix/dingding.log
    -rw-r--r-- 1 root root 0 Aug  9 15:24 /var/log/zabbix/dingding.log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    钉钉告警脚本如下:

    #说明:以下脚本只要将webhook改为你自己的webhook值即可,其它的不需要改变。
    
    #!/usr/bin/python
    
    #-*- coding: utf-8 -*-
    
    #zabbix钉钉报警
    
    
    import requests,json,sys,os,datetime
    
    #此项为机器人webhook的api
    webhook="https://oapi.dingtalk.com/robot/send?access_token=fc24a33e1e6f5e28abf65303628f9b9b6040c5557498fdf5cd7a33705334b824"
    
    
    
    user=sys.argv[1]
    
    #发给钉钉群中哪个用户
    
    text=sys.argv[3]
    
    #发送的报警内容
    
    data={
    
        "msgtype": "text",
    
        "text": {
    
            "content": text
    
        },
    
        "at": {
    
            "atMobiles": [
    
                user
    
            ],
    
            "isAtAll": False
    
        }
    
    }
    
    #钉钉API固定数据格式
    
    headers = {'Content-Type': 'application/json'}
    
    x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
    
    if os.path.exists("/var/log/zabbix/dingding.log"):
    
        f=open("/var/log/zabbix/dingding.log","a+")
    
    else:
    
        f=open("/var/log/zabbix/dingding.log","w+")
    
    f.write("\n"+"--"*30)
    
    if x.json()["errcode"] == 0:
    
        f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
    
        f.close()
    
    else:
    
        f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "发送失败" + "\n" + str(text))
    
        f.close()
    
    
    #将发送的告警信息写入本地日志/var/log/zabbix/dingding.log中                                                                   
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78

    脚本手动测试

    #手动测试
    [root@Zabbix server ~]# cd /usr/lib/zabbix/alertscripts/
    [root@Zabbix server alertscripts]# ./dingding.py  #人员的钉钉号   Test  "这是条告警测试信息,请忽略"
    
    • 1
    • 2
    • 3

    **加粗样式**

    错误解析:

    #该脚本要求至少python2.7版本,具有requests模块
    #安装python环境:
    yum install python-pip -y
    pip install --upgrade pip
    pip install requests
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4)zabbix web配置

    管理》报警媒介类型》创建媒介类型

    在这里插入图片描述

    告警媒介配置

    在这里插入图片描述

    脚本参数:
    
    {ALERT.SENDTO}
    #对应脚本中的,user=sys.argv1。
    
    {ALERT.SUBJECT}
    #代表发送的信息的标题,在"报表"的"动作日志"中可以看到。
    
    {ALERT.MESSAGE}
    #对应脚本中的,text=sys.argv3
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    配置执行的动作

    在这里插入图片描述
    在这里插入图片描述

    "主题"对应"钉钉告警"媒介中的:{ALERT.SUBJECT}
    "消息"对应"钉钉告警"媒介中的:{ALERT.MESSAGE}
    "收件人"对应"钉钉告警"媒介中的:{ALERT.SENDTO}

    主题:
    故障名称(触发器名称):{EVENT.NAME}
    消息:
    告警主机:{HOSTNAME1}
    告警时间:{EVENT.DATE} {EVENT.TIME}
    告警等级:{TRIGGER.SEVERITY}
    告警信息: {TRIGGER.NAME}
    告警项目:{TRIGGER.KEY1}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
    事件ID:{EVENT.ID}

    主题:
    故障恢复(触发器名称):{EVENT.NAME}
    消息:
    恢复主机:{HOSTNAME1}
    恢复时间:{EVENT.DATE} {EVENT.TIME}
    主机IP:{HOST.IP}
    告警项目:{TRIGGER.KEY1}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
    事件ID:{EVENT.ID}

    用户告警媒介添加

    在这里插入图片描述

    注:这里只需要添加钉钉群里的任何一个成员的钉钉账号即可,即添加一个收件人,这样在机器人群里成员都能看到告警信息.,如果添加多个收件人,则机器人群里就会发送多个告警信息,一个收件人发一条信息.

  • 相关阅读:
    RNA-seq——二、sra数据下载、fastqc与质量控制
    三维医学图像处理系统(PACS)源码
    vue-创建项目
    IOT 之 MQTT协议
    分部积分法
    栈与队列经典题目——用队列实现栈
    【matplotlib基础】--几何图形
    用baostock库获取上证50成分股
    猿创征文 | 【国产数据库实战】使用docker部署PolarDB-X云原生分布式开源数据库
    EasyRecovery2025免费不要钱的电脑数据恢复软件下载
  • 原文地址:https://blog.csdn.net/weixin_55972781/article/details/126257270