使用Zabbix实现动态执行监控采集脚本的原理是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
实现原理:使用文件服务器统一存放和管理监控脚本,在zabbix agent预埋通用脚本,根据zabbix server传输的Key和参数,从文件服务器拉取脚本执行后返回数据。
架构设计:
具体实现:
搭建文件服务器,以nginx作为文件服务器为例
修改nginx的配置并重启
erver { listen 8080; server_name zabbix; root /usr/local/static/; location / { autoindex on; autoindex_exact_size on; autoindex_localtime on; charset utf-8; } }
编写文件拉取和执行的脚本
url="http://192.168.24.108:8080/" #定义文件服务器的URLparentDir="/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_directoryfiif [ ! -f $parentDir/$file_path ];then #判断脚本是否已经存在 wget -P $file_directory $url$file_path 2>>logfitimestamp=$(date +%s)filetimestamp=$(stat -c %Y $parentDir/$file_path)if [ $[$timestamp - $filetimestamp] -gt 3600 ];then #判断当前时间与脚本修改时间的大小,3600秒更新一次 wget $url$file_path -O $parentDir/$file_path 2>>log #覆盖脚本 touch -c $parentDir/$file_path #修改脚本的修改时间fipython $parentDir/$file_path $3 #执行脚本
增加zabbix的配置文件
UserParameter=requests_file[*],sh /usr/local/zabbix/bin/zabbix_script/requests_file.sh $1 $2 $3
重启zabbix agent
编写测试脚本,并上传到文件服务器指定目录
#监控服务器连接数#!/usr/bin/pythonimport pwdimport os,sysimport reimport globstate = sys.argv[1]cmd = "netstat -an | grep " + state + " | wc -l"os.system(cmd)
配置zabbix页面的监控项:
观察数据是否正常 :
新的监控脚本放在文件服务器之后,可直接配置页面的监控项进行数据采集
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。