Zabbix 动态执行监控采集脚本的实现原理
在使用Zabbix自定义脚本采集监控数据的时候,通常会遇到以下一些问题:
- 服务器扩容之后,监控脚本如何部署到新的服务器上?
- 监控脚本需要修改时,如何自动修改所有相同的监控脚本?
- 如何备份监控采集脚本避免因服务器异常后丢失?
- 新部署自定义监控,如何避免系统管理员过多操作?
- 如何避免大量研发就能解决上述的问题?
实现原理:使用文件服务器统一存放和管理监控脚本,在zabbixagent预埋通用脚本,根据zabbixserver传输的Key和参数,从文件服务器拉取脚本执行后返回数据。
架构设计:
具体实现:
1.搭建文件服务器,以nginx作为文件服务器为例
修改nginx的配置并重启
erver{ listen8080; server_namezabbix; root/usr/local/static/; location/{ autoindexon; autoindex_exact_sizeon; autoindex_localtimeon; charsetutf-8; } }
2.编写文件拉取和执行的脚本
url="http://192.168.24.108:8080/"#定义文件服务器的URL parentDir="/usr/local/zabbix/bin/zabbix_script" file_directory=$parentDir/$1#定义本地存放执行脚本的目录 file_name=$2#脚本名称 file_path=$1/$2#拼接文件服务器的脚本路径 if[!-d$file_directory];then#判断文件目录是否存在 mkdir-p$file_directory fi if[!-f$parentDir/$file_path];then#判断脚本是否已经存在 wget-P$file_directory$url$file_path2>>log fi timestamp=$(date+%s) filetimestamp=$(stat-c%Y$parentDir/$file_path) if[$[$timestamp-$filetimestamp]-gt3600];then#判断当前时间与脚本修改时间的大小,3600秒更新一次 wget$url$file_path-O$parentDir/$file_path2>>log#覆盖脚本 touch-c$parentDir/$file_path#修改脚本的修改时间 fi python$parentDir/$file_path$3#执行脚本
3.增加zabbix的配置文件
UserParameter=requests_file[*],sh/usr/local/zabbix/bin/zabbix_script/requests_file.sh$1$2$3
4.重启zabbixagent
5.编写测试脚本,并上传到文件服务器指定目录
#监控服务器连接数 #!/usr/bin/python importpwd importos,sys importre importglob state=sys.argv[1] cmd="netstat-an|grep"+state+"|wc-l" os.system(cmd)
6.配置zabbix页面的监控项:
7.观察数据是否正常:
8.新的监控脚本放在文件服务器之后,可直接配置页面的监控项进行数据采集
本文着重提供了一个zabbix自定义监控脚本集中管理的解决思路,可根据这个思路自由拓展更简洁、高效的zabbix使用方法,进一步让运维变得简单。
参考链接:
Zabbix如何动态执行监控采集脚本:https://mp.weixin.qq.com/s/ikuCSYhlFdtiAmt7epskWw
到此这篇关于Zabbix动态执行监控采集脚本的实现原理的文章就介绍到这了,更多相关Zabbix动态执行监控采集脚本内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。