.net webservice怎么接收post过来的json_zabbix5.0 配置监控agent, 并通过微信接收报警

上一篇文章分享了 zabbix5.0 server端的安装步骤,有兴趣的朋友可以去看一下我的上一篇文章:用阿里云的镜像极速安装监控平台 zabbix5.0

今天主要说一下 zabbix5.0 监控agent 并通过微信接收报警信息。

安装 agent

#安装yum install ./zabbix-agent-5.0.2-1.el7.x86_64.rpm #修改配置[root@cms-192 ~]# cat /etc/zabbix/zabbix_agentd.confPidFile=/var/run/zabbix/zabbix_agentd.pidLogFile=/var/log/zabbix/zabbix_agentd.logLogFileSize=0EnableRemoteCommands=1Server=192.168.100.5ServerActive=192.168.100.5Hostname=cms-192.168.100.9Include=/etc/zabbix/zabbix_agentd.d/  #配置HostMetadataItem 用于区分Linux和WindowsHostMetadataItem=system.uname  #192.168.100.5 是 zabbix server 的IP地址 #启动 agentsystemctl start zabbix-agent  systemctl enable zabbix-agent

在 zabbix web 上先手动添加一下这个主机

先在左侧找到配置 ,选择主机,然后到右上角点创建主机

0a7056f65fa4528f6fc0b4fc9aad5108.png

给这个主机添加一个模板,强烈推荐 Template OS Linux by Zabbix agent 这个模板,几乎服务器方面的监控就都有了,比如cpu,内存,硬盘,网络,进程数等等。这个模板本身就是很多模板链接过来的,相当于汇总了很多模板的功能。

5ac3987cb389fb26e115936c4206bf39.png
31c8155e430382e69f7a937b93e1d13d.png

添加之后等一分钟再去 最新数据 里选择这个主机,就能看到监控的最新数据了。

712c854bbaddc41f052d419211e6db93.png

配置自动注册功能,可以实现agent会自动向server端注册,并添加到模板和群组 ,这样如果服务器多了会减轻server端压力,,在这方面比自动发现好一点。

2fc702c747d3c759f39959700dab54c3.png

开始给自动注册创建动作:

e2014bb2fbf4bba00ff5cf7018d1ee35.png
f33d060bfb899692cc3b022ecab0c607.png

最后添加完是下图这样的:

470560e42501fa62736b5cffa7de8a5c.png

为了验证自动注册功能,我再新增一个主机,这次不在 zabbix web 上添加,用自动注册功能去添加。 在新服务器上启动agent,看看会不会自动注册。

72bc3bb14b83bfa6c7bbe277cb97e74d.png

成功添加!说明自动注册功能可以用了。

  • 题外话:

如果在服务器很多的情况下,要监控这些服务器,用自动化工具结合自动注册操作起来更高效。比如用saltstack 给所有的服务器安装agent 并修改配置文件,最后启动agent,然后所有的agent就都可以注册到server 端了。


配置微信报警

第一步, 申请一个企业微信

第二步, 登录企业微信后台,创建应用,用于接收报警,这里的应用相当于群组

注意:应用创建完后要启用,并且记住应用的AgentId和Secret,后面会用到 。

第三步, 获取AccessToken ,只有获取了AccessToken 才能给企业微信发送消息

用get方法请求这个地址 https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET只需要把corpid和corpsecret换成自己的就可以了。corpid 创建的企业号生成的企业id , 在我的企业 ---> 企业信息 下面找到企业idcorpsecret 是刚才创建的应用生成的Secret也可以用下面这个工具获取AccessToken,这个是官方提供的工具。https://work.weixin.qq.com/api/devtools/devtool.php  

第四步, 生成发送企业微信的URL地址

