我们都知道zabbix具备WEB监测功能,单纯的添加几个、十几个的话,手工添加也行,稍费点事而已,可一旦数量太多,那手工添加明显不太合适了。最近就遇见这么个需求,要一次性添加200多个页面,这。。。着实有些为难老夫了。硬着头皮添加了二十来个,挠下一把头发后才想起来,老夫我也是多多少少会些脚本人,何不偷个懒呢。于是在网上找了找教程,适当的做了些改造,总算搞定了。分享给大家,希望能给大家带来帮助。
1、环境说明
ubuntu 22.04 / zabbix 6.0
2、URL测试
这一步主要是为了确定下给定的URL是否正确,如果我们能够确定URL没有任何问题,这一步可以略过。先看下我手中的数据格式
这一步使用以下脚本实现
vim url_test.py
import xlrd
import requests
#先获取这个excel文件
worksheet = xlrd.open_workbook(r'E:url.xlsx')
#获取这个文件里所有的sheet
sheet_names = worksheet.sheet_names()
#本文件中有两个sheet,分别为'Sheet2', 'Sheet1'
print(sheet_names)
#循环这两个sheet
# for sheet_name in sheet_names:
#通过sheet名称来获取单个sheet的所有数据
# sheet = worksheet.sheet_by_name(sheet_name)
#将第三列的数据存储到url_name中
# url_name = sheet.col_values(2)
# print(url_name)
#我这里没有做循环,因为就一个sheet里有数据
sheet =worksheet.sheet_by_name('Sheet2')
url_name = sheet.col_values(2)
# print(url_name)
headers = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
for url in url_name[1:]:
try:
req = requests.get(url,headers=headers,timeout=5)
print('域名'+ url + '返回码: ' + str(req.status_code))
except Exception as e:
print('域名'+ url + "访问出现如下异常:%s" %e)
输出结果是这个样子的
域名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
我将这个文件放到了/usr/lib/zabbix/customscripts中,下面需要用到的脚本文件也都放到了这个目录中,这里一定要注意,文件中不要有重复数据。
4、配置自动发现和页面状态检测脚本
首先配置自动发现脚本
cd /usr/lib/zabbix/customscripts
vim web_discovery.sh
#脚本内容如下:
#!/bin/bash
WEB_SITE=($(grep -v "^#" /usr/lib/zabbix/customscripts/sd_url.txt | awk -F ',' '{print $1}'))
WEB_URL=($(grep -v "^#" /usr/lib/zabbix/customscripts/sd_url.txt | awk -F ',' '{print $2}'))
length=${#WEB_SITE[@]}
printf "{
"
printf ' '""data":["
for ((i=0;i<${#WEB_SITE[@]};++i))
do
printf '
{'
printf ""{#URLNAME}":"${WEB_SITE[$i]}","{#URL}":"${WEB_URL[$i]}"}"
if [ $i -lt $[$length-1] ];then
printf ','
fi
done
printf "
]
"
printf "}
"
接着来配置页面状态检测脚本,这个脚本完全照搬网上的
vim web_status.sh
#脚本内容如下:
#!/bin/bash
url=$1
status=$2
http_code () {
/usr/bin/curl -o /dev/null -s -w %{http_code} $url
}
time_total () {
/usr/bin/curl -o /dev/null -s -w %{time_total} $url|awk '{print $1*1000}'
}
time_connect () {
/usr/bin/curl -o /dev/null -s -w %{time_connect} $url|awk '{print $1*1000}'
}
time_starttransfer () {
/usr/bin/curl -o /dev/null -s -w %{time_starttransfer} $url|awk '{print $1*1000}'
}
speed_download () {
/usr/bin/curl -o /dev/null -s -w %{speed_download} $url|awk '{print $1/1024}'
}
case $status in
http_code)
http_code
;;
time_total)
time_total
;;
time_connect)
time_connect
;;
time_starttransfer)
time_starttransfer
;;
speed_download)
speed_download
;;
*)
echo "Usage:$0 {[URL] http_code|time_total|time_connect|time_starttransfer|speed_download}"
;;
esac
5、zabbix agent配置
在安装有zabbix agent的主机上创建配置文件
cd /etc/zabbix/zabbix_agentd.d
vim url.conf
#添加如下内容
UserParameter=web.discovery,/usr/lib/zabbix/customscripts/web_discovery.sh
UserParameter=web.status[*],/usr/lib/zabbix/customscripts/web_status.sh $1 $2
#修改agent配置文件,默认为0,修改为1,否则可能会不能正确执行脚本
vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1
#修改后重启agent
systemctl restart zabbix-agent
6、zabbix 服务端配置
修改zabbix配置文件,不是完全必要,但建议修改下
#执行脚本可能会超时,可以调大一下超时时间,默认3
Timeout=15
在页面中添加自动发现规则,可以添加成模板,我这里直接在zabbix server中进行添加
这里注意箭头标识的地方,一定要和上一步中url.conf中键值一致
接下来就是添加监控原型了,示例如下,注意和url.conf中的键值,以及web_status.sh中的字段对应起来。
将其他四个依次添加上。
7、结果查看
执行自动发现后,结果是这样的后面配置告警和图形就不说了,比较通用。
后面配置告警和图形就不说了,比较通用,大家自行配置即可。
页面更新:2024-03-01
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号