首页 > 其他分享 >四、zabbix7.0推送告警至钉钉webhook机器人

四、zabbix7.0推送告警至钉钉webhook机器人

时间:2024-05-31 10:29:01浏览次数:10  
标签:webhook var TRIGGER zabbix7.0 dingding params 告警 推送 response

一、前提条件

1、zabbix服务器能够访问钉钉的服务器,具体说是能访问https://oapi.dingtalk.com/robot/send

 2、钉钉的webhook是有安全要求的,我采用的是ip的方式,我的zabbix服务器在内网,我的网络出口有多个固定公网ip,所以这样做省事,其他方式也可以你自己考虑。下图是webhook机器人的配置。

二、zabbix7配置报警媒介以及消息模板配置

告警----媒介---创建媒介类型

这一步,参数里面默认的跟我下图里不一样的,按我下图修改。Key是你的webhook机器人地址里的access_token=后面的内容。

脚本内容如下

var dingding = {
  key: null,
  message: null,
  msgtype: "markdown",
  proxy: null,

  // 发送消息的函数
  sendMessage: function () {
    var params = {
      msgtype: dingding.msgtype,
      markdown: {
        title: "网络设备告警", // 消息的标题
        text: dingding.message // 消息的内容
      },
    };

    // 钉钉的Webhook URL
    var url = "https://oapi.dingtalk.com/robot/send?access_token=" + dingding.key;

    // 创建一个新的HttpRequest对象
    var request = new HttpRequest();
    if (dingding.proxy) {
      request.setProxy(dingding.proxy); // 设置代理,如果有的话
    }

    // 设置请求头
    request.addHeader("Content-Type: application/json");
    var data = JSON.stringify(params); // 将参数转换为JSON字符串

    // 记录URL日志,替换掉key以保护隐私
    Zabbix.Log(4, "[dingding Webhook] URL: " + url.replace(dingding.key, "<BOT KEY>"));
    Zabbix.Log(4, "[dingding Webhook] params: " + data);

    // 发送POST请求
    var response = request.post(url, data);
    Zabbix.Log(4, "[dingding Webhook] HTTP code: " + request.getStatus());

    try {
      response = JSON.parse(response); // 解析响应
    } catch (error) {
      response = null;
    }

    // 检查响应状态和错误码
    if (request.getStatus() !== 200 || response.errcode !== 0) {
      if (typeof response.errmsg === "string") {
        throw response.errmsg; // 抛出错误信息
      } else {
        throw "Unknown error. Check debug log for more information."; // 抛出未知错误
      }
    }
  },
};

try {
  // 解析传入的参数
  var params = JSON.parse(value);
  if (typeof params.Key === "undefined") {
    throw 'Incorrect value is given for parameter "Key": parameter is missing'; // 检查Key参数
  }
  dingding.key = params.Key;
  if (params.HTTPProxy) {
    dingding.proxy = params.HTTPProxy; // 设置代理
  }
  dingding.message = params.Subject + "\n" + params.Message; // 组合消息内容
  dingding.sendMessage(); // 发送消息
  return "OK";
} catch (error) {
  Zabbix.Log(4, "[dingding Webhook] notification failed: " + error); // 记录错误日志
  throw "Sending failed: " + error + "."; // 抛出发送失败错误
}

消息模板配置如下

问题

主题留空就行了,内容如下:

<font color="comment">主机IP:{HOST.IP}</font>

<font color="comment">告警主机:{HOST.NAME}</font>

<font color="comment">告警时间:{EVENT.DATE} {EVENT.TIME}</font>

<font color="comment">告警等级:{TRIGGER.SEVERITY}</font>

<font color="comment">告警信息:{TRIGGER.NAME}</font>

<font color="comment">当前状态:{TRIGGER.STATUS}</font>

<font color="comment">事件ID:{EVENT.ID}</font>

主题留空,问题回复如下配置: 

<font color="Green">主机IP:{HOST.IP}</font>

<font color="Green">告警主机:{HOST.NAME}</font>

<font color="Green">恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}</font>

<font color="Green">告警等级:{TRIGGER.SEVERITY}</font>

<font color="Green">告警信息:{TRIGGER.NAME}</font>

<font color="Green">当前状态:{TRIGGER.STATUS}</font>

<font color="Green">事件ID:{EVENT.ID}</font>

 三、报警用户配置

