您的位置:首页 > 其它

zabbix 自动发现 占用io最多的前十进程

2017-01-05 22:50 134 查看
因为过程中碰到sudo -u zabbix pidstat -d 无法显示信息,所以无法获取数据。
换了一种方法
生成临时文件

cat pidsta.sh
#!/bin/bash
while [ true ]; do
/bin/sleep 2
pidstat -d|awk 'NR>3'|awk '{print $4,$6}'|awk '{a[$2]+=$1} END{for(i in a) print a[i],i}'|sort -nr -k 1|head -n 10 >/tmp/pidsta
done
nohup sh pidsta.sh &
2.获取进程名
cat pidtest.sh
#!/bin/bash
#Fucation:mysql low-level discovery
#Script_name mysql_low_discovery.sh
pidtest() {
port=($(cat /tmp/pidsta|awk '{print $2}'))
printf '{\n'
printf '\t"data":[\n'
for key in ${!port[@]}
do
if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
printf '\t {\n'
printf "\t\t\t\"{#PIDSTA}\":\"${port[${key}]}\"},\n"
else [[ "${key}" -eq "((${#port[@]}-1))" ]]
printf '\t {\n'
printf "\t\t\t\"{#PIDSTA}\":\"${port[${key}]}\"}\n"
fi
done
printf '\t ]\n'
printf '}\n'
}
$1
3.获取对应的数值
cat pidnum.sh
#!/bin/bash
cat /tmp/pidsta|grep -w $1|awk '{print $1}'
4.cat pidtest.conf
UserParameter=pidtest.discovery[*],/bin/bash /usr/local/zabbix/bin/pidtest.sh $1
UserParameter=pidtest.num[*],/bin/bash /usr/local/zabbix/bin/pidnum.sh $1
5.创建模板就略过了。
做这个的原因是有一台从mysql,到某个时刻io就升高,持续几分钟就恢复正常,想找出这几分钟io高的进程,来判断原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  zabbix