iostat
This commit is contained in:
parent
854af29f12
commit
2119c85dd0
3
iostat/iostat.conf
Normal file
3
iostat/iostat.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#iostat
|
||||||
|
UserParameter=iostat[*],/etc/zabbix/scripts/iostat.sh "none" "$1" "$2"
|
||||||
|
|
||||||
79
iostat/iostat.sh
Executable file
79
iostat/iostat.sh
Executable file
@ -0,0 +1,79 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
export LC_ALL=""
|
||||||
|
export LANG="en_US.UTF-8"
|
||||||
|
#
|
||||||
|
if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
|
||||||
|
##### DISCOVERY #####
|
||||||
|
DEVICES=`iostat -d | awk '{print $1}' | sed -e '/\(^nvme[0-9]n*[0-9]*\)\|^\([xhsv]*d[a-z][0-9]*\)$/!d'`
|
||||||
|
if [[ -n ${DEVICES} ]]; then
|
||||||
|
JSON="{ \"data\":["
|
||||||
|
SEP=""
|
||||||
|
for DEV in ${DEVICES}; do
|
||||||
|
JSON=${JSON}"$SEP{\"{#HDNAME}\":\"${DEV}\"}"
|
||||||
|
SEP=", "
|
||||||
|
done
|
||||||
|
JSON=${JSON}"]}"
|
||||||
|
echo ${JSON}
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
##### PARAMETERS #####
|
||||||
|
RESERVED="$1"
|
||||||
|
METRIC="$2"
|
||||||
|
DISK="$3"
|
||||||
|
CACHE_TTL="25"
|
||||||
|
CACHE_FILE="/tmp/zabbix.iostat.cache"
|
||||||
|
EXEC_TIMEOUT="2"
|
||||||
|
NOW_TIME=`date '+%s'`
|
||||||
|
##### RUN #####
|
||||||
|
if [ ${METRIC} = "read" ]; then
|
||||||
|
iostat -k | grep ${DISK} | head -n 1 | awk '{print $5}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [ ${METRIC} = "write" ]; then
|
||||||
|
iostat -k | grep ${DISK} | head -n 1 | awk '{print $6}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
##### CACHE #####
|
||||||
|
if [ -s "${CACHE_FILE}" ]; then
|
||||||
|
CACHE_TIME=`stat -c"%Y" "${CACHE_FILE}"`
|
||||||
|
else
|
||||||
|
CACHE_TIME=0
|
||||||
|
fi
|
||||||
|
DELTA_TIME=$((${NOW_TIME} - ${CACHE_TIME}))
|
||||||
|
#
|
||||||
|
if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then
|
||||||
|
sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME}))
|
||||||
|
elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then
|
||||||
|
echo "" >> "${CACHE_FILE}" # !!!
|
||||||
|
DATACACHE=`iostat -x 1 2 2>&1`
|
||||||
|
echo "${DATACACHE}" > "${CACHE_FILE}" # !!!
|
||||||
|
chmod 640 "${CACHE_FILE}"
|
||||||
|
fi
|
||||||
|
#
|
||||||
|
if [ ${METRIC} = "util" ]; then
|
||||||
|
cat ${CACHE_FILE} | grep ${DISK} | tail -n 1 | awk '{print $12}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [ ${METRIC} = "svctm" ]; then
|
||||||
|
cat ${CACHE_FILE} | grep ${DISK} | tail -n 1 | awk '{print $11}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [ ${METRIC} = "await" ]; then
|
||||||
|
cat ${CACHE_FILE} | grep ${DISK} | tail -n 1 | awk '{print $10}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [ ${METRIC} = "avgqu" ]; then
|
||||||
|
cat ${CACHE_FILE} | grep ${DISK} | tail -n 1 | awk '{print $9}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [ ${METRIC} = "rs" ]; then
|
||||||
|
cat ${CACHE_FILE} | grep ${DISK} | tail -n 1 | awk '{print $4}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
if [ ${METRIC} = "ws" ]; then
|
||||||
|
cat ${CACHE_FILE} | grep ${DISK} | tail -n 1 | awk '{print $5}'
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
2
iostat/sudoers
Normal file
2
iostat/sudoers
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Defaults:zabbix !requiretty
|
||||||
|
zabbix ALL=NOPASSWD: ALL
|
||||||
Loading…
x
Reference in New Issue
Block a user