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高的进程,来判断原因。
换了一种方法
生成临时文件
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自动发现结合shell实现自动发现占用内存最大top10进程并监控其资源
- zabbix结合shell实现自动发现占用内存最大top10进程并监控其资源
- zabbix自动发现占用内存最大top10进程并监控资源
- zabbix自动发现结合shell实现自动发现占用内存最大top10进程并监控其资源 推荐
- zabbix 系统IO监控_自动发现
- zabbix自动发现规则之磁盘IO监控
- 分布式监控系统Zabbix3.2添加自动发现磁盘IO并注册监控
- 如何找出当前占用磁盘IO最多的进程
- 分布式监控系统Zabbix3.2添加自动发现磁盘IO并注册监控
- zabbix使用自动发现功能监控服务器各JVM进程状态
- zabbix使用自动发现功能监控服务器各JVM进程状态
- zabbix在一台服务器上监控多个java进程的实现 运用自动发现规则
- Zabbix低级发现结合jstat命令自动监控Java进程(jdk 1.8版本)
- zabbix自动发现与监控内存和CPU使用率最高的进程
- Zabbix+Python自动发现进程端口和进程名称
- 分布式监控系统Zabbix3.2添加自动发现磁盘IO并注册监控(推荐)
- zabbix自动发现磁盘并监控磁盘IO
- Zabbix使用自动发现功能监控服务器各JVM进程状态
- zabbix自动发现硬盘并监控其IO
- 利用Zabbix低级发现结合jstat命令自动监控Java进程