- ①微信监控报警
- 企业微信后台【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 收件人
动作
测试



