使用Zabbix实现动态执行监控采集脚本的原理是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
实现原理:使用文件服务器统一存放和管理监控脚本,在zabbix agent预埋通用脚本,根据zabbix server传输的Key和参数,从文件服务器拉取脚本执行后返回数据。
架构设计:
具体实现:
1.搭建文件服务器,以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; } }
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_path 2>>log fi timestamp=$(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 #修改脚本的修改时间 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.重启zabbix agent
5.编写测试脚本,并上传到文件服务器指定目录
#监控服务器连接数 #!/usr/bin/python import pwd import os,sys import re import glob state = sys.argv[1] cmd = "netstat -an | grep " + state + " | wc -l" os.system(cmd)
6.配置zabbix页面的监控项:
7.观察数据是否正常 :
8.新的监控脚本放在文件服务器之后,可直接配置页面的监控项进行数据采集
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。