请求方式:POST(HTTPS)请求地址: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKENaccess_token 是 调用接口凭证, 是必须要有的参数。返回示例:{    "errcode":0,    "errmsg":"ok",    "invaliduser":"userid1|userid2", // 不区分大小写,返回的列表都统一转为小写    "invalidparty":"partyid1|partyid2",    "invalidtag":"tagid1|tagid2"}#如果部分接收人无权限或不存在,发送仍然执行,但会返回无效的部分(即invaliduser或invalidparty或invalidtag),常见的原因是接收人不在应用的可见范围内#例子:corpid = 'xxxxxx'Secretid = 'xxxxxxx'AccessTokenUrl= 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s' %(corpid,Secretid)resp = requests.get(AccessTokenUrl).json()access_token = resp['access_token']SendUrl = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' %access_tokenprint(SendUrl)#这里的 SendUrl 就是 发送企业微信的URL

第五步, 发送消息测试

消息类型包括:文本消息图片消息语音消息视频消息文件消息文本卡片消息图文消息markdown消息小程序通知消息#这里只以文本消息为例,其他消息类型参考文档 https://open.work.weixin.qq.com/api/doc#90002/90151/90854文本消息:{    "touser":"UserID1|UserID2|UserID3",    "toparty":"PartyID1|PartyID2",    "totag":"TagID1 | TagID2",    "msgtype":"text",    "agentid":1,    "text":{        "content":"下雨了该收衣服了"    },    "safe":0}参数说明:参数   是否必须   说明touser    否        成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个),特殊情况:指定为@all,则向该企业应用的全部成员发送;toparty   否       部门ID列表,多个接收者用‘|’分隔,最多支持100个,当touser为@all时忽略本参数;totag      否        标签ID列表,多个接收者用‘|’分隔,最多支持100个,当touser为@all时忽略本参数;msgtype   是   消息类型,此时固定为:textagentid   是    企业应用的id,整型;企业内部开发,可在应用的设置页面查看;第三方服务商,可通过接口 获取企业授权信息 获取该参数值;content    是   消息内容,最长不超过2048个字节,超过将截断;safe   否   表示是否是保密消息,0表示否,1表示是,默认0;################################注意:touser、toparty、totag不能同时为空其中text参数的content字段可以支持换行、以及A标签,即可打开自定义的网页(注意:换行符请用转义过的)# 可以根据部门发消息,也可以给个人发消息,还以给全体人员发消息#例子:corpid = ''Secretid = ''AccessTokenUrl= 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s' %(corpid,Secretid)resp = requests.get(AccessTokenUrl).json()access_token = resp['access_token']SendUrl = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s' %access_tokenparams = {   "touser" : "zhangsan",   "msgtype" : "text",   "agentid" : 1000019,   "text" : {       "content" : "你的快递已到,快来取把。"   },   "safe":0}#注意,文本类型只能发送字符串,需要 把字典格式转成字符串 json.dumpsresq = requests.post(SendUrl,data=json.dumps(params))print(resq.status_code)#这个时候 企业微信可以收到content 里定义的消息,就说明测试通了。#如果发生错误,找到错误码到 https://open.work.weixin.qq.com/devtool/query?e=301002 查看

第六步, 设置微信可以接收企业微信的消息

在我的企业 ---> 微信插件,下方有一个邀请关注的二维码,微信关注后即可收到企业微信的消息,这样就不用再安装企业微信客户端就可以收报警消息了

第七步,配置zabbix 向企业微信发送报警信息

  • 在 zabbix web 的管理---->报警媒介----创建媒介类型
c275bde2cd89200d55006fc71208f175.png

你也可以在上图中的 Message templates 设置一下报警信息的模板。

我没有在这里设置,这里相当于全局。我是在动作里设置的,我有好几个动作,我对每个动作的消息模板还不太一样。

  • 给需要收到微信报警的用户添加报警媒介
c4483275c3314739dcc3bf7f17ae1132.png

注意,这里的收件人是企业微信里的用户, 你得有那个用户并且在应用里。也可以写@all发给所有人

  • 添加触发器动作

先选择类型:

53d3afd4db37eed893ce764e7e39fe50.png

点击右上角创建动作:

e3345e9bd5b36413995bb869f688fc8c.png
84048120c9cf463329e5c1c5ac03bf29.png

我自定义了消息模板:

ae787fb30f9fb6d974d612e333a8621c.png

测试微信接收的报警信息:

报警:High memory utilization ( >90% for 5m)Notification: PROBLEMHost: g1-192.168.100.16Time: 2020.08.28 18:34:08Info: High memory utilization ( >90% for 5m) (vm.memory.utilization): 90.59 %   

最后的关键就是看你的脚本怎么写的,不要频繁的访问获取token的接口,我获取一次token 后保存在本地文件,等快过期的时候再重新获取一次。

如果我的文章有帮助到你,希望你能关注我一下,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值