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
        

配置文件

image.png

二、创建自动发现规则

image.png image.png image.png image.png image.png
更多监控项原型
image.png

三、查看最新数据

image.png
上一篇 下一篇

猜你喜欢

热点阅读