我们都知道zabbix具备WEB监测功能,单纯的添加几个、十几个的话,手工添加也行,稍费点事而已,可一旦数量太多,那手工添加明显不太合适了。最近就遇见这么个需求,要一次性添加200多个页面,这着实有些为难老夫了。硬着头皮添加了二十来个,挠下一把头发后才想起来,老夫我也是多多少少会些脚本人,何不偷个懒呢。于是在网上找了找教程,适当的做了些改造,总算搞定了。分享给大家,希望能给大家带来帮助。 1、环境说明 ubuntu22。04zabbix6。0 2、URL测试 这一步主要是为了确定下给定的URL是否正确,如果我们能够确定URL没有任何问题,这一步可以略过。先看下我手中的数据格式 这一步使用以下脚本实现vimurltest。pyimportxlrdimportrequests先获取这个excel文件worksheetxlrd。openworkbook(rE:url。xlsx)获取这个文件里所有的sheetsheetnamesworksheet。sheetnames()本文件中有两个sheet,分别为Sheet2,Sheet1print(sheetnames)循环这两个sheetforsheetnameinsheetnames:通过sheet名称来获取单个sheet的所有数据sheetworksheet。sheetbyname(sheetname)将第三列的数据存储到urlname中urlnamesheet。colvalues(2)print(urlname)我这里没有做循环,因为就一个sheet里有数据sheetworksheet。sheetbyname(Sheet2)urlnamesheet。colvalues(2)print(urlname)headers{UserAgent:Mozilla5。0(WindowsNT10。0;Win64;x64)AppleWebKit537。36(KHTML,likeGecko)Chrome92。0。4515。159Safari537。36}forurlinurlname〔1:〕:try:reqrequests。get(url,headersheaders,timeout5)print(域名url返回码:str(req。statuscode))exceptExceptionase:print(域名url访问出现如下异常:se) 输出结果是这个样子的域名http:europhil。aaa。com返回码:403域名http:www。aaa。com返回码:200域名http:cs。aaa。com返回码:200 这样就把访问异常的页面提前筛选出来,可以提前核实下文件中的内容是否正确。 3、重组数据 重组数据后的数据比较简单,只是将路径那一列删除了,没什么鸟用,当然不删也行,就是单纯的为了好看些。不过这个数据需要存储在。txt获取。log文件中,否则后面无法读取,格式是这样的站点名称1,http:cs。aaa。com站点名称2,http:bwb。aaa。com站点名称3,http:wy。aaa。com 我将这个文件放到了usrlibzabbixcustomscripts中,下面需要用到的脚本文件也都放到了这个目录中,这里一定要注意,文件中不要有重复数据。 4、配置自动发现和页面状态检测脚本 首先配置自动发现脚本cdusrlibzabbixcustomscriptsvimwebdiscovery。sh脚本内容如下:!binbashWEBSITE((grepvusrlibzabbixcustomscriptssdurl。txtawkF,{print1}))WEBURL((grepvusrlibzabbixcustomscriptssdurl。txtawkF,{print2}))length{WEBSITE〔〕}printf{printfdata:〔for((i0;i{WEBSITE〔〕};i))doprintf{printf{URLNAME}:{WEBSITE〔i〕},{URL}:{WEBURL〔i〕}}if〔ilt〔length1〕〕;thenprintf,fidoneprintf〕printf} 接着来配置页面状态检测脚本,这个脚本完全照搬网上的vimwebstatus。sh脚本内容如下:!binbashurl1status2httpcode(){usrbincurlodevnullsw{httpcode}url}timetotal(){usrbincurlodevnullsw{timetotal}urlawk{print11000}}timeconnect(){usrbincurlodevnullsw{timeconnect}urlawk{print11000}}timestarttransfer(){usrbincurlodevnullsw{timestarttransfer}urlawk{print11000}}speeddownload(){usrbincurlodevnullsw{speeddownload}urlawk{print11024}}casestatusinhttpcode)httpcode;;timetotal)timetotal;;timeconnect)timeconnect;;timestarttransfer)timestarttransfer;;speeddownload)speeddownload;;)echoUsage:0{〔URL〕httpcodetimetotaltimeconnecttimestarttransferspeeddownload};;esac 5、zabbixagent配置 在安装有zabbixagent的主机上创建配置文件cdetczabbixzabbixagentd。dvimurl。conf添加如下内容UserParameterweb。discovery,usrlibzabbixcustomscriptswebdiscovery。shUserParameterweb。status〔〕,usrlibzabbixcustomscriptswebstatus。sh12修改agent配置文件,默认为0,修改为1,否则可能会不能正确执行脚本vimetczabbixzabbixagentd。confUnsafeUserParameters1修改后重启agentsystemctlrestartzabbixagent 6、zabbix服务端配置 修改zabbix配置文件,不是完全必要,但建议修改下执行脚本可能会超时,可以调大一下超时时间,默认3Timeout15 在页面中添加自动发现规则,可以添加成模板,我这里直接在zabbixserver中进行添加 这里注意箭头标识的地方,一定要和上一步中url。conf中键值一致 接下来就是添加监控原型了,示例如下,注意和url。conf中的键值,以及webstatus。sh中的字段对应起来。 将其他四个依次添加上。 7、结果查看 执行自动发现后,结果是这样的后面配置告警和图形就不说了,比较通用。 后面配置告警和图形就不说了,比较通用,大家自行配置即可。