- ①微信监控报警
- 企业微信后台【PC】
- python报警监控脚本上传报警监控脚本或者下载脚本
- 微信报警脚本
- 2、zabbix 创建告警媒介
- ②163邮箱 (脚本)
- 3、网页配置
- 邮件不用脚本
- ③钉钉报警
- 安装python-pip和requests库
- 在监控页面创建媒介:
zabbix 微信报警【监控端】
5.1下载企业微信【手机】
点击登录默认没有企业会出现创建企业
加了企业的话,点击我的》 点击设置》切换身份》创建企业/团队
需要记住这 几个配置 注意截图一下
企业 id wwe81e87a26a5b9e09 账号 TianMingQing 部门 id 2 AgentId 1000002 手机上面查看到的 Secretpython报警监控脚本上传报警监控脚本或者下载脚本
上传 脚本文件 ,
步骤;cp -rf wechat.py /usr/lib/zabbix/alertscripts/ 拷贝上传的脚本
步骤:cd /usr/lib/zabbix/alertscripts/
步骤;chmod +x wechat.py && chown zabbix:zabbix wechat.py 提权
无论是上传还是下载的脚本都需要,改下面的信息。
需要修改脚本中的四个信息:
self. corpid = ‘wwd2385f23ad80ecef’ //公司的corpid
self. secret = ‘3gsEC6Mv3vQmdG5MOJBF65U0KzTl-1v2GKQhr479uso’ //应用的secret
‘toparty’:1, //部门id
‘agentid’:“1000002”, //应用id
修改 15 16 69 71 添加这几个
#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib,urllib2,json import sys reload(sys) sys.setdefaultencoding( "utf-8" ) class WeChat(object): __token_id = '' # init attribute def __init__(self,url): self.__url = url.rstrip('/') self.__corpid = 'wwe81e87a26a5b9e09' self.__secret = 'i1_tJySbbE6LvIYK_irRDSGYZFD37KnlrbZCxd3L6aE' # Get TokenID def authID(self): params = {'corpid':self.__corpid, 'corpsecret':self.__secret} data = urllib.urlencode(params) content = self.getToken(data) try: self.__token_id = content['access_token'] # print content['access_token'] except KeyError: raise KeyError # Establish a connection def getToken(self,data,url_prefix='/'): url = self.__url + url_prefix + 'gettoken?' try: response = urllib2.Request(url + data) except KeyError: raise KeyError result = urllib2.urlopen(response) content = json.loads(result.read()) return content # Get sendmessage url def postData(self,data,url_prefix='/'): url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id request = urllib2.Request(url,data) try: result = urllib2.urlopen(request) except urllib2.HTTPError as e: if hasattr(e,'reason'): print 'reason',e.reason elif hasattr(e,'code'): print 'code',e.code return 0 else: content = json.loads(result.read()) result.close() return content # send message def sendMessage(self,touser,message): self.authID() data = json.dumps({ 'touser':touser, 'toparty':2, 'msgtype':"text", 'agentid':"1000002", 'text':{ 'content':message }, 'safe':"0" },ensure_ascii=False) response = self.postData(data) print response if __name__ == '__main__': a = WeChat('https://qyapi.weixin.qq.com/cgi-bin') a.sendMessage(sys.argv[1],sys.argv[3])
监控脚本测试:
注:Youngfit为上图的企业微信名 test为标题 yufei为内容,标题和内容均可自定义 [root@youngfit ~]# /usr/lib/zabbix/alertscripts/wechat.py Youngfit test yufei {u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}2、zabbix 创建告警媒介
注:(以哪种方式发送报警信息,短信,脚本等等)
{alert.SENDTO} 警告发送 {alert.SUBJECT} 主题 {alert.MESSAGE} 信息
3、zabbix 添加告警用户
创建用户组:web-group,包含yangge、alice...等用户 创建用户:yangge、alice...等用户,并关联到微信告警 希望的结果是:发微信到组web-group,组中的用户yangge、alice都能收到
5.8 Zabbix 添加报警动作
上面 媒介创建好了 接着 *** 作动作
如果希望中文显示: 告警主机: {HOST.NAME} 告警地址: {HOST.IP} 监控项目: {ITEM.NAME} 告警等级: {TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 告警时间: {EVENT.DATE} {EVENT.TIME}
5.9 测试微信报警
被监控端 *** 作
systemctl stop nginx②163邮箱 (脚本)
邮件系统简要介绍:
电子邮件系统包括两个组件:
MUA(Mail User Agent,邮件用户代理)和MTA(Mail Transport Agent,邮件传送代理 postfix);
MUA是邮件系统为用户提供的可以读写邮件的界面;而MTA是运行在底层,能够处理邮件的收发工作的程序;
mail和mailx即为负责查看、编写邮件和向MTA发送邮件的MUA。mailx是mail的功能加强版。
1.注册163邮箱 2.登陆网页邮箱设置客户端授权密码
server服务器端:
安装MUA软件:mailx
阿里云的yum源可以下载 [root@zabbix-server ~]# yum install mailx -y [root@zabbix-server ~]# mailx -V 12.5 7/5/10 注:使用新的方式--利用公网邮件服务器发送报警,需要关闭postfix服务 [root@zabbix-server ~]# systemctl stop postfix
配置公网邮箱信息:
vim /etc/mail.rc —在最后添加如下:
set from=12345678@163.com(邮箱地址) set smtp=smtp.163.com(smtp服务器) set smtp-auth-user=12345678@163.com(用户名) set smtp-auth-password=qf123456(这里是邮箱的授权密码) set smtp-auth=login
使用mailx发邮件的方式:
方式1:echo “正文内容” | mailx -s “邮件标题” 收件箱Email
方式2:mailx -s “邮件标题” 收件箱Email,回车按CTRL+D发送
参数:
-v :显示发送的详细信息
手动发送邮件测试:
[root@zabbix-server ~]# mailx -v -s 'hello' 'zhangsan@163.com'
手写邮件内容 (回车,然后ctrl+d正常结束)
手动使用mailx发送邮件测试结果:
|
zabbix添加邮件报警功能:
配置 zabbix 的邮件报警功能需要以下三个角色的参与。
1、 示警媒体(Media) 2、 触发器(Triggers) 3、 动作(Action)
示警媒体: 指的是 zabbix 采用何种方式进行报警,目前 Zabbix 支持的示警媒体包括邮件、脚本、Jabber、短信。jabber是linux下一种即时通讯工具。 触发器: 指的是当监控对象达到某个条件或条件集合的时候,触发 Zabbix 产生事件。 动作: 指的是 Zabbix 产生对应事件后,它通过示警媒体发送报警。 接下来,我们配置一个邮件报警功能的范例。效果是当redis端口挂掉则触发报警,管理员将会收到一封 Zabbix 发出的报警邮件。
编写 脚本
cd /usr/lib/zabbix/alertscripts vim mailx.sh #!/bin/bash #send mail messages=`echo $3 | tr 'rn' 'n'` subject=`echo $2 | tr 'rn' 'n'` echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1
创建日志文件并修改权限并测试
这个 可以直接 给个权限 就可以
touch /tmp/mailx.log chown -R zabbix.zabbix /tmp/mailx.log chmod +x mailx.sh chown -R zabbix.zabbix /usr/lib/zabbix/ sh mailx.sh 邮箱 zabbix "this is test"3、网页配置
(1)添加报警媒介
名称自定义,后面会用到 类型选择脚本 脚本名称是之前编辑的脚本名称 脚本的三个参数:
{alert.SENDTO}
{ alert.SUBJECT}
{alert.MESSAGE}
(2)添加用户
管理 > 用户 > 点击Admin > 报警媒介 > 添加
类型选择之前自定义的名称
收件人填自己邮箱
点击添加
点击更新
(3)创建动作
配置 > 动作 >创建动作 > 删除默认 > 创建动作
*** 作
想要发送中文 可以设置这个消息内容
默认标题 {TRIGGER.STATUS}:{TRIGGER.NAME} 消息内容 告警主机:{HOST.NAME} 告警IP:{HOST.IP} 告警时间:{EVENT.DATE}-{EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{TRIGGER.NAME}-{ITEM.VALUE} 事件ID:{EVENT.ID}
添加恢复 *** 作
除了消息内容的模板,其他和上一步基本一致
回复 *** 作内容 中文版
默认标题 {TRIGGER.STATUS}:{TRIGGER.NAME} 消息内容 恢复主机:{HOST.NAME} 恢复IP:{HOST.IP} 恢复时间:{EVENT.DATE}-{EVENT.TIME} 恢复等级:{TRIGGER.SEVERITY} 恢复信息:{TRIGGER.NAME}-{ITEM.VALUE} 事件ID:{EVENT.ID}
最后再确认一下 *** 作是不是都添加完成了,如果没完成是不会发送邮件的!!
4)测试
被监控端停止sshd服务
systemctl stop mysqld
可以看到邮件已经发送过来了,并且仪表板的问题界面开始闪烁
重新开启服务后同样会有邮件发来
就是不用脚本 就电子邮件
这里讲一下 先有个群,随便建个群就可以
公网 ip 不会去 百度搜 ip 就出来拉
把webhook的地址记录下来 重要 重要 重要
创建脚本,赋予执行权限
cd /usr/lib/zabbix/alertscripts
脚本里面只需要改你的机器人 地址
vim dingding.py #!/usr/bin/python # -*- coding: utf-8 -*- # Author: sxdswc999 import requests import json import sys import os headers = {'Content-Type': 'application/json;charset=utf-8'} api_url = "" #机器人的Webhook地址 def msg(text): json_text= { "msgtype": "text", "text": { "content": text }, "at": { "atMobiles": [ "" #手机号 ], "isAtAll": False } } print requests.post(api_url,json.dumps(json_text),headers=headers).content if __name__ == '__main__': text = sys.argv[1] msg(text)
提权
[root@zabbix-server alertscripts]# chmod +x dingding.py安装python-pip和requests库
[root@zabbix-server alertscripts]# yum -y install epel-release [root@zabbix-server alertscripts]# yum -y install python-pip [root@zabbix-server alertscripts]# pip install requests
第三个指令是去国外下载 容易下载不上 就使用下面的
pip install requests -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
测试脚本是否可行
./dingding.py 监控报警 {"errcode":0,"errmsg":"ok"}
pc端接收成功:
移动端App接收成功:
将Admin用户关联到此媒介:
用户报警 媒介,提示这里写 机器人的 或者写账号的都可以id 收件人
动作
测试
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)