选择你创建的告警媒介

四、配置告警动作

设置动作规则

设置动作操作。

整个逻辑就是告警动作匹配告警媒介与用户,然后进行告警的发送。

用户里面需要有使用媒介的权限和时间。大概就这个意思

标签:webhook,var,TRIGGER,zabbix7.0,dingding,params,告警,推送,response
From: https://blog.csdn.net/weixin_43419745/article/details/139345227

相关文章

  • pycharm操作push推送失败,提示用户认证失败解决方案
    方法一:首先切换输入法为windows自带,然后切换成英文,输入账户跟密码,尝试再次push,查看是否可以正常push方法二:打开项目文件夹在文件夹右击,点击“Gitbashhere” 打开Gitbash,输入push或pull命令,gitpushorigininsure_gly,切换输入法为windows自带,然后切换成英文,输入账户跟密......
  • 国际版Tiktok抖音运营流量实战班:账号定位/作品发布/热门推送/等等-13节
    TikTok运营实战:从账号定位到发现上升趋势的全面指南这是一个快速了解TikTok运营的全面指南,无论你是新手还是想要提升你的TikTok战略的老手,这里都有你需要的信息。首先,我们要讲的是“TikTok账号定位”。这是你在TikTok成功的第一步,你需要明确你的目标受众,为他们提供他们感......
  • vue + websocket + speak-tts 实现推送的告警消息弹框显示在右下角并语音播报出内容
    最近接了个项目需求,给设备配置语音加弹框告警。用户登录项目后不管在哪个页面,有告警就全局在右下角消息弹框加语音播报,下面浅介绍下我在开发中的流程以及遇到的坑!!!1、首先项目中安装speak-tts语音播报插件。npminstallspeak-tts2、创建一个全局的speech.js文件,文件中引入插......
  • 钉钉机器人推送表格
    DECLARE@WebhookUrlNVARCHAR(MAX)DECLARE@MarkdownNVARCHAR(MAX)DECLARE@BodyNVARCHAR(MAX)DECLARE@ObjectINTDECLARE@ResponseTextNVARCHAR(MAX)--钉钉机器人的WebhookURLSET@WebhookUrl='https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOK......
  • git-将老项目的分支推送到新项目的新分支上
    1.克隆新项目:首先,将新项目的仓库克隆到本地。使用以下命令将新项目克隆到本地:gitclone<新项目的仓库地址>2.进入新项目目录:进入新项目的目录,使用以下命令:cd<新项目目录>3.添加旧项目的远程仓库:将旧项目的远程仓库添加为新项目的远程仓库。使用以下命令添加远程仓库:gitr......
  • sql server钉钉推送markdown消息
    /**启用OleAutomationProcedures选项execsp_configure'showadvancedoptions',1;goreconfigure;gosp_configure'OleAutomationProcedures',1;goreconfigure;go*/declare@PostDatanVARCHAR(max)='',@ResponseTextVARCHAR(max)=&......
  • python 实现公众号模板消息推送(亲测有效)
    APPID='xxxxxxxxx'APPSECRET='xxxxxxxxxxxxxx'response=requests.get('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}'.format(APPID,APPSECRET))ACCESS_TOKEN=response.js......
  • 跨平台应用开发进阶(八) :uni-app 实现Android原生APP-云打包集成极光推送(JG-JPUSH)详
    跨平台应用开发进阶(八):uni-app实现Android原生APP-云打包集成极光推送(JG-JPUSH)详细教程:https://blog.csdn.net/sunhuaqiang1/article/details/124337987?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171619616916800182772309%2522%252C%2522scm%2522%253A%252......
  • git数据推送
    初始化-推送 gitinitgitadd.gitcommit-m"yaml"gitremoteaddoriginhttps://gitee.com/Adminayun/k8-s.gitgitpush-uoriginmaster gitremoteremoveorigingitremoteaddoriginhttps://gitee.com/Adminayun/k8-s.gitgitremote-v#假设您有一些新的或修改......
  • 微信开发-主动推送模板消息给特定用户
    其实也比较简单,设置模板后推送即可,具体官方说明文档如下:接口调用请求说明http请求方式:POSThttps://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token=ACCESS_TOKENPOST数据说明如下:{"template_id":"Dyvp3-Ff0cnail_CDSzk1fIc6-9lOkxsQE7ex......