From 3427b1f470a2c3949c3ea76ca660169330b1243f Mon Sep 17 00:00:00 2001 From: newrain Date: Fri, 25 Jun 2021 15:41:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4nginx=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- zabbix_agentd.d/nginx.conf | 5 +++ zabbix_agentd.d/script/dbMonitor.sh | 2 +- zabbix_agentd.d/script/nginxMonitor.sh | 51 ++++++++++++++++++++++++++ 4 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 zabbix_agentd.d/nginx.conf create mode 100644 zabbix_agentd.d/script/nginxMonitor.sh diff --git a/README.md b/README.md index f101290..a2afff1 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ zabbix 监控脚本 #### 软件架构 软件架构说明 - +centos 7 #### 安装教程 @@ -17,3 +17,4 @@ zabbix 监控脚本 2. 将代码放置在/etc/zabbix/目录下 3. 设置执行权限 4. zabbix客户端导入xml文件 +5. 客户端需安装工具 net-tools,bc \ No newline at end of file diff --git a/zabbix_agentd.d/nginx.conf b/zabbix_agentd.d/nginx.conf new file mode 100644 index 0000000..4103d3d --- /dev/null +++ b/zabbix_agentd.d/nginx.conf @@ -0,0 +1,5 @@ +UserParameter=nginxCheck.HeartBeat,sh /etc/zabbix/zabbix_agentd.d/script/nginxMonitor.sh Heartbeat +UserParameter=nginxCheck.ResultCode,sh /etc/zabbix/zabbix_agentd.d/script/nginxMonitor.sh ResultCode +UserParameter=nginxCheck.WbConn,sh /etc/zabbix/zabbix_agentd.d/script/nginxMonitor.sh WbConn +UserParameter=nginxCheck.Request[*],sh /etc/zabbix/zabbix_agentd.d/script/nginxMonitor.sh Request $1 +UserParameter=nginxCheck.RequestPath,sh /etc/zabbix/zabbix_agentd.d/script/nginxMonitor.sh RequestPath \ No newline at end of file diff --git a/zabbix_agentd.d/script/dbMonitor.sh b/zabbix_agentd.d/script/dbMonitor.sh index ad9437a..fa218f3 100644 --- a/zabbix_agentd.d/script/dbMonitor.sh +++ b/zabbix_agentd.d/script/dbMonitor.sh @@ -1,6 +1,6 @@ #!/usr/bin/bash -# os check +# db check # build 2021-06-16 replPasswd=123456 # zabbix传参 diff --git a/zabbix_agentd.d/script/nginxMonitor.sh b/zabbix_agentd.d/script/nginxMonitor.sh new file mode 100644 index 0000000..d303232 --- /dev/null +++ b/zabbix_agentd.d/script/nginxMonitor.sh @@ -0,0 +1,51 @@ +#!/usr/bin/bash + +# nginx check +# build 2021-06-20 + +accessLog=/var/log/nginx/access.log + +# 1、web服务器是否存活 #返回数值,并添加触发器报警 +function Heartbeat() { + curl 127.0.0.1 &>/dev/null + [ $? -ne 0 ] && echo 0 || echo 1 +} + +# 2、web响应是否正常 #返回数值,并添加触发器报警 +function ResultCode() { + rcode=$(curl -s -I 127.0.0.1 | awk 'NR==1{print $2}') + echo $rcode +} + +# 3、当前正在处理的请求 #返回数值 +function WbConn() { + s=$(netstat -n | grep ':80' | awk '/^tcp/ {++S[$NF]} END {for(a in S) print S[a]}') + a=0 + for i in $s; do + a=$(($a + $i)) + done + echo $a +} + +# 5、pv、uv #返回数值 +# 7、访问最多的ip地址 #返回字符串 +function Request() { + if [[ $1 == 'pv' || $1 == 'PV' ]]; then + num=$(awk '{print $1}' $accessLog | wc -l) + elif [[ $1 == 'uv' || $1 == 'UV' ]]; then + num=$(awk '{print $1}' $accessLog | sort -r | uniq | wc -l) + elif [[ $1 == 'top10' || $1 == 'TOP10' ]]; then + num=$(awk '{print $1}' $accessLog | sort -r | uniq -c | sort -n -r | head -10) + else + num=-1 + fi + echo $num +} + +#6、访问最多的页面 #返回字符串 +function RequestPath() { + rpath=$(awk '{print $7}' /var/log/nginx/access.log | sort -r | uniq -c | sort -n -r | head -1) + echo $rpath +} + +eval "$1 $2" \ No newline at end of file