天行健,君子以自强不息;地势坤,君子以厚德载物
当前位置:网站首页 > Linux运维 > 正文

基于zabbix4.0--shell脚本批量监控应用URL及告警

作者:jinxijing发布时间:2020-03-08分类:Linux运维浏览:56评论:0


导读:基于zabbix4.0--shell脚本批量监控应用URL及告警概述由于生产环境有大量url需要监控,形式如http://ip:端口/login,要求url状态不为200即报警并且...

基于zabbix4.0--shell脚本批量监控应用URL及告警

概述

由于生产环境有大量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/bash
WEB_SITE=($(grep -v "^#" /data/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"

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/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

4、监控URL列表(/etc/zabbix/WEB.txt)

#weburl
http://
服务器IP:8050/pass/login
....

5、授权并重启zabbix客户端

chown -R zabbix:zabbix /etc/zabbix
chmod -R 755 /etc/zabbix
systemctl restart zabbix-agent

 

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

zabbix_get -s localhost  -p 10050 -k url.discovery

 

二、zabbix-server的web端操作

1、创建模板

配置--模板--创建模板

2、配置自动发现规则

2.1、创建发现规则

配置-模板-创建发现规则

名称:WEB URL discovery
键值:url.discovery

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

2.3、最终的监控项原型

 

3、模板关联主机

4、测试

4.1、查看监控项

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

4.2、查看最新数据

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

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

 

6、配置图形

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

 

监测-图形,可以查看图形

标签:zabbix4.0hell脚本监控应用URL告警


持是利
坚就胜