zabbix6.2.4企业微信群机器人告警

2023-11-03

zabbix6.2.4企业微信群机器人告警

基于https://blog.csdn.net/stars_moon1024/article/details/123042369调试

创建媒介

在这里插入图片描述

脚本如下

var Wechat = {
  token: null,
  to: null,
  message: null,
  parse_mode: null,

  escapeMarkup: function (str, mode) {
    switch (mode) {
      case 'markdown':
        return str.replace(/([_*\[`])/g, '\\$&');

      case 'markdownv2':
        return str.replace(/([_*\[\]()~`>#+\-=|{}.!])/g, '\\$&');

      default:
        return str;
    }
  },

  sendMessage: function () {
    var params = {
      msgtype: "markdown",
      chat_id: Wechat.to,
      markdown: {
        content: Wechat.message
      },
      disable_web_page_preview: true,
      disable_notification: false
    },
      data,
      response,
      request = new HttpRequest(),
      url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=' + Wechat.token;

    if (Wechat.parse_mode !== null) {
      params['parse_mode'] = Wechat.parse_mode;
    }

    request.addHeader('Content-Type: application/json');
    data = JSON.stringify(params);

    // Remove replace() function if you want to see the exposed token in the log file.
    Zabbix.log(4, '[Wechat Webhook] URL: ' + url.replace(Wechat.token, '<TOKEN>'));
    Zabbix.log(4, '[Wechat Webhook] params: ' + data);
    response = request.post(url, data);
    Zabbix.log(4, '[Wechat Webhook] HTTP code: ' + request.getStatus());

    try {
      response = JSON.parse(response);
    }
    catch (error) {
      response = null;
      Zabbix.log(4, '[Wechat Webhook] response parse error');
    }

    if (request.getStatus() !== 200 || response.errcode !== 0) {
      if (typeof response.description === 'string') {
        throw response.description;
      }
      else {
        throw 'Unknown error. Check debug log for more information.';
      }
    }
  }
};

try {
  var params = JSON.parse(value);

  if (typeof params.Token === 'undefined') {
    throw 'Incorrect value is given for parameter "Token": parameter is missing';
  }

  Wechat.token = params.Token;

  if (['markdown', 'html', 'markdownv2'].indexOf(params.ParseMode) !== -1) {
    Wechat.parse_mode = params.ParseMode;
  }

  Wechat.to = params.To;
  Wechat.message = params.Subject + '\n' + params.Message;
  if (['markdown', 'markdownv2'].indexOf(params.ParseMode) !== -1) {
    Wechat.message = Wechat.escapeMarkup(Wechat.message, params.ParseMode);
  }
  Wechat.sendMessage();

  return 'OK';
}
catch (error) {
  Zabbix.log(4, '[Wechat Webhook] notification failed: ' + error);
  throw 'Sending failed: ' + error + '.';
}

消息模板

问题:【监控告警】<font color="warning">{HOST.DESCRIPTION}</font>/<font color="warning">{HOST.CONN}</font>
信息:
>主机名称:**<font color="comment">{HOST.DESCRIPTION}</font>**
>主机IP:<font color="comment">{HOST.CONN}</font>
>告警时间:<font color="comment">{EVENT.DATE}-{EVENT.TIME}</font>
>告警等级:<font color="comment">{TRIGGER.SEVERITY}</font>
>告警信息:<font color="warning">{TRIGGER.NAME} 故障!</font>
>告警项目:<font color="comment">{TRIGGER.KEY1}</font>
>问题详情:<font color="comment">{ITEM.NAME}: {ITEM.VALUE}</font>
>当前状态:<font color="warning">{TRIGGER.STATUS}: {ITEM.VALUE1}</font>
>事件ID:<font color="comment">{EVENT.ID}</font>

效果如图
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zabbix6.2.4企业微信群机器人告警 的相关文章

  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • 为什么我可以直接从 bash 执行 JAR?

    我是一个长期从事 Java 工作的人 并且知道运行带有主类的 JAR 的方法MANIFEST MFJar 中的文件很简单 java jar theJar jar 我用它来启动 Fabric3 服务器 包含在bin server jar在其标
  • PHP 无法打开流:是一个目录

    非常简单的 PHP 脚本 我在我亲自设置的 Ubuntu Web 服务器上的 EE 模板中运行 我知道这与权限有关 并且我已经将我尝试写入的目录的所有者更改为 Apache 用户 我得到的错误是 遇到 PHP 错误 严重性 警告 消息 fi
  • SSE:跨页边界的未对齐加载和存储

    我在页面边界旁边执行未对齐加载或存储之前读过某处 例如使用 mm loadu si128 mm storeu si128内在函数 代码应首先检查整个向量 在本例中为 16 个字节 是否属于同一页 如果不属于同一页 则切换到非向量指令 我知道
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • “make install”将库安装在 /usr/lib 而不是 /usr/lib64

    我正在尝试在 64 位 CentOS 7 2 上构建并安装一个库 为了这个目的我正在跑步 cmake DCMAKE BUILD TYPE Release DCMAKE INSTALL PREFIX usr DCMAKE C COMPILER
  • waitpid() 的作用是什么?

    有什么用waitpid 它通常用于等待特定进程完成 或者如果您使用特殊标志则更改状态 基于其进程 ID 也称为pid 它还可用于等待一组子进程中的任何一个 无论是来自特定进程组的子进程还是当前进程的任何子进程 See here http l
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

    我正在尝试使用 GTK 构建一个 hello world 其中包括以下行 include
  • Urwid:使光标不可见

    我正在使用 urwid 它是一个用于在 ncurses 中设计终端用户界面的 Python 框架 但有一件事我在 urwid 中无法做到 而这在 Curses 中很容易做到 使光标不可见 现在 选择按钮时光标是可见的 而且看起来很丑 有办法
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • 如何允许应用程序声明“https”方案 URI? (即如何从 https URL 打开桌面应用程序?)

    目前我正在尝试为 OAuth 2 0 授权流程创建一个客户端 实际上是一个本机应用程序 并且在规范中就在这儿 https www rfc editor org rfc rfc8252 section 7 2据说有 3 种方法来处理重定向 U
  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • Mcrt1.o和Scrt1.o有什么用?

    我坚持使用以下两个文件 即 Mcrt1 o 和 Scrt1 o 谁能帮我知道这两个文件的用途 如何使用它 我们以 gcrt1 o 为例 在使用 pg 选项编译进行性能测试时非常有用 谢谢 表格的文件 crt o总是 C 运行时启动代码 大部
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he

随机推荐

  • Angular6笔记(5)

    1 构造函数 构造函数是当类进行实例化时执行的特殊函数 通常会在构造函数中对新对象进行初始化工作 构造函数必须命名为constructor 因为构造函数是在类被实例化时调用的 所以它们可以 有输入参数 但不能有任何返回值 我们要通过调用ne
  • JavaScript将一维数组转化为二维数组

    JavaScript将一维数组转化为二维数组 遇到的问题 后端返回的是一组一维数组 但是需要展示的格式是二维数组 常见的场景举例 后台返回10个长度的数组 需要分成3个一组展示在banner上 例 1 2 3 4 5 6 7 8 9 10
  • 《Contextual Transformer Networks for Visual Recognition》阅读笔记

    传统的Transformer是使用1x1卷积操作来获key query pair 这种key query pair都是独立的 没有考虑上下文 作者提出了一种使用3x3卷积操作来得到融合上下文的key 局部上下文 作为static conte
  • STM32-定时器系列(一)基本定时器

    相信学过51单片机的小伙伴们使用过定时刷新数码管吧 那也一定想过 我们在STM32中也想要实现定时刷新数码管 这该怎么实现呢 下面小编就带大家走进STM32的定时器模块吧 一 什么是定时器 定时器是一种计时的工具 它具有延时 频率测量 PW
  • OSPF多区域配置互通(详细步骤)

    一 配置路由器ip 二 路由器配置OSPF R1 ospf process id 不写的话 默认是1 R1 ospf 1 area 0 进入区域0 R1 ospf 1 area 0 0 0 0 network 192 168 10 1 0
  • Servlet方法详解

    Servlet Servlet是SUN公司提供的一套规范 名称就叫Servlet规范 它也是JavaEE规范之一 使用JavaEE的API 目前在Oracle官网中的最新版本是JavaEE8 Servlet是一个运行在web服务端的java
  • Hello之C&Java&Python

    前言 原来是java程序员 最近学习了一段时间发现 java只关注业务逻辑的开发 封装了很多的东西 导致底层的许多东西不是太了解 突然某一天 灵光凸现 既然语言都是相通的 我是不是可以利用java的知识来类比学习其他的语言呢 哈哈 学习语言
  • No converter for [class com.xxx.utils.Result] with preset Content-Type ‘application/octet-stre

    java 导出功能 出现该错误可能原因是 controller层有返回值 解决方法 将返回值设置成void 如果非要设置返回值 额 我也没找到解决方法 谁要是会的话 下面评论一下 感谢
  • 代码存储位置与执行位置

    RT1052系统包含的存储器 存储器 容量 访问速度 访问方式 特性 SPI NorFlash 标配32MB 5 FlexSPI外设 FLASH 板载外部存储器 掉电保存 SDRAM 标配 32MB 4 SEMC 外设 DRAM 板载外部存
  • rsync远程同步

    目录 一 概念 二 rsync 同步源的过程 1 下行同步 2 上行同步 三 rsync 的特性 四 rsync同步之下行同步实验演示 五 rsync同步之上行同步 结合inotify监控的实验演示 六 使用rsync来实现快速删除大量文件
  • MyBatis02:MyBatis的CRUD操作及配置解析

    回顾上一章 MyBatis01 第一个程序 namespace 将上面案例中的UserMapper接口改名为 UserDao 将UserMapper xml中的namespace改为为UserDao的路径 再次测试 结论 配置文件中name
  • vcruntime140.dll缺失的解决方法分享,快速修复vcruntime140.dll文件

    当你在运行某些应用程序或游戏时遇到vcruntime140 dll缺失的错误提示 可能会导致应用程序无法启动或执行 vcruntime140 dll是与Microsoft Visual C Redistributable相关的一个重要系统文
  • win10安装破解软件提示病毒并且删除安装软件,暂时关闭安全检查

    1 左击屏幕左下角 找到系统设置 2 点击进入 更新和安全 3 点击 windows 安全 再 点击 病毒和威胁防护 4 点击设置 5 关闭 实时检查 6 安装完毕后一定重新开启 否则后果自负
  • PMOS开关电路

    本次项目上需要实现的功能是利用AO3401 PMOS设计一个开关电路 实现一款设备的开关控制 被控设备12V供电 供电电流小于3A即可 且为了提高响应速度 使流过该设备的电流尽可能的大 该设备内阻大约为6ohm AO3401产品参数 VDS
  • HTTP超详细教程

    1 HTTP协议 1 1 HTTP简述 HTTP全称为超文本传输协议 是一种应用比较广泛的应用层协议 那何为超文本 超文本指的是传输的内容不仅仅是文本 比如 html css javaScript 等数据 还可以是一些其他的资源 比如图片
  • AI修复人像

    一 前言 最近闲来无事 翻了翻以前的老照片 看着多年前的老照片 感慨万千 仿佛又回到了以前的青春岁月 只可惜青春易逝 无法重来 意气风发 头角峥嵘的画面只能永远地留存在相片之中了 只叹当时没有多拍几张照片留作纪念 可惜当时设备也不好 照片效
  • 【Linux】低级IO

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 文件的概念 二 C语言文件操作回顾 三 使用系统调用进
  • 山大网安靶场实验平台项目—个人记录(一)

    系列文章专栏地址 山东大学网络安全靶场实验平台 本期内容 完成项目框架设计 学习vue和element ui 了解基本语法 编写前端页面 组件 学习springboot为写后端作准备 项目框架设计 time 3 days 首先我们这个项目是
  • Vue3功能实战 —— 动态路由、路由签权、动态组件 使用示例

    前期回顾 Vue3 TS Vite 大屏可视化 项目实战 vue3可视化大屏 彩色之外的博客 CSDN博客大屏可视化项目实战 vue3可视化大屏https blog csdn net m0 57904695 article details
  • zabbix6.2.4企业微信群机器人告警

    zabbix6 2 4企业微信群机器人告警 基于https blog csdn net stars moon1024 article details 123042369调试 创建媒介 脚本如下 var Wechat token null t