zabbix之钉钉告警
钉钉告警设置
我们可以将同一个运維组的人员加入到同一个钉钉工作群中,当有异常出现后,Zabbix 将告警信息发送到钉钉的群里面,此时,群内所有的运维人员都能在第一时间看到这则告警详细。
Zabbix 监控系统默认没有开箱即用的对接钉钉的结构,需要利用 Zabbix 监控系统的脚本定制化的方式扩展钉钉告警的实现。
1.webhook的定义
Webhook 是一个 API 概念,是微服务 API 的使用范式之一,也被称为反向 API,即前端不主动发送请求,完全由后端推送;举个常用例子,比如你的好友发了一条朋友圈,后端将这条消息推送给所有其他好友的客户端,就是 Webhook 的典型场景。
简单来说,webhook 就是一个接收 HTTP POST(或 GET,PUT,DELETE)的 URL,一个实现了 webhook的 API 提供商就是在当事件发生的时候会向这个配置好的 URL 发送一条信息,与请求-响应式不同,使用 webhook 你可以实时接受到变化。
在钉钉中,我们可以为群创建一个 webhook,zabbix 就是通过 webhook 向这个钉钉群发送信息的。
2.为钉钉群创建 webhook
钉钉机器人是全局唯一的应用,即无论是在单聊场景中还是群聊场景中,都可以用来推送应用的通知和用来对用户进行对话式服务,机器人 ID 都可以是唯一的。这意味着开发者既可以选择仅创建一个机器人,而后将其放在各个应用场景下使用,也可以创建多个机器人,然后分别部署在不同场景下。
(1)设置钉钉机器人
群设置--》智能群助手添加自定义群机器人
注意:多添加一些关键字:报警、告警、问题、故障、恢复

(2)生成webhook
记下这个webhook,只要机器人不删,这个webhook就可以一直使用

(3)测试
使用如下命令在linux系统中发送测试信息
[root@zbx ~]# curl 'webhook地址' -H 'Content-Type:application/json' -d '{"msgtype":"text","text":{"content":"报警"}}'

2.设置zabbix告警方式
(1)创建报警媒介
“告警”-->“媒介”,创建媒介类型
参数部分设置:
Message: (ALERT.MESSAGE}
TO: {ALERT.SENDTO}
URL:https://oapi,dingtalk.com/robot/send?access token=<你的 token 值>
删掉其他参数将本案例提供的脚本粘贴进去

脚本内容如下:
var Dingding = {params: {},proxy: null,setParams: function (params) {if (typeof params !== 'object') {return;}Dingding.params = params; },request: function () {var data = {msgtype: "markdown",markdown: {title: "报警",text: "## 通知:\n " + Dingding.params.Message,},at: {atUserIds: [Dingding.params.To],isAtAll: false,},},response,url = Dingding.params.URL,request = new HttpRequest();request.addHeader('Content-Type: application/json');if (typeof Dingding.HTTPProxy !== 'undefined' && Dingding.HTTPProxy !== '') {request.setProxy(Dingding.HTTPProxy);}if (typeof data !== 'undefined') {data = JSON.stringify(data);}Zabbix.Log(4, "[Dingding Webhook] message is: " + data);response = request.post(url, data);Zabbix.log(4, '[ Dingding Webhook ] Received response with status code ' +request.getStatus() + '\n' + response);if (response !== null) {try {response = JSON.parse(response);}catch (error) {Zabbix.log(4, '[ Dingding Webhook ] Failed to parse response received from Dingding');response = null;}}if (request.getStatus() !== 200 || response.errcode !== 0) {var message = 'Request failed with status code '+request.getStatus();if (response !== null && typeof response.errmsg !== 'undefined') {message += ': '+ JSON.stringify(response.errmsg) ;}throw message + '. Check debug log for more information.';}return response;},
};try {var params = JSON.parse(value);if (typeof params.URL !== 'undefined' && typeof params.To !== 'undefined'&& typeof params.Message !== 'undefined') {Zabbix.log(4, '[ Dingding Webhook ] webhookURL "' + params.URL +'" sendto "'+ params.To )+'"';} else {throw 'Missing parameter. URL, message, to parameter is required'}if (params.HTTPProxy) {Dingding.proxy = params.HTTPProxy;} Dingding.setParams(params);Dingding.request();return 'OK';
}catch (error) {Zabbix.log(3, '[ Dingding Webhook ] ERROR: ' + error);throw 'Sending failed: ' + error;
}
(2)消息模版设置
在消息模版页面,消息的类型主要设置两个:问题和问题恢复,如图所示:

