zabbix脚本报警
zabbix问端设置:
1,设置报警类型

2、设置用户及媒体类型


send_to 就是zabbix输出的$1,脚本中药发给谁
3、设置触发器和动作
触发器 test.temp_conn (自己写一个简单的key做测试)

4、设置触发器,阈值为最后一次获取的值大于1

5、设置动作

关联触发器


2、服务器端配置
vim zabbix.server.conf. 修改脚本位置
AlertScriptsPath=/opt/svr/zabbix2.4.5/share/zabbix/alertscripts/weixin_media/bin/
设置web端的key
UserParameter=test.temp_conn,ls -l /tmp/test | grep '^-' | wc -l
3、shell脚本
zabbix 2.4中建议使用shell脚本发送信息,因为2.4中不能自定义发送信息的格式
CropID="wx5a109e09d5044152"
Secret="0fiTLHoU0SBtNcBm4huzPILDt0QxjhdsVcnNBPVw9lVCR3vGVf7wf2p4HDTiilaQ"
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $4}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" function body() {
local int AppID=1 #企业号中的应用id
local UserID=$1 #部门成员id,zabbix中定义的微信接收者
# local PartyID=2 #部门id,定义了范围,组内成员都可接收到消息
local Msg=$(echo "$@" | cut -d" " -f3-) #过滤出zabbix传递的第三个参数
printf '{\n'
printf '\t"touser":"'"$UserID"\"",\n"
# printf '\t"toparty":"'"$PartyID"\"",\n"
printf '\t"msgtype":"text",\n'
printf '\t"agentid":"'" $AppID "\"",\n"
printf '\t"text":{\n'
printf '\t\t"content":"'"$Msg"\""\n"
printf '\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL
4、python脚本
#! /usr/bin/env python3
import requests
import json
import logging
import sys, os print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# print(sys.path)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(BASE_DIR) class MyLogger:
def __init__(self, msg):
self.logger = self.initlog()
self.msg = msg def initlog(self):
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler(BASE_DIR + '/log/' + 'char.log')
fh.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
return logger def savelog(self):
self.logger.debug(self.msg) class ZabbixSendMail():
def __init__(self,sys_argv):
self.argv = sys_argv
self.url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
self.value = {
'corpid':"wx5a109e09d5044152",
'corpsecret' : "0fiTLHoU0SBtNcBm4huzPILDt0QxjhdsVcnNBPVw9lVCR3vGVf7wf2p4HDTiilaQ"
}
self.sendmail_url = "https://qyapi.weixin.qq.com/cgi-bin/message/send"
self.access_resprons = requests.get(self.url, params=self.value)
# self.token = json.loads(self.access_resprons.text)['access_token']
self.respons = self.access_resprons.text #获取返回结果
self.log = MyLogger("action")
self.log.savelog() def get_token(self):
ret = json.loads(self.respons)
return ret["access_token"] def send_mail(self):
try:
send_mail_url = self.sendmail_url + "?access_token=%s"% self.get_token()
#print(send_mail_url)
msg = "".join(self.argv[2:])
payload = """{"touser": "%s",
"msgtype": "text",
"agentid": 1,
"text":{"content": "内容:%s"},"safe":0}""" % (self.argv[0], msg)
dic_payload = eval(payload)
# ret = requests.post(send_mail_url, data=json.dumps(payload, ensure_ascii=False)) ret = requests.post(send_mail_url, data=json.dumps(dic_payload, ensure_ascii=False).encode('UTF-8'))
#发送中文时就需要ensure_ascii与.encode('utf-8')这两个参数配合才可以否则会报错
log = MyLogger(ret.text)
log.savelog() except Exception as e:
# print(e)
log = MyLogger(e)
log.savelog() if __name__ == "__main__":
send = ZabbixSendMail(sys.argv[1:])
send.send_mail()
zabbix脚本报警的更多相关文章
- (26)zabbix脚本报警介质自定义(钉钉)
zabbix机器人告警配置 首先在钉钉中创建一个群然后设置群机器人添加自定义机器人(webhook...) 添加后复制其中的webhook地址到报警脚本dingding.py中的webhook=... ...
- zabbix发送报警的脚本
zabbix报警媒介:自定义脚本Custom alertscripts 邮件报警准备工作:安装sendEmail zabbix-server 的 配置文件 /etc/zabbix/zabbix_ser ...
- zabbix邮件脚本报警
#启动邮箱服务 systemctl start postfix.service #配置用户的邮箱发送邮件 vim /etc/mail.rc set from="xxx@xxx.com&quo ...
- Zabbix微信报警脚本及写触发记录
一.Zabbix微信报警 默认路径:/usr/lib/zabbix/scripts/weixin.py #!/usr/bin/python # -*- coding: utf-8 -*- import ...
- Zabbix邮件报警-->Script
Version:3.0.1 邮件报警有两种media 1.Email zabbix发送报警邮件到指定smtp服务器(使用系统自带的sendmail,发送邮箱是zabbix服务器的本地邮箱账号) 再由s ...
- linux中Zabbix邮件报警设置配置步骤
使用外部邮箱账号发送报警邮件设置 配置Zabbix服务端外部邮箱 vi /etc/mail.rc #编辑,添加以下信息 set from=xxx@163.com smtp=smtp.163.com s ...
- zabbix系列 ~ 报警模式
一 简介:聊聊zabbix的报警方式二 报警方式 邮件,短信,钉钉,微信三 准备 需要预选准备好对应报警方式的脚本四 web端设置 1 设置报警方式 2 设置报警触发器 1 选择报警信息 ...
- Zabbix邮件报警配置
一.安装sendmail或者postfix yum install sendmail #安装 service sendmail start #启动 chkconfig sendmail on #设置开 ...
- Zabbix 邮件报警示例
Zabbix 邮件报警示例: 1.编辑 mail.rc 文件添加默认的邮箱配置 # vi /etc/mail.rc set from=1234567@qq.com set smtp=smtp.qq. ...
随机推荐
- Object对象类
Object对象类是所有类的祖先,他是默认自动继承的 Java为什么要做一个对象类呢?对象类的目的就是归一了类型,他就是把所有的类所有的对象归纳成为 Object类型.因为对象他认为对象应该拥有一些什 ...
- css:使用笔记(不断更新中...)
1,inline-block Inline :1是不支持宽高的 2 在一行内显示 span 啥的~ Block:1,占一行 2支持宽高 但是img因为在一行并排显示,我们归为行(内嵌)元素,但支持设置 ...
- php的乱码问题
$content=file_get_contents("http://www.ctsdc.com/");$pattern="/<a\s+href=.*<\/a ...
- 奥迪--A6L
-型号:A6L -价格:42-75W -动力:1.8T/2.5L/3T -变速箱:7挡双离合/CVT无级变速/7挡双离合 -长宽高:5.04,1.87,1.47 -油箱:75L -发动机:EA888 ...
- P1026 统计单词个数
题意 给出一段字符串和一个字典,把字符串划分为n个连续的子串,求一种最优的划分方式使字符串所含单词数最大.(详见NOIp2001) 思路 这个题是一个很典型的线性dp,难点主要在预处理上. 理解题意后 ...
- JMeter学习-020-JMeter 监听器之【聚合报告】错误率、吞吐量、传输速率实例计算
上文 对聚合报告的结果字段进行了概要的讲述释义,同时对吞吐量.传输速率.分位数等进行了详细的阐述,此文针对上文中描述的吞吐量及传输速率的计算进行详细的实例计算演示. 多不闲述,直入主题! 实际操作步骤 ...
- iOS ARC中CTCallCenter没用,无法监听电话的解决方案
今天在尝试使用CTCallCenter进行电话监听时,发现一直无法捕获电话状态改变的事件,研究了一番之后找到了解决方案,在这里分享给大家. 首先使用CTCallCenter监听电话的代码如下: CTC ...
- MVC_表单和HTML辅助方法
表单的使用 action特性告知Web浏览器信息发往哪里. method特性告知浏览器使用HTTP POST 还是 HTTP GET. GET请求用于读操作, POST请求用于写操作 HTML辅助方法 ...
- fiddler note
一晚上终于找到对的东西,作者很专业,这里作为笔记,想学习好东西还是到作者那里^_^ ---------------------------------------------------------- ...
- linux 下搭建svn
Update 程序设计中的“后悔药”——SVN 一.历史起源 1.版本控制软件 答:主要是对源代码版本进行控制与管理 2.版本控制软件起源 CVS:最早期的开源的版本控制软件(开源奇葩) VSS: ...