zoukankan      html  css  js  c++  java
  • Zabbix配置微信报警通知

    Zabbix告警可以通过邮件,微信,电话,短信等方式发送告警消息。

    电话和短信需要向运营商购买相应的网关,需要付费;

    邮件和微信是免费的,可以根据业务需要选择相应的告警模式

    Zabbix版本:3.2

    部署前准备工作:

    先申请一个微信企业号:https://qy.weixin.qq.com
    申请通过后 登录 该企业号

    注:每个企业号有发送消息限制,据说是有消息数限制的

    一、申请企业微信账号,并创建应用:

    主要流程如下:

     

    • 创建微信用户成员。
    • 创建应用,这是关键,如果是刚申请的公众号,创建的第一个应用ID 为1 (现在升级后的企业微信创建的应用ID为1000002)
    • 创建应用管理组,添加组成员(也就是设置哪些用户可以接收到报警的通知信息)
    • 创建成功后需要获取到以下信息:CropID  和Secret 当然还包括创建的用户信息。  

    申请企业微信,创建对应的组成员这些就不介绍了,按照注册向导创建即可,主要写下创建应用获取应用Secret 和CorpID

    • 选择【企业应用】-【创建应用】 对应范围选择自己的部门。

     

    • 创建成功后就可以看到该应用的 AgentId 和 Secret 。

     

    • CorpID 需要在【我的企业】-【企业信息】中获取。

     

    • 部门ID 很隐蔽,在【通讯录】-左侧部门列表 点击查看。

     

    二、zabbix 脚本创建

    • 创建微信报警脚本
    root@evescn:~# cat /etc/zabbix/alertscripts/weixin.sh 
    #!/bin/bash
    ###SCRIPT_NAME:weixin.sh###
    ###send message from weixin for zabbix monitor###
    ###wuhf###
    ###V1-2017-09-12###
    
    CropID='XXXXXXXXXXXXXX'
    Secret='XXXXXXXXXXXXXXXXXXXXXXXXX'
    GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" 
    Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F" '{print $10}')
    
    PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
    
    function body() {
            local int AppID=1                        #企业号中的应用id
            local UserID=$1                          #部门成员id,zabbix中定义的微信接收者
            local PartyID=1                          #部门id,定义了范围,组内成员都可接收到消息
            local Msg=$(echo "$@" | cut -d" " -f3-)  #过滤出zabbix中传递的第三个参数
            printf '{
    '
            printf '	"touser": "'"$User""",
    "
            printf '	"toparty": "'"$PartyID""",
    "
            printf '	"msgtype": "text",
    '
            printf '	"agentid": "'" $AppID """,
    "
            printf '	"text": {
    '
            printf '		"content": "'"$Msg"""
    "
            printf '	},
    '
            printf '	"safe":"0"
    '
            printf '}
    '
    }
    /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
    • 设置zabbix脚本运行路径,并把报警脚本放于该目录下
    root@evescn:~# grep "^[^#]" /etc/zabbix/zabbix_server.conf 
    ......
    AlertScriptsPath=/etc/zabbix/alertscripts
    ......
    • 脚本设置权限和所属用户
    root@evescn:~# chown zabbix:zabbix /etc/zabbix/alertscripts/weixin.sh
    root@evescn:~# chmod 744 /etc/zabbix/alertscripts/weixin.sh

    三、设置监控动作和接收用户信息

    •  进入zabbix后台,选择【管理】-->【报警媒介类型】--> 创建媒介类型

    •  选择类型为:【脚本】,脚本名称为第二步中创建的脚本名称,并配置脚本参数(使用zabbix3.0以上版本此处必须配置脚本参数)

     

    # 脚本参数
    {ALERT.SENDTO}
    {ALERT.SUBJECT}
    {ALERT.MESSAGE}
    • 选择【管理】-->【用户】--> 选择admin用户

     

    •  选择报警介质,点击添加按钮,关联上admin用户和weixin报警

    • 模拟测试,查看报警功能是否OK

    四、贴上【配置】-->【动作】中配置的默认信息配置

    服务器:{HOST.NAME}出现故障!
    
    服务器:{HOST.NAME}出现故障!
    
    告警主机:{HOSTNAME1}
    主机地址:{HOST.IP}
    告警时间:{EVENT.DATE} {EVENT.TIME}
    告警信息:{TRIGGER.NAME}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
    事件ID:{EVENT.ID}
    服务器:{HOST.NAME}已恢复!
    
    服务器:{HOST.NAME}已恢复!
    
    恢复主机:{HOSTNAME1}
    主机地址:{HOST.IP}
    恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
    故障信息:{TRIGGER.NAME}
    问题详情:{ITEM.NAME}:{ITEM.VALUE}
    当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
    事件ID:{EVENT.ID}

    文章转载自:https://www.cnyunwei.cc/archives/261

  • 相关阅读:
    四个通用分页存储过程(来源于www.codeproject.com)
    C#2.0 print winform 打印窗体数据试试
    C# 2.0 Graphics 画雪人
    [转]Asp.Net 上传大文件专题(1)概述:上传大文件的难点
    [转]Asp.Net 上传大文件专题(2)页面生成流程
    [转]C# 调用sql 2000存储过程
    [转]Asp.Net 上传大文件专题
    [转]Asp.Net 上传大文件专题(3)从请求流中获取数据并保存为文件[下]
    c#中调用Ffmpeg转换视频格式的问题
    [转]Asp.Net 上传大文件专题(3)从请求流中获取数据并保存为文件[上]
  • 原文地址:https://www.cnblogs.com/evescn/p/7510163.html
Copyright © 2011-2022 走看看