概述
由于生产环境有大量url需要监控,形式如http://ip:端口/login,要求url状态不为200即报警并且获得响应时间(url可改成自己应用里的url),如果用zabbix,一个一个手动添加模板,会造成大量重复工作,如果利用脚本+mail,则无法图形呈现。所以这里利用zabbix的discovery功能来实现应用的监控。
一、zabbix客户端配置
1、修改zabbix-agent端的配置文件
# vi /etc/zabbix/zabbix_agentd.conf=============================================================================================UnsafeUserParameters=1# 把这个值改为1,因为自动发现的脚本中有一些特殊字符,被认为是不安全的因素,1表示允许这些字符存在# 如果不改,后期在Server端就会报错,原因就在这里=============================================================================================# vi /etc/zabbix/zabbix_agentd.d/url.conf=============================================================================================# 第一行是自动发现脚本的路径UserParameter=url.discovery,/etc/zabbix/zabbix_agentd.d/url_discovery.sh# 第二行是检测URL状态的脚本路径UserParameter=url.status[*],/etc/zabbix/zabbix_agentd.d/url_status.sh $1 $2=============================================================================================
2、自动发现脚本(url_discovery.sh)
获取监控URL,输出格式为json格式,用于zabbix自动发现TCP
#!/bin/bashWEB_SITE=($(grep -v "^#" /data/zabbix/WEB.txt))length=${#WEB_SITE[@]}printf "{"printf ''""data":["for ((i=0;i
3、监控项脚本(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/bashurl=$1status=$2http_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
4、监控URL列表(/etc/zabbix/WEB.txt)
#weburlhttp://服务器IP:8050/pass/login....
5、授权并重启zabbix客户端
chown -R zabbix:zabbix /etc/zabbixchmod -R 755 /etc/zabbixsystemctl restart zabbix-agent
6、在zabbix服务端验证并测试
zabbix_get -s localhost -p 10050 -k url.discovery
![b0cf953a4dbb6d567ce72bb314274475.png](https://i-blog.csdnimg.cn/blog_migrate/24e234a43b4bc572b5b61b71c1616605.jpeg)
二、zabbix-server的web端操作
1、创建模板
配置--模板--创建模板
![641bbddd0be6ed263dc1e9ae0795173e.png](https://i-blog.csdnimg.cn/blog_migrate/fa00775e72fc17b060b892eb5d7fa003.jpeg)
2、配置自动发现规则
2.1、创建发现规则
配置-模板-创建发现规则
名称:WEB URL discovery键值:url.discovery
![747d2a18f3b4befe7e8895eead56f959.png](https://i-blog.csdnimg.cn/blog_migrate/f64eeee099a191d1a1856710e5f8aeb3.jpeg)
2.2、创建监控项原型
在自动发现规则里选创建监控项原型。
注意,这是在模板的自动发现规则里面的监控项原型定义的监控项 并不是 模板里面的监控项 两者是不同的,当你把监控项原型定义之后,会自动发现里面的规则,然后自动在监控项里面添加
名称: {#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
![e005f9f915b18e82994b3ea42b2dea1b.png](https://i-blog.csdnimg.cn/blog_migrate/b072d563748fa83697443c9f5827eeb5.jpeg)
2.3、最终的监控项原型
![aa9e600af14bbf703813ee3842e61f67.png](https://i-blog.csdnimg.cn/blog_migrate/d9eb11bfc5a723786cea201314773ada.jpeg)
3、模板关联主机
![63496893b24a36e5db67dc32ff07350d.png](https://i-blog.csdnimg.cn/blog_migrate/0b1a4f01c36e82000ae5cb8d192abb26.jpeg)
4、测试
4.1、查看监控项
配置-主机-监控项,可以看到我们定义的动态的key已经生成,失效的key到期会自动删除
![110f6beb252cba9d3e4fee069f92b14b.png](https://i-blog.csdnimg.cn/blog_migrate/87d57301565c18f929e090c2a10292cb.jpeg)
4.2、查看最新数据
监测-最新数据,也可以看到已经获取到数据
![df036b31479e65613376fcbe6dc82c8b.png](https://i-blog.csdnimg.cn/blog_migrate/e818449d448db33fc2dfcb6fd2614e02.jpeg)
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
![dac03c60d4569c540527f8041d0c2e23.png](https://i-blog.csdnimg.cn/blog_migrate/39437757531d4d0084c5f0952f7d0f43.jpeg)
6、配置图形
配置-模板-自动发现规则-图形原型-创建图形原型
![9bece57312bf6691cebb6ccad2fc476b.png](https://i-blog.csdnimg.cn/blog_migrate/a28542b5c77dacc2113a83b2640e61f8.jpeg)
监测-图形,可以查看图形
![2b26cf8c47e8d13d60282f6abaaac9e2.png](https://i-blog.csdnimg.cn/blog_migrate/25bdaeb4576fb2b4b05e79413e7db955.jpeg)
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
![ed39e62aaad20d02d81a8f7e4deb0835.gif](https://i-blog.csdnimg.cn/blog_migrate/38b4eecba07d17a1f607fa738c5dda4e.gif)