Zabbix5系列-钉钉告警(Webhook) (十九)

一、参考
  • Zabbix5系列
二 、配置钉钉群机器人

2.1 点击群的设置按钮
在这里插入图片描述

2.2 点击智能群助手
在这里插入图片描述

2.3 点击添加机器人
在这里插入图片描述

2.4 点添加
在这里插入图片描述

2.5 选择自定义机器人

在这里插入图片描述

2.6 点添加
在这里插入图片描述

2.7 配置名称和安全设置 具体安全设置参考 自定义机器人安全设置
在这里插入图片描述

2.8 记录下webhook地址
在这里插入图片描述

三、创建报警媒介类型

3.1 管理 - 报警媒介类型 - 创建媒体类型
在这里插入图片描述
3.2 配置媒介参数
在这里插入图片描述
Webhook脚本:

var Ding = { 
    url: null, //带access_token的URL
    at_all: true, //是否@所有人
    title: null, //标题
    message: null, //消息内容
    user_info: null, //@的用户
    proxy: null,  //代理
    sendMessage: function(){ 
        // 提交数据
        var params = {
            msgtype: 'markdown',
            markdown: {
                title: Ding.title,
                text: Ding.message
            },
            at: {
                atMobiles: [
                    Ding.user_info,
                ],
                isAtAll: Ding.at_all
            }
        },
        data, //格式化后的提交数据
        response, //响应对象
        request = new HttpRequest(); //新建http请求
        
        if(Ding.proxy){ //判断代理
            request.setProxy(Ding.proxy);
        }
        request.addHeader('Content-Type: application/json; charset=UTF-8'); //添加http头

        // 格式化数据
        data = JSON.stringify(params);
        Zabbix.log(4, "url: " + Ding.url);
        Zabbix.log(4, "params: " + data);
        
        response = request.post(Ding.url, data); //发送请求
        Zabbix.log(4, "http code: " + request.getStatus());
        // 格式化响应
        try{
            response = JSON.parse(response);
        }catch(error){
            response = null;
        }
        // 判断http响应是否为200   钉钉服务器响应是否无错误
        if(request.getStatus() !== 200 || response.errcode !== 0){
            if(typeof response.errmsg === "string"){
                Zabbix.log(4, "error: " + JSON.stringify(response));
                throw JSON.stringify(response);
            }else{
                throw "unknown error.";
            }
        }
    },
};
try{
    var params = JSON.parse(value); //格式化脚本参数

    if(typeof params.URL === "undefined"){ //验证URL参数
        throw 'parameter "URL" is missing';
    }
    if(typeof params.To === "undefined"){ //验证To参数
        throw 'parameter "To" is missing';
    }
    if(typeof params.Message === "undefined"){  //验证Message参数
        throw 'parameter "Message" is missing';
    }
    if(typeof params.Subject === "undefined"){  //验证Subject参数
        throw 'parameter "Message" is missing';
    }
    
    // 验证All参数 判断是否@所有人
    if(params.All){
        Ding.at_all = true;
    }else{
        Ding.at_all = false;
    }
    // 验证代理 是否添加代理
    if(params.HTTPProxy){
        Ding.proxy = params.HTTPProxy;
    }
    // 参数赋值
    Ding.url = params.URL;
    Ding.message = params.Message;
    Ding.user_info = params.To;
    Ding.title = params.Subject;
    // 发送请求
    Ding.sendMessage(); 
    return "OK"; 
}catch(error){
    Zabbix.log(4, "sending failed: " + error);
    throw "sending failed: " + error + ".";
}

3.3 切换到Message templates页 添加消息模板
在这里插入图片描述
3.4 添加告警消息模板

宏定义参考:Zabbix5.4宏参考
机器人markdown格式等参考:钉钉开放文档 - 自定义机器人接入

主题:

收到告警  

消息:

注意:如果安全验证使用关键字模式 保证消息内容里包含关键字
注意:markdown格式每行结尾添加2个空格 否则不会换行

## <font color=#FF0000>收到告警@{EVENT.TIME}</font>  
> <font color=#FF0000> **告警主机:** {HOST.NAME}</font>  
> <font color=#FF0000> **告警级别:** {TRIGGER.SEVERITY}</font>  
> <font color=#FF0000> **告警事件:** {TRIGGER.NAME}</font>  
- **主机位置:** {INVENTORY.LOCATION}  
- **IP    地址:** [{HOST.IP}](http://{HOST.IP} )  
- **告警时间:** {EVENT.DATE} {EVENT.TIME}  
- **告警数值:** {ITEM.LASTVALUE}  
- **操作数据:** {EVENT.OPDATA}  
- **事件编号:** {EVENT.ID}  
- **实时信息:** [点击查看]({INVENTORY.URL.A1})  

在这里插入图片描述

3.5 添加告警恢复模板
主题:

告警恢复

消息:

注意:如果安全验证使用关键字模式 保证消息内容里包含关键字
注意:markdown格式每行结尾添加2个空格 否则不会换行

## <font color=#00E080>告警恢复@{EVENT.TIME}</font>  
> <font color=#00E080> **告警主机:** {HOST.NAME}</font>  
> <font color=#00E080> **告警级别:** {TRIGGER.SEVERITY}</font>  
> <font color=#00E080> **告警事件:** {TRIGGER.NAME}</font>  
> <font color=#00E080> **持续时间:** {EVENT.DURATION}</font>  
- **主机位置:** {INVENTORY.LOCATION}  
- **IP    地址:** [{HOST.IP}](http://{HOST.IP} )  
- **告警时间:** {EVENT.DATE} {EVENT.TIME}  
- **告警数值:** {ITEM.LASTVALUE}  
- **事件编号:** {EVENT.ID}  
- **实时信息:** [点击查看]({INVENTORY.URL.A1})  

在这里插入图片描述

四、测试

4.1 点击报警媒介后面的测试按钮
在这里插入图片描述

4.2 消息内容输入安全设置关键字 点击测试
在这里插入图片描述
4.3 成功收到消息
在这里插入图片描述

五、配置钉钉告警

5.1 User settings - Profile - 报警媒介 - 添加
在这里插入图片描述

5.2 配置告警(收件人就是钉钉@的手机号)
在这里插入图片描述

六、创建动作

6.1 配置 - 动作 - Trigger actions - 创建动作
在这里插入图片描述
6.2 输入名称
在这里插入图片描述
6.3 切换到操作页 添加告警操作和恢复操作
在这里插入图片描述
6.4 告警操作 选择用户组或用户 仅送到钉钉

6.5 恢复操作 选择用户组或用户 仅送到钉钉
在这里插入图片描述

6.6 手动shutdown一个接口测试成功
在这里插入图片描述

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Halyace

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值