概述场景

企业运维保障,实时有效把控重点应用程序前后端存活,如官网WEB、OAweb、Email等等;如果用zabbix,一个一个手动添加模板,会造成大量重复工作,如果利用脚本+mail,则无法图形呈现。所以这里利用zabbix的discovery功能来实现应用的监控。

基础资源

1、ZABBIX-5.4.0正式版

2、测试URL【三多笔记】:10691.cn

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图1)

正文

一、ZABBIX-5.4.0正式版安装部署

安装非本章节重点,请参考《Zabbix发布新版Zabbix 5.4安装部署教程(含报表功能)

二、实施ZABBIX-5.4.0批量监控WEB应用URL地址

1、Zabbix端配置

注意:之前为方便做MySQL数据库的监控,启用的是zabbix_agent2守护进程,对应端口10050而不是agentd,这里根据自身环境调整即可,zabbix_agentd也适用

##yum安装默认配置目录/etc/zabbix/
# 把UnsafeUserParameters值改为1,因为自动发现的脚本中有一些特殊字符,被认为是不安全的因素,1表示允许这些字符存在
[root@master-03 ~]# vim /etc/zabbix/zabbix_agent2.conf

UnsafeUserParameters=1
Include=/etc/zabbix/zabbix_agent2.d/*.conf

2、创建URL监控配置文档

[root@master-03 ~]# vim /etc/zabbix/zabbix_agent2.d/url.conf

## 第一行是自动发现脚本的路径
UserParameter=url.discovery,/etc/zabbix/zabbix_agent2.d/url_discovery.sh
## 第二行是检测URL状态的脚本路径
UserParameter=url.status[*],/etc/zabbix/zabbix_agent2.d/url_status.sh $1 $2

3、创建ZABBIX自动发现脚本(url_discovery.sh)

获取监控URL,输出格式为json格式,用于zabbix自动发现TCP

#!/bin/bash
WEB_SITE=($(grep -v "^#" /etc/zabbix/WEB.txt))
length=${#WEB_SITE[@]}
printf "{\n"
printf  '\t'"\"data\":["
for ((i=0;i<${#WEB_SITE[@]};++i))
do
        printf '\n\t\t{'
        printf "\"{#URLNAME}\":\"${WEB_SITE[$i]}\"}"
        if [ $i -lt $[$length-1] ];then
                printf ','
        fi
done
printf  "\n\t]\n"
printf "}\n"

4、创建ZABBIX监控项脚本(url_status.sh)

指标解释

http_code:获取curl获取URL的http状态码

time_total:完成请求所用的时间,单位为s

time_connect:建立到服务器的TCP 连接所用的时间,单位为s

time_starttransfer:在发出请求之后,Web 服务器返回数据的第一个字节所用的时间,单位为s

speed_download:传输速度,单位为B/s,这里换算成MB/s

#!/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
}

time_connect () {
/usr/bin/curl -o /dev/null -s -w %{time_connect}  $url
}

time_starttransfer () {
/usr/bin/curl -o /dev/null -s -w %{time_starttransfer}  $url
}

speed_download () {
/usr/bin/curl -o /dev/null -s -w %{speed_download}  $url|awk  '{print $1/1024/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、创建被监控URL列表(/etc/zabbix/WEB.txt)

#weburl
https://10691.cn/
...

6、授权并重启zabbix_agent2.service服务

[root@master-03 ~]# chown -R zabbix:zabbix /etc/zabbix/zabbix_agent2.d/
[root@master-03 ~]# chmod -R 755 /etc/zabbix/zabbix_agent2.d/

[root@master-03 ~]# chown -R zabbix:zabbix /etc/zabbix/WEB.txt
[root@master-03 ~]# chmod -R 755 /etc/zabbix/WEB.txt

[root@master-03 ~]# systemctl restart zabbix-agent2

7、在zabbix服务端验证并测试

[root@master-03 ~]# zabbix_get -s 172.19.19.26 -p 10050 -k url.discovery
{
        "etc":[
                {"{#URLNAME}":"https://10691.cn/"}
        ]
}

[root@master-03 zabbix]# zabbix_get -s 172.19.19.26 -p 10050 -k url.status[https://10691.cn/,time_total]
1.012837
[root@master-03 zabbix]# zabbix_get -s 172.19.19.26 -p 10050 -k url.status[https://10691.cn/,http_code]
302

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图1)

三、Zabbix-Web前端操作

1、创建zabbix监控模板

ZABBIX,首页---配置---模板---创建模板

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图2)

添加---在模板列表页,再次进入刚刚创建的模板界面---模板自定义:Template URL AUTO、群组自定义---添加完毕

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图3)

zabbix自动发现规则填写:名称自定义---键值为“url.discovery”更新间隔自定义

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图4)

2、创建zabbix url监控项原型

在自动发现规则里选创建监控项原型。

注意,这是在模板的自动发现规则里面的监控项原型定义的监控项 并不是 模板里面的监控项 两者是不同的,当你把监控项原型定义之后,会自动发现里面的规则,然后自动在监控项里面添加

名称: {#URLNAME} 状态码
键值: url.status[{#URLNAME},http_code]
信息类型:数字(无正负)
单位: ops/second #这个单位很重要,如果没有这个单位会导致触发器无法识别这个item

名称: {#URLNAME} 响应时间
键值: url.status[{#URLNAME},time_total]
信息类型:浮点数
单位: s

名称: {#URLNAME} 连接时间
键值: url.status[{#URLNAME},time_connect]
信息类型:浮点数
单位: s

名称: {#URLNAME} 返回数据时间
键值: url.status[{#URLNAME},time_starttransfer]
信息类型:浮点数
单位: s

名称: {#URLNAME} 传输速度
键值: url.status[{#URLNAME},speed_download]
信息类型:浮点数
单位: MB/s

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图5)

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图6)

最终监控原型效果

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图7)

3、Zabbix主机引用模板,模板关联主机

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图8)

4、zabbix主机校验

查看监控项

配置-主机-监控项,可以看到我们定义的动态的key已经生成,失效的key到期会自动删除

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图9)

首页---监测---主机最新数据,也可以看到已经获取最新数据

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图10)

5、配置触发器原型

首页---配置---模板---自动发现规则---触发器类型---创建触发器原型

名称:http_code not 200
表达式:如果最近连续4次取到的response_code值不是200,则触发报警
{url:url.status[{#URLNAME},http_code].last()}<>200 and 
{url:url.status[{#URLNAME},http_code].last(#1)}<>200 and 
{url:url.status[{#URLNAME},http_code].last(#2)}<>200 and 
{url:url.status[{#URLNAME},http_code].last(#3)}<>200

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图11)

6、创建URL监控图形

首页---配置---模板---自动发现规则---图形原型---创建图形原型

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图12)

【亲测】Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量(图13)

ok,Zabbix-5.4.0批量监控企业WEB应用URL实时状态与流量案例部署完成,适用于zabbix4.0--zabbix5.4.0。