2.
根据现有的域名监控
参考 zabbix应用之nginx统一监控
accepts,handled,requests,active,reading,writing,waiting
cat nginx_site_discovery.conf
UserParameter
=
nginxSiteDiscovery,bash
/
usr
/
local
/
zabbix
/
bin
/
nginx_monitor.sh nginxSiteDiscovery
UserParameter
=
getNginxStatus[
*
],bash
/
usr
/
local
/
zabbix
/
bin
/
nginx_monitor.sh getNginxStatus
"$1"
"$2"
cat
/
usr
/
local
/
zabbix
/
bin
/
nginx_monitor.sh
AGENT_CONF
=
"/usr/local/zabbix/etc/zabbix_agentd.conf"
NGINX_SITE_CONF
=
"/usr/local/zabbix/scripts/nginx_site.conf"
ZBX_SENDER
=
"/usr/local/bin/zabbix_sender"
FUNCTION
=
$
1
HOST_NAME
=
$
2
NGINX_SITE
=
$
3
CURL
=
"/usr/bin/curl"
TIMEOUT
=
30
function nginxSiteDiscovery()
{
nginx_site
=
($(grep
'^[^#]'
${NGINX_SITE_CONF}))
max_index
=
$[${
printf
'{\n'
printf
'\t"data":['
for
key
in
`seq
-
s
' '
0
$max_index`
do
printf
'\n\t\t{'
printf
"\"{#NGINX_SITE}\":\"${nginx_site[${key}]}\"}"
if
[ $key
-
ne $max_index ];then
printf
","
fi
done
printf
'\n\t]\n'
printf
'}\n'
}
function getNginxStatus()
{
nginx_status_url
=
"${NGINX_SITE}/nginx_status"
nginx_status_file
=
"/tmp/nginx_status_$(echo ${NGINX_SITE} | sed 's#^http.*://##; s#/#_#g').log"
:>
"$nginx_status_file"
${CURL}
-
s
-
-
connect
-
timeout ${TIMEOUT}
"$nginx_status_url"
2
>&
1
| tee
"$nginx_status_file"
line_num
=
$(cat
"$nginx_status_file"
| wc
-
l)
[ $line_num
-
ne
4
] && { echo
"ERROR: $nginx_status_file is not correct."
; exit
1
;}
active
=
$(cat
"$nginx_status_file"
| grep
'Active'
| awk
'{print $NF}'
)
reading
=
$(cat
"$nginx_status_file"
| grep
'Reading'
| awk
'{print $2}'
)
writing
=
$(cat
"$nginx_status_file"
| grep
'Writing'
| awk
'{print $4}'
)
waiting
=
$(cat
"$nginx_status_file"
| grep
'Waiting'
| awk
'{print $6}'
)
accepts
=
$(cat
"$nginx_status_file"
| awk NR
=
=
3
| awk
'{print $1}'
)
handled
=
$(cat
"$nginx_status_file"
| awk NR
=
=
3
| awk
'{print $2}'
)
requests
=
$(cat
"$nginx_status_file"
| awk NR
=
=
3
| awk
'{print $3}'
)
echo
"Sending the data to zabbix server..."
cat << EOF | ${ZBX_SENDER}
-
c ${AGENT_CONF}
-
i
-
"${HOST_NAME}"
"nginx_status[$NGINX_SITE,active]"
"${active}"
"${HOST_NAME}"
"nginx_status[$NGINX_SITE,reading]"
"${reading}"
"${HOST_NAME}"
"nginx_status[$NGINX_SITE,writing]"
"${writing}"
"${HOST_NAME}"
"nginx_status[$NGINX_SITE,waiting]"
"${waiting}"
"${HOST_NAME}"
"nginx_status[$NGINX_SITE,accepts]"
"${accepts}"
"${HOST_NAME}"
"nginx_status[$NGINX_SITE,handled]"
"${handled}"
"${HOST_NAME}"
"nginx_status[$NGINX_SITE,requests]"
"${requests}"
EOF
}
[ $
case $FUNCTION
in
nginxSiteDiscovery|getNginxStatus)
$FUNCTION
;;
*
)
echo
"ERROR: Bad parameters."
exit
1
;;
esac