虚拟化容器,大数据,DBA,中间件,监控。

zabbix自动发现url以及对http返回状态码监控实现

13 01月
作者:admin|分类:应用管理

扩展

http 请求方法以及返回状态码的类型和含义

服务器状态码

1200 OK表示从客户端发来的请求在服务器端被正常处理了。

2204 No Content 该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。

3206 Partial Content 该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。

4301 Moved Permanently 永久性重定向。该状态码表示请求的资源已被分配了新的URL,以后应使用资源现在所指的URL。

5302 Found 临时性重定向。该状态码表示请求的资源已被分配了新的URL ,希望用户(本次)能使用新的URL访问。

6303 See Other 该状态码表示由于请求对应的资源存在着另一个URL,应使用GET方法定向获取请求的资源。

7304 Not Modified 该状态码表示客户端发送附带条件的请求时,服务端允许请求访问资源。

8307 Temporary Redirect 临时重定向。不会从POST变成GET。

9400 Bad Request 表示请求报文中存在语法错误。

10401 Unauthorized 表示发送的请求需要有通过HTTP认证(BASIC、DIGEST认证)的认证信息。

11403 Forbidden 表示对请求资源的访问被服务器拒绝了。

12404 Not Found 服务器上没有请求的资源。

13500 Internal Server Error 表明服务器端在执行请求时发生了错误。

14503 Service Unavailable 表明服务器暂时维护等,无法处理请求。

目的:

批量监控业务url的返回码,通过返回码的监控来判断业务的好坏。

解决方案:

使用zabbix的discovery功能来实现监控。
1、安装zabbix,跳过
2、通过脚本实现:
cd /usr/local/zabbix/etc/zabbix_scripts.d/
vim web_site_code_status.sh

#!/bin/bash
source /etc/profile >/dev/null 2>&1
WEB_SITE_discovery () { 
        WEB_SITE=($(grep -v "^#" /usr/local/zabbix/etc/zabbix_script.d/WEBURL.txt))
        printf '{\n'
        printf '\t"data":[\n'
for((i=0;i<${ #WEB_SITE[@]};++i))
{ 
                num=$(echo $((${ #WEB_SITE[@]}-1)))
                if [[ "$i" != ${ num} ]]
                then
                        printf "\t\t{ \n"
                        printf "\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$i]}\"},\n"
                else
                        printf "\t\t{ \n"
                        printf "\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$num]}\"}]}\n"
                fi
}
}

web_site_code () { 
#下面注释的是也可以使用域名+端口号
# host=$(echo "$1"|awk -F "/" '{print $3}')
# port=$(echo "$1"|awk -F "/" '{print $3}'|awk -F':' '{print $2}')
# if [[ -z $port ]]
# then
# ntlocal="127.0.0.1"
# else
# ntlocal="127.0.0.1:$port"
# fi
# http_uri=$(echo "$1"|awk -F "/" '{for(i=4;i<=NF;i++) printf "/" $i;printf "\n"}')
#        /usr/bin/curl -H "Host:$host" -o /dev/null -s -w %{ http_code} $ntlocal${ http_uri}
    /usr/bin/curl -I "$1" 2> /dev/null | grep 'HTTP' | awk '{print $2}'
}

case "$1" in
        web_site_discovery)
                WEB_SITE_discovery
        ;;
        web_site_code)
                web_site_code $2
        ;;
        *)
        echo "Usage:$0 {web_site_discovery|web_site_code URL}"
        ;;
esac

3、创建url列表:vim WEBURL.txt

http://www.baidu.com
www.df.com
www.sdfdsfa.com
www.sdfsd.cn

注意:这里也可以在后面加端口号
4、在zabbix_agentd.conf中添加相关的key

Include=/data/usr/local/zabbix/etc/zabbix_agentd.conf.d/* UnsafeUserParameters=1 UserParameter=web.site.discovery,/data/usr/local/zabbix/scripts/web_site_code_status.sh web_site_discovery UserParameter=web.site.code[*],/data/usr/local/zabbix/scripts/web_site_code_status.sh web_site_code $1 


或者:
在zabbix_agentd.conf.d目录下创建文件,

web_site_discovery.conf

UserParameter=web.site.discovery,/usr/local/zabbix/etc/zabbix_script.d/web_site_code_status web_site_discovery
UserParameter=web.site.code[*],/usr/local/zabbix/etc/zabbix_script.d/web_site_code_status web_site_code $1 

5、重启agent就可以实现了。
systemctl restart zabbix-agent
6、zabbix仪表板配置:

先创建一个模板
7、设置自动发现规则,键值为发现url的keys

8、设置监控原型,键值为httpcode的keys,后面括号里是发现的url列表的前缀说明,如图:


9、设置触发器类型:

10、设置图形原型:

11、到此为止全部完成,等待看图

浏览343 评论0
返回
目录
返回
首页
五、nginx的安装部署 zabbix 监控web-url是否正常