zabbix 钉钉微信企微告警(动作操作消息内容模板)
一、环境配置
1、配置zabbix服务端
2、配置监控主机&监控项&监控模板
zabbix配置安装_this page is used to test the proper operation of _疯飙的蜗牛的博客-CSDN博客
二、触发器
触发器的本质就是一个条件判断,对于不同的监控数据来说,我们要设置不同的触发器。如一个监控项不关联触发器,将不会提示错误,也不会触发告警动作。
触发器(trigger):
触发器实际是一个条件判断表达式,如判断硬盘使用率超过80%
当触发条件发生后,会触发事件,用于某个动作
动作 (action):
触发器的条件被触发时候的具体操作
可以是发送邮件、执行远程命令。可以单独设置,也可以相互配合。
1、创建触发器
2、触发器表达式
表达式格式:
{<server>:<key>.<function>(<parameter>)}<operator><constant>
{主机名:监控key.函数(参数)}<表达式>常数
这个表达式在zabbix中是不需要手动编写的,可以在zabbix配置页面选择
3、表达式函数
- 大多数函数使用秒作为参数,使用#代表不同含义
- avg,count,last,min and max 函数支持额外的第二个参数time_shift(时间偏移量)这个参数允许从过去一段时间内引用数据
三、配置报警媒介
发送通知有多种方式:邮件、短信、钉钉、微信、企微、飞书等。
发送通知就是发送消息,消息的载体我们称为媒介,所以要执行发送通知动作,需要先创建一个报警媒介(当现有媒介不能满足需求的时候)。
1、媒介之邮件
2、媒介之钉钉告警&微信等
钉钉&微信&飞书等都是通过 类型为脚本 的方式设置媒介类型
脚本参数参考如下:
{ALERT.SENDTO} 消息的接收者
{ALERT.SUBJECT} 消息主题
{ALERT.MESSAGE} 告警信息
四、告警信息模板
信息模板,根据不同的消息类型信息模板的内容也有不同。
1、配置模板
2、内容参数说明
故障信息参数:
#####默认标题
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
#####消息内容
告警主机: {HOSTNAME1}
主机IP: {HOST.IP}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
监控取值: {ITEM.LASTVALUE}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
故障恢复信息参数:
#####默认标题
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME} 已恢复 !
#####消息内容
告警主机: {HOSTNAME1}
主机IP: {HOST.IP}
恢复时间: {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间: {EVENT.AGE}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
监控取值: {ITEM.LASTVALUE}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID: {EVENT.ID}
五、配置用户群组及用户
用户与报警媒介相关联,只有用户对服务器群组有读取权限才能发送告警通知。
通过用户群组配置相关服务器群组读、写权限,用户继承群组权限。
1、用户群组
2、用户
六、配置动作
1、动作
2、动作步骤配置说明
默认的步骤是1-3,也即是从1开始到3结束。一旦故障发生,就执行脚本,发送给群组成员的用户。即使是故障持续1小时,也只发送3此告警,时间间隔为0秒
如果改成1-0 , 0表示无限制, 无限制发送告警
间隔时间是默认持续时间60秒,也就是1分钟1次,如持续1小时发送60次告警。
如设置成3-5,也就是持续3次也就是默认3*60=180秒后才发送告警给用户。
七、脚本
1、钉钉脚本
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import osheaders = {'Content-Type': 'application/json;charset=utf-8'}
#api_url = "https://oapi.dingtalk.com/robot/send?access_token= 这里填写钉钉机器人地址" #填入刚刚复制的webhook
api_url = sys.argv[1]
def msg(text):json_text= {"msgtype": "text","text": {"content": text},"at": {"atMobiles": ["15901402212" #填入号码会@相应号码的人],"isAtAll": True # True会@所有人}}print requests.post(api_url,json.dumps(json_text),headers=headers).contentif __name__ == '__main__':text = sys.argv[2]msg(text)
2、企微脚本
[root@zabbix-server alertscripts]# cat EN-WeChat.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import osheaders = {'Content-Type': 'application/json;charset=utf-8'}
api_url = sys.argv[1]
def msg(text):json_text= {"msgtype": "text","text": {"content": text},}print requests.post(api_url,json.dumps(json_text),headers=headers).contentif __name__ == '__main__':text = sys.argv[2]msg(text)
3、微信脚本
注:需要建立相关redis服务、微信告警服务等,直接使用脚本是不成功的。
[root@zabbix-server alertscripts]# cat weixin.sh
#!/bin/bash
cd /etc/zabbix/alertscripts/
to=$1
str=$2
body=$3
host=`echo $str |awk -F [:] '{print $2}'`
key=`cat /proc/sys/kernel/random/uuid`
echo $0 >> /etc/zabbix/alertscripts/1.log
echo $to >> /etc/zabbix/alertscripts/1.log
echo $str >> /etc/zabbix/alertscripts/1.log
echo $body >> /etc/zabbix/alertscripts/1.log
echo $host >> /etc/zabbix/alertscripts/1.log
echo $key >> /etc/zabbix/alertscripts/1.log
#/bin/sh /etc/zabbix/alertscripts/send-alarm.sh 2 "告警主机:$host\n告警主题: $str\n告警内容:$body" 'zabbix' $1 "$key" 0 "$str"
./send-alarm.sh 2 "告警主机:$host\n告警主题: $str\n告警内容:$body" 'yunwei-zabbix' $1 "$key" 0 "zabbix-test9" "告警内容:test-11199"[root@zabbix-server alertscripts]# cat send-alarm.sh
#!/bin/shredisclient="/usr/bin/redis-cli"
#redisclient="/data/server/redis/bin/redis-cli"
#redisclient="/usr/bin/redis-cli"
redis_slave_server=""
redis_slave_port=""
redis_master_server=""
redis_master_port=""function UpdateRedisSlaveAddr(){local s_addr=$1local s_port=$2for ser in "${sentinel_addr[@]}"dolocal info=`${redisclient} -h $s_addr -p $s_port SENTINEL slaves mymaster`redis_slave_server=`echo $info | awk -F" " '{print $4}'`redis_slave_port=`echo $info | awk -F" " '{print $6}'`if [ -n "$redis_slave_server" ]thenbreakfidone
}function UpdateRedisMasterAddr(){local s_addr=$1local s_port=$2for ser in "${sentinel_addr[@]}"dolocal info=`${redisclient} -h $s_addr -p $s_port SENTINEL get-master-addr-by-name mymaster`redis_master_server=`echo $info | awk -F" " '{print $1}'`redis_master_port=`echo $info | awk -F" " '{print $2}'`if [ -n "$redis_master_server" ]thenbreakfidone
}#{"notifyType":3,"level":1,"host":"10.0.333333333","subType":"cost","detail":"告警时间:2018-06-07 17:45:918\n广告主:测试更新流\n计划:测试审核Bann555554er\n订单:test\n告警内容:目标值已达到10.0%(7990)目标值已达到10.0%(7990)","department":1,"title":"order 190999 cost 告警","key":"20180621113123","status":0}if [ $# != 8 ]
thenecho "Parameter Erorr!"echo "eg: $0 NOTIFYTYPE LEVEN SUBTYPE DEPARTMENT KEY STATE TITLE DETAIL"exit
fidate=`date`notify_type=$1
level=1
sub_type=$3
depart=$4
key=$5
state=$6
title=$7
detail=$2
host=`hostname`
echo $detail >> /data/z.log;
echo $detail > /etc/zabbix/alertscripts/detail.log
sed -i 's/\r//g' /etc/zabbix/alertscripts/detail.log
detail_file=/etc/zabbix/alertscripts/detail.log
# keyword4=`ec | awk -F '告警内容:' '{print $2}' | awk -F '\\\r\\\n' '{print $1}' | awk -F ': ' '{print $2}'`keyword4="`cat $detail_file | awk -F '告警内容:' '{print $1}' |awk -F ':' '{print $3}'`"keyword3="`cat $detail_file | awk -F '告警时间:' '{print $2}' | awk -F '告警' '{print $1}'`"keyword1="`cat $detail_file | awk -F '告警等级:' '{print $2}' | awk '{print $1}'`"keyword5="`cat $detail_file | awk -F '告警信息:' '{print $2}' | awk -F '告警' '{print $1}'`"keyword2="`cat $detail_file | awk -F '当前状态:' '{print $2}' | awk '{print $1}' | awk -F ':' '{print $1}'`"#detail_info="\"keyword1\":\"${keyword1}\",\"keyword2\":\"${keyword2}\",\"keyword3\":\"${keyword3}\",\"keyword4\":\"${keyword4}\",\"keyword5\":\"${keyword5}\""
detail_info="\"detailLevel\":\"${keyword1}\",\"detailType\":\"${keyword2}\",\"detailTime\":\"${keyword3}\",\"detailPostion\":\"${keyword4}\",\"detailBusiness\":\"${keyword5}\""
#detail="\"\""
####info####
#故障等级:{{keyword1.DATA}}
#故障类型:{{keyword2.DATA}}
#故障时间:{{keyword3.DATA}}
#故障定位:{{keyword4.DATA}}
#所属业务:{{keyword5.DATA}}
############ #info="{\"notifyType\":$notify_type,\"level\":$level,\"host\":\"$host\",\"subType\":\"$sub_type\",\"detail\":\"$detail\",\"department\":$depart,\"title\":\"$title\",\"key\":\"$key\",\"status\":$state}"
info="{\"notifyType\":$notify_type,\"level\":$level,\"host\":\"$host\",\"subType\":\"$sub_type\",$detail_info,\"department\":$depart,\"title\":\"$title\",\"key\":\"$key\",\"status\":$state}"
#info="{\"notifyType\":$notify_type,\"level\":$level,\"host\":\"$host\",\"subType\":\"$sub_type\",\"detail\":$detail,$detail_info,\"department\":$depart,\"title\":\"$title\",\"key\":\"$key\",\"status\":$state}"
echo $info >> /data/z.logsentinel_addr=(192.168.1.165 192.168.1.166 192.168.1.146)
UpdateRedisMasterAddr $sentinel_addr 26502
echo "Get Master: $redis_master_server $redis_master_port"key="alarm:list"
echo "lpush $key $info"
result=`${redisclient} -h $redis_master_server -p $redis_master_port lpush $key "$info"`
echo $result >> /data/z.log
相关文章:
zabbix 钉钉微信企微告警(动作操作消息内容模板)
一、环境配置 1、配置zabbix服务端 2、配置监控主机&监控项&监控模板 zabbix配置安装_this page is used to test the proper operation of _疯飙的蜗牛的博客-CSDN博客 二、触发器 触发器的本质就是一个条件判断,对于不同的监控数据来说,我…...
阿里云国际站云服务器数据备份方法有哪些?
阿里云国际站云服务器是一种根据云计算技术的虚拟服务器,它能够经过互联网提供计算资源和服务。在运用云服务器的过程中,数据备份是非常重要的一个环节。本文将介绍云服务器数据备份的办法,包含手动备份、主动备份和数据同步。 一、手动备份 …...
游戏笔记本电脑可以进行 3D 建模和渲染吗?有哪些优势与缺点?
3D 建模和渲染是创建令人惊叹的数字艺术、动画和游戏体验的最流行和最广泛使用的工具之一。随着技术的进步,对运行这些模型的强大计算机的需求呈指数级增长。对于那些寻求强大机器来处理 3D 建模任务的人来说,游戏笔记本电脑已成为一个可行的选择。 游戏…...
【AI】推理系统和推理引擎的整体架构
本文主要是对 B 站 Up 主 ZOMI酱 推理系统系列视频 的理解,可以认为是重点笔记。 一、深度学习模型的全生命周期 相信很多人和我一样,刚看到深度学习模型中的推理系统或推理引擎时是一头雾水,因为学习 DL 时通常关注于模型的设计和训练。下图…...
k8s集群中流水线部署微服务
k8s集群中流水线发布微服务 一、流水线部署微服务部署流程 二、微服务发布流程 pipeline {agent {node {label maven}}parameters {string(name: PROJECT_VERSION, defaultValue: v1.0, description: )string(name: PROJECT_NAME, defaultValue: , description: )}environment…...
Socks5代理与网络安全:保护您的隐私与数据
在今天数字化的世界中,隐私和网络安全已经成为至关重要的话题。Socks5代理作为一种强大的工具,不仅为用户提供了隐私保护,还在网络安全和爬虫领域发挥着关键作用。本文将深入探讨Socks5代理的工作原理、其在网络安全中的应用,以及…...
2024年山东高企申报注意事项
1、分析企业技术及财务报表 分析财务数据及企业主营产品和技术点。用以确定申报材料的撰写方向。一般耗时1周左右。(纺织厂、服装厂等传统行业面临申报中的面临研发人员比例不达标,研发费用不达标,高新技术产品比例不达标等难题。)…...
npm publish包报404,is not in the npm registry错误
1. 指定发布目标2. 登录npm,使用登录名发布包,包名命名原则“登录名/包名”,或 “包名” 3. 删除某一个版本npm unpublish pvfhv/eslint-config-prettier1.0.1 --force 删除后的版本不能重复使用,正式解释: Unfortun…...
pytest-基础
一.使用pytest,默认的测试用例的规则以及基础应用 1.模块名字必须已test_开头或者_test结尾 2.测试类必须以Test开头,并且不能有init方法 3.测试方法必须以test开头 示例代码 test_001.py import pytest class TestCase:def test_case(self):print("执行测试用例&quo…...
在openSUSE上开启护眼模式
色温 色温是用来衡量光源色彩时所用到的一个概念,单位为开尔文。热黑体辐射体与光源温度相同时的温度,就是该光源的色温。 显而易见,色温越低时,光源看起来越黄;色温越高时,光源看起来越蓝。下面是一些常见…...
vue基础知识十:Vue中组件和插件有什么区别?
一、组件是什么 回顾以前对组件的定义: 组件就是把图形、非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式,在Vue中每一个.vue文件都可以视为一个组件 组件的优势 降低整个系统的耦合度,在保持接口不…...
Arthas是一个Java诊断工具 的入门使用
Arthas是一个Java诊断工具,可以帮助开发人员在运行时快速诊断和解决线上应用故障。 以下是Arthas的入门步骤: 安装Arthas 你可以在Arthas Github页面中找到安装指南,根据操作系统选择相应的安装方式。 启动Arthas 在安装完成后ÿ…...
数据结构——排序算法——桶排序
桶排序的思想是: 1.将区间划分为 n 个相同大小的子区间,每个子区间称为一个桶 2.遍历数组,将每个数字装入桶中 3.对每个桶内的数字单独排序,这里需要采用其他排序算法,如插入、归并、快排等 4.最后按照顺序将所有桶内的…...
Kafka消息发送可靠性分析
Apache Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者和生产者之间的所有实时数据。Kafka的主要特性包括:高吞吐量、可扩展性、持久性、分布式、可容错等。这些特性使得Kafka成为大规模数据处理和实时数据分析的理想选择。然而…...
如何将一个字符串转换为驼峰命名法(camel case)?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 思路⭐ 示例⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领…...
牛客网项目-第一章-笔记
牛客网项目-第一章 环境配置 java maven idea Spring Intializr 搜索jar包的网站:https://mvnrepository.com/ https://start.spring.io/ 缺少的aop包,手动在pom.xml中加入依赖 <dependency><groupId>org.springframework.boot</gro…...
CISP汇总
0x00 前言 CTF 加解密合集CTF Web合集网络安全知识库溯源相关 文中工具皆可关注 皓月当空w 公众号 发送关键字 工具 获取 本文用来整理相关CISP知识笔记 0x01 汇总...
KALILINUX MSF中kiwi(mimikatz)模块的使用
一、简介: kiwi模块: mimikatz模块已经合并为kiwi模块;使用kiwi模块需要system权限,所以我们在使用该模块之前需要将当前MSF中的shell提升为system。 二、前权: 提权到system权限: 1.1 提到system有…...
hive 中正则表表达式使用
一 概念 概念:正则表达式(Regular Expression),又称规则表达式,是记录文本规则的代码。通常被用来检索、替换那些符合某个模式(规则)的文本。 特性:最初是由Unix中的工具软件(例如sed和grep&a…...
mssql ,数据库还原BAK命令行方式
如果数据库存在,离线断开 ALTER DATABASE [数据库名] SET OFFLINE WITH ROLLBACK IMMEDIATE --断开其他用户与数据库的连接正式开始还原数据库: USE MASTER --这里注意要使用MASTER,以免出现待还原库被占用的情况 RESTORE DATABASE [数据库名…...
uniapp微信小程序《隐私保护协议》弹窗处理流程
背景 《关于小程序隐私保护指引设置的公告》 《小程序隐私协议开发指南》 流程 1.第一步 必须设置且审核通过!!! 2.第二步 uniapp在manifest.json中添加!!! /* 在 2023年9月15号之前,在 ap…...
RK3568 CAN驱动更新说明
RK3568 CAN问题:同时收发数据一段时间(几秒钟)can出现错误收发功能异常,必须重新down、up恢复正常 内核更新rockchip_canfd.c、iopoll.h,配置Networking support --->CAN bus subsystem support --->CAN Devic…...
day47:C++ day7,异常处理、using的第三种用法、类型转换、lambda表达式、STL标准模板库
my_vectoers.h: #ifndef MY_VECTORS_H #define MY_VECTORS_H #include <iostream>using namespace std;template<typename TYPE> class my_vectors { private:TYPE* ptr;int num;int cnum;TYPE* start_ptrNULL;TYPE* end_ptrNULL; public://无参构造my_vectors(){…...
function—— Verilog的函数
文章目录 前言function写法语法举例说明调用 前言 function用法说明。 提示:以下是本篇文章正文内容,下面案例可供参考 function写法 function的标准写法如下: function <返回值的类型或范围>(函数名);<端口说明语句> // in…...
runtime过程中,常见jar问题解决
io.netty java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.<init>此类问题报错,主要是io.netty 多个jar 冲突导致。、 使用以下命令查看同一个jar 有哪些版本 mvn dependency:resolve -Dclassifiersources对一些不愿意引入的依赖加上…...
ElementPlus· banner轮播图实现
功能,①通用型,三方组件完成(如,elementPlus) ②自己写 轮播图 本文使用vue3中的UI框架——elementPlus——三方组件中的 <el-carousel> 实现轮播图 // 组件静态模板 <template><div class"hom…...
Linux自动化构建项目工具——Makefile/makefile
目录 一,背景知识 二,makefile/Makefile的编写 1.创建makefile/Makefile文件 2.在Makefile文件里写编译代码 3.伪目标——.PHONY 1.伪目标的特点 2.怎样实现总是被执行 4.Makefile/makefile文件的不同编写风格 1.背景知识 2.改写 一,背…...
第11章 字符串和字符串函数
本章介绍以下内容: 函数:gets()、gets_s()、fgets()、puts()、fputs()、strcat()、strncat()、strcmp()、strncmp()、strcpy()、strncpy()、sprintf()、strchr() 创建并使用字符串 使用C库中的字符和字符串函数,并创建自定义的字符串函数 使用…...
TypeScript项目配置
前言 我们需要建立tsconfig.json 作用 用于标识 TypeScript 项目的根路径; 用于配置 TypeScript 编译器; 用于指定编译的文件。 重要字段 files - 设置要编译的文件的名称; include - 设置需要进行编译的文件,支持…...
【Spring面试】二、BeanFactory与IoC容器的加载
文章目录 Q1、BeanFactory的作用是什么?Q2、BeanDefinition的作用是什么?Q3、BeanFactory和ApplicationContext有什么区别?Q4、BeanFactory和FactoryBean有什么区别?Q5、说下Spring IoC容器的加载过程(※)Q…...
网站制作的动画怎么做的/百度指数下载手机版
对mysql授权远程访问grant all privileges on db_name.table_name to cylroot identified by password with grant option;//允许cylroot用户使用password连接到数据库,并有各种权限。导入sql脚本source a.sql导出sql脚本mysqldump -u root -p [password] db_name…...
企业如何注册域名/海南seo排名优化公司
最近写了一个地方新闻网站,可以看看:www.qiluhuabao.com。模仿www.bashan.com写的 用的是dedecms,只听过,没用过。终于在上周来了一个必须用到cms的项目,现学现卖,但其学习过程悲惨至极,在boss的…...
房地产网站建设公司推荐/天津百度快照优化公司
JavaScrip知识点总结一、JavaScript介绍二、JavaScript 和 html 代码的结合方式2.1 第一种方式2.2 第二种方式三、变量四、运算符4.1 关系(比较)运算符4.2 逻辑运算符五、数组六、函数6.1 函数的二种定义方式6.1.1 方式一6.1.2 方式二6.2 函数的 argumen…...
做网站设计的公司/如何建立自己的博客网站
点击上方 Java学习之道,选择 设为星标每天12点,干货准时奉上!序微信的大版本更新一直都很佛,完全是看着工作组的心情来的。6.0版本2015年发布,7.0版本2018,最近又发布了微信的8.0版本。ios更新了8.0版本,可…...
广东一站式网站建设推荐/网络推广的优势有哪些
数据采集的基本操作是一样的。具体的操作是,把第一行表格的数据作为样例,将其中想要要抓取的数据做内容映射,然后对第一行和第二行做样例复制映射,这样就能够把整个表格的数据抓取下来。如果需要翻页,在爬虫路线中设置…...
济宁市住房和城乡建设局网站/seo页面优化的方法
A题 小A的糖果 题目梗概- 小A有N个糖果盒,第i个盒中有a[i]颗糖果。 小A每次可以从其中一盒糖果中吃掉一颗,他想知道,要让任意两个相邻的盒子中加起来都只有x颗或以下的糖果,至少得吃掉几颗糖。 思考 这道题目 如果按照洛谷的难度应…...