消息类型问题消息模版填写如下:
主题:
【告警】<font color="comment">{TRIGGER.STATUS}</font>,
服务器: <font color="comment">{HOSTNAME1}</font>故障!消息:>告警主机:<font color="comment">{HOSTNAME1}</font>>告警地址:<font color="comment">{HOST.IP}</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.KEY1}</font>>问题详情:<font color="comment">{ITEM.NAME}:{ITEM.VALUE}</font>>当前状态:<font color="comment">{TRIGGER.STATUS}: {ITEM.VALUE1}</font>>事 件 ID:<font color="comment">{EVENT.ID}</font>
消息类型:问题恢复模版
恢复主题:
【恢复】<font color="comment">{TRIGGER.STATUS}</font>,
服务器: <font color="comment">{HOSTNAME1}</font>已恢复!恢复消息:
>恢复主机:<font color="comment">{HOSTNAME1}</font>>恢复地址:<font color="comment">{HOST.IP}</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.KEY1}</font>>问题详情:<font color="comment">{ITEM.NAME}:{ITEM.VALUE} </font>>当前状态:<font color="comment">{TRIGGER.STATUS}: {ITEM.VALUE1}</font>>事 件 ID:<font color="comment">{EVENT.ID}</font>
(3)选项部分的设置

3.为用户添加告警媒介

4.创建触发器动作
在要被监控的主机上安装一个httpd网页用于测试
为该主机添加一个Apache by Zabbix agent的模版

在数据采集--》主机 找到对应主机
在告警--》动作 中创建一个触发器动作 ,设置问题操作和恢复操作
将Apache相关的勾选上,主要是告警,也可全部勾选

添加问题操作和恢复操作(选择用户和用户组)

5.验证
停掉server01上的httpd

备注:
1.说明 Apache 的进程数量为 0,表示 Apache 服务没有在运行。
2.说明 Apache 的服务在端口 80 上没有响应,表示服务宕机。
恢复开启状态

