Zabbix 自动发现规则和监控项原型
2021-05-21 本文已影响0人
Habit_1027
一、编写监控脚本和配置文件
监控脚本
[root@localhost linux]# vim iostat_zabbix.sh
#!/bin/bash
ZBX_DEV="$1"
ZBX_METRIC="$2"
IOSTAT_LOG=/tmp/iostat.log
IOSTAT_TMP_LOG=/tmp/iostat.tmp
# Check iostat util
if ! which iostat 2>&1>/dev/null; then
>&2 echo "Can't find 'iostat' binary in \$PATH"
>&2 echo "Make sure that you've installed 'sysstat' package"
exit 1
fi
# Check args
[[ $# -lt 1 ]] && { echo "Give some more arguments, please :)"; exit 1; }
# Create DiskIO Data file
if [ "$ZBX_DEV" = 'create' ]; then
iostat -dxk 1 10 > ${IOSTAT_TMP_LOG} && /bin/cp ${IOSTAT_TMP_LOG} ${IOSTAT_LOG}
[ $? -eq 0 ] && echo 1 || echo 0
exit 0
fi
# Discovering devices and spits out JSON
if [ "$ZBX_DEV" = 'discovery' ]; then
#!/bin/bash
ZBX_DEV="$1"
ZBX_METRIC="$2"
IOSTAT_LOG=/tmp/iostat.log
IOSTAT_TMP_LOG=/tmp/iostat.tmp
# Check iostat util
if ! which iostat 2>&1>/dev/null; then
>&2 echo "Can't find 'iostat' binary in \$PATH"
>&2 echo "Make sure that you've installed 'sysstat' package"
exit 1
fi
# Check args
[[ $# -lt 1 ]] && { echo "Give some more arguments, please :)"; exit 1; }
# Create DiskIO Data file
if [ "$ZBX_DEV" = 'create' ]; then
iostat -dxk 1 10 > ${IOSTAT_TMP_LOG} && /bin/cp ${IOSTAT_TMP_LOG} ${IOSTAT_LOG}
[ $? -eq 0 ] && echo 1 || echo 0
exit 0
fi
# Discovering devices and spits out JSON
if [ "$ZBX_DEV" = 'discovery' ]; then
# Discovering devices and spits out JSON
if [ "$ZBX_DEV" = 'discovery' ]; then
iostat -d | \
tail -n +4 |
awk 'BEGIN {
ORS="";
print "{\"data\":["}
/\d/ {printf "%s{\"%s\":\"%s\"}", separator, "{#DEVICENAME}", $1, separator = ","}
END {print "]}" }'
exit 0
fi
# Test iostat log
[[ ! -f "${IOSTAT_LOG}" ]] && echo "[m|ZBX_NOTSUPPORTED] [No such file ${IOSTAT_LOG}]" && exit 1
# Parse iostat file
function parse_iostat() {
grep -w ${ZBX_DEV} ${IOSTAT_LOG} | \
tr ',' '.' | \
awk -v field="$1" '
{sum+=$field; n++;}
END {if (n > 0) print sum/n;
else {print "[m|ZBX_NOTSUPPORTED] [Nodata.]" > "/dev/stderr"; exit 1};}'
}
# Exec parse funcion with number of column
case ${ZBX_METRIC} in
rrqm/s ) parse_iostat '2';;
wrqm/s ) parse_iostat '3';;
r/r ) parse_iostat '4';;
w/r ) parse_iostat '5';;
rkb/s ) parse_iostat '6';;
wkb/s ) parse_iostat '7';;
avgrq-sz ) parse_iostat '8';;
avgqu-sz ) parse_iostat '9';;
await ) parse_iostat '10';;
r_await ) parse_iostat '11';;
w_await ) parse_iostat '12';;
svctm ) parse_iostat '13';;
util ) parse_iostat '14';;
* ) echo "[m|ZBX_NOTSUPPORTED] [Unsupported item key.]" && exit 1;;
esac
配置文件

二、创建自动发现规则






更多监控项原型

三、查看最新数据
