zabbix批量监测WEB页面

我们都知道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

标签:页面   可能会   批量   脚本   名称   站点   发现   域名   文件   内容   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top