备注:
1.恢复通知表明 Apache 进程数量已恢复到正常状态,有 6 个进程在运行。
2.恢复通知表明 Apache 服务已恢复正常,端口 80 上的服务重新上线。
相关文章:
zabbix之钉钉告警
钉钉告警设置 我们可以将同一个运維组的人员加入到同一个钉钉工作群中,当有异常出现后,Zabbix 将告警信息发送到钉钉的群里面,此时,群内所有的运维人员都能在第一时间看到这则告警详细。 Zabbix 监控系统默认没有开箱即用…...
《OpenCV计算机视觉》—— 对图片进行旋转的两种方法
文章目录 一、用numpy库中的方法对图片进行旋转二、用OpenCV库中的方法对图片进行旋转 一、用numpy库中的方法对图片进行旋转 numpy库中的 np.rot90 函数方法可以对图片进行旋转 代码实现如下: import cv2 import numpy as np# 读取图片 img cv2.imread(wechat.jp…...
Python 错误 ValueError 解析,实际错误实例详解 (一)
文章目录 前言Python 中错误 ValueError: No JSON object Could Be Decoded在 Python 中解码 JSON 对象将 JSON 字符串解码为 Python 对象将 Python 对象编码为 JSON 字符串Python 中错误 ValueError: Unsupported Pickle Protocol: 3Python 中的 Pickling 和 UnpicklingPython…...
[java][git]上传本地代码及更新代码到GitHub教程
上传本地代码及更新代码到GitHub教程 上传本地代码 第一步:去github上创建自己的Repository,创建页面如下图所示: 红框为新建的仓库的https地址 第二步: echo "# Test" >> README.md 第三步:建立g…...
react antd table expandable defaultExpandAllRows 不生效问题
原因:defaultExpandAllRows只会在第一次渲染时触发 解决方案:渲染前判断table 的datasource 数据是否已准备好 {pageList.length > 0 ? (<TablerowSelection{rowSelection}columns{columns}dataSource{pageList}style{{ marginTop: 24 }}pagina…...
什么是领域驱动设计?
什么是领域驱动设计? 领域驱动设计(Domain-Driven Design,简称DDD)是一种面向对象的软件开发方法,它强调将软件系统的设计和实现过程与业务领域紧密结合,通过深入理解和建模业务领域,从而实现高…...
信息安全工程师(1)计算机网络分类
一、按分布范围分类 广域网(WAN): 定义:广域网的任务是提供长距离通信,运送主机所发送的数据。其覆盖范围通常是直径为几十千米到几千千米的区域,因此也被称为远程网。特点:连接广域网的各个结点…...
利士策分享,探索无界:心灵之旅,发现未知精彩
利士策分享,探索无界:心灵之旅,发现未知精彩 梦想的种子,在心田生根发芽 正如每一颗种子都蕴含着生命的奥秘,每个人心中那颗探索的种子,也藏着对未知世界的渴望与追求。它告诉我们,成长不仅仅…...
Jetson 部署 Faster Whisper
文章目录 WhisperFaster Whisper安装使用尝试WSL部署尝试 Jetson 部署时间戳 实时转录 Whisper Whisper 是一种通用语音识别模型。它是在大量不同音频数据集上进行训练的,也是一个多任务模型,可以执行多语言语音识别、语音翻译和语言识别。 测试&#x…...
测试开发基础——测试分类
四、测试分类 1. 按照测试目标分类 1.1. 界面测试 肉眼看到的任何元素都需要进行测试 界面测试(简称U测试),指按照界面的需求(一般是U设计稿)和界面的设计规则,对我们软件界面所展示的全部内容进行测试…...
【计网】数据链路层:概述之位置|地位|链路|数据链路|帧
✨ Blog’s 主页: 白乐天_ξ( ✿>◡❛) 🌈 个人Motto:他强任他强,清风拂山岗! 💫 欢迎来到我的学习笔记! ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 1. 在OSI体系结构中的位置 1. 位置:数…...
【Android】NestedScrollView的简单用法与滚动冲突、滑动冲突
一、NestedScrollView 1. 什么是 NestedScrollView NestedScrollView 是 Android 中一个用于处理垂直方向滚动的布局组件,它继承自 FrameLayout,同时支持嵌套滑动(Nested Scrolling)机制。相比于传统的 ScrollView,N…...
【LeetCode】每日一题 2024_9_13 预算内的最多机器人数目(滑动窗口、单调队列)
LeetCode 启动! 每日一题的题解重新开始连载! 题目:预算内的最多机器人数目 题目链接:2398. 预算内的最多机器人数目 题目描述 代码与解题思路 func maximumRobots(chargeTimes []int, runningCosts []int, budget int64) (an…...
TypeScript中 any和unknown 的区别
1、给其他变量赋值 any可以给其他类型的变量重新赋值; 但unknown是不行的,unknown 可以保持类型安全,从而减少潜在的错误; 2、使用类型上的方法 any可以用类型上的方法,unknown是不可以的...
道可云人工智能元宇宙每日资讯|第五届深圳国际人工智能展(GAIE)在深圳会展中心举行
道可云元宇宙每日简报(2024年9月12日)讯,今日元宇宙新鲜事有: 成都:最高1000万元,研发川藏线数字文旅元宇宙空间 近日,成都市科学技术局启动2025年成都市第一批科技项目和第一批“常年申报”市…...
Bootstrap布局实例(偏移列)
偏移是一个用于更专业的布局的有用功能。它们可用来给列腾出更多的空间。例如,.col-xs-* 类不支持偏移,但是它们可以简单地通过使用一个空的单元格来实现该效果。 为了在大屏幕显示器上使用偏移,请使用 .col-md-offset-* 类。这些类会把一个…...
IP网络广播服务平台任意文件上传漏洞
文章目录 免责声明搜索语法漏洞描述漏洞复现修复建议 免责声明 本文章仅供学习与交流,请勿用于非法用途,均由使用者本人负责,文章作者不为此承担任何责任 搜索语法 icon_hash"-568806419"漏洞描述 该系统在upload接口处可上传任…...
详细阐述Activity的生命周期
目录 1. onCreate(): 2. onStart(): 3. onResume(): 4. onPause(): 5. onStop(): 6. onRestart(): 7. onDestroy(): 活动生命周期图: 特别说明: 例子ÿ…...
spring boot+vue3学习之旅
前言 使用的是黑马程序员的教程,所有资料都来自于它的公众号,侵权即删,这里只做记录学习,然后我还遇到一个问题,不知道为啥idea每次打开一个新项目,maven路径就要重装,很麻烦。 新建项目 之…...
vue-watch监听功能(侦听器)详解使用
在Vue中,watch侦听器允许我们观察和响应Vue实例上数据的变化。当被侦听的数据发生变化时,可以执行异步操作或开销较大的操作,这是computed属性可能不适合的场景。watch侦听器提供了更灵活的方式来处理数据变化时的副作用。 基本用法 watch选…...
Unity SLG大地图实战:用TileManager和AOI搞定网格管理与视野同步(附Demo代码)
Unity SLG大地图开发实战:网格管理与AOI视野同步的工程化解决方案 在SLG游戏开发中,大地图系统是核心体验的基石。面对动辄数万网格的动态管理需求,以及需要与后端高效协作的视野同步问题,传统开发方式往往陷入性能瓶颈和逻辑混乱…...
深入TMS320C6678中断控制器:从CIC、INTC到Event Combiner的底层机制图解
深入解析TMS320C6678中断控制器架构与实现机制 在嵌入式系统开发领域,中断处理机制的设计与实现往往是决定系统实时性和可靠性的关键因素。TMS320C6678作为一款高性能多核DSP处理器,其中断控制系统采用了分层式设计理念,通过片级中断控制器(C…...
深度解析DS4Windows:让PS4手柄在Windows平台重获新生
深度解析DS4Windows:让PS4手柄在Windows平台重获新生 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 你是否曾经为PS4手柄在PC上的兼容性问题而烦恼?游戏无法识别、…...
大一学生揭秘科罗拉多矿业学院扫描技术:掌控投影仪和摄像头,问题待修复
大一学生掌控科罗拉多矿业学院投影仪和摄像头,扫描技术揭秘与问题修复情况曝光在科罗拉多矿业学院开启大一生活时,我发现当地 DNS 服务器会为每个连网设备分配子域名,如 “meow” 设备在校园无线网络显示为 “meow.mines.edu”,但…...
监控与日志:Prometheus+Grafana实时追踪GPU、显存、推理延迟与错误率
系列导读 你现在看到的是《本地大模型私有化部署与优化:从入门到生产级实战》的第 8/10 篇,当前这篇会重点解决:让你的本地大模型服务像云服务一样可观测,提前发现并解决性能问题。 上一篇回顾:第 7 篇《量化部署终极指南:从GPTQ到AWQ,精度损失与显存节省的平衡艺术》…...
专业解析开源AI浏览器助手:Page Assist的深度技术架构与实战应用
专业解析开源AI浏览器助手:Page Assist的深度技术架构与实战应用 【免费下载链接】page-assist Use your locally running AI models to assist you in your web browsing 项目地址: https://gitcode.com/GitHub_Trending/pa/page-assist Page Assist是一款革…...
Cursor Free VIP:一键解决Cursor AI试用限制的智能工具
Cursor Free VIP:一键解决Cursor AI试用限制的智能工具 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tr…...
30ms低延迟投屏终极指南:用QtScrcpy实现专业级手游直播
30ms低延迟投屏终极指南:用QtScrcpy实现专业级手游直播 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy…...
DB-GPT-Hub:基于大模型微调构建专属文本到SQL数据集的实践指南
1. 项目概述:当大模型遇见数据库,一场效率革命正在发生如果你是一名数据工程师、数据分析师,或者任何需要频繁与数据库打交道的开发者,那么你一定对这样的场景不陌生:面对一个陌生的数据库,你需要花大量时间…...
QtScrcpy:将手机屏幕变成电脑扩展屏的终极解决方案
QtScrcpy:将手机屏幕变成电脑扩展屏的终极解决方案 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy …...
