<返回更多

zabbix5.0 配置监控agent, 并通过微信接收报警

2020-08-31    
加入收藏

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

 

安装 agent

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

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

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

zabbix5.0 配置监控agent, 并通过微信接收报警

 

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

zabbix5.0 配置监控agent, 并通过微信接收报警

 


zabbix5.0 配置监控agent, 并通过微信接收报警

 

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

zabbix5.0 配置监控agent, 并通过微信接收报警

 

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

zabbix5.0 配置监控agent, 并通过微信接收报警

 

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

zabbix5.0 配置监控agent, 并通过微信接收报警

 


zabbix5.0 配置监控agent, 并通过微信接收报警

 

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

zabbix5.0 配置监控agent, 并通过微信接收报警

 

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

zabbix5.0 配置监控agent, 并通过微信接收报警

 

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

 

如果在服务器很多的情况下,要监控这些服务器,用自动化工具结合自动注册操作起来更高效。比如用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 , 在我的企业 ---> 企业信息 下面找到企业id  corpsecret 是刚才创建的应用生成的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_TOKEN参数说明:参数	          是否必须	  说明access_token	是	      调用接口凭证  各个消息类型的具体POST格式参考以下文档:返回示例: {   "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_token
print(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标签,即可打开自定义的网页(注意:换行符请用转义过的n)# 可以根据部门发消息,也可以给个人发消息,还以给全体人员发消息  #例子:  corpid = 'xxxxxx'
Secretid = 'xxxxxxxx'
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_token
params = {   "touser" : "zhangsan",
   "msgtype" : "text",
   "agentid" : 1000019,
   "text" : {
       "content" : "你买的手机到了,快来取吧n。"
   },   "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 向企业微信发送报警信息

zabbix5.0 配置监控agent, 并通过微信接收报警

 

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

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

zabbix5.0 配置监控agent, 并通过微信接收报警

 

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

先选择类型:

zabbix5.0 配置监控agent, 并通过微信接收报警

 

点击右上角创建动作:

zabbix5.0 配置监控agent, 并通过微信接收报警

 


zabbix5.0 配置监控agent, 并通过微信接收报警

 

我自定义了消息模板:

zabbix5.0 配置监控agent, 并通过微信接收报警

 

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

 

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

 

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

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

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>