参考网址:http://www.51testing.com/html/05/n-4456205.html?tdsourcetag=s_pcqq_aiomsg
https://blog.csdn.net/oqqJohn1234567890/article/details/85330766
一.top.sh
1.在root目录下创建autotop目录:mkdir autotop
2.在autotop路径下创建top.sh文件
cd autotop
touch top.sh
3.编辑 top.sh文件:
vim /root/autotop/top.sh
内容: top -n 1 -b >/tmp/autotop/top.txt
:wq! 保存
4.复制权限给top.sh可执行权限:
chmod +x top.sh
5.在/tmp下创建autotop文件:
cd /tmp
mkdir autotop
6.进入到/root/autotop/路径下执行top.sh文件:
cd /root/autotop/
./top.sh
7.查看/tmp/autotop/top.txt文件:
cat /tmp/autotop/top.txt
二.定时运行top.sh
crontab -e
*/1 * * * * /root/autotop/top.sh > /dev/null 分 时 日 月 周(五个星号对应表示时间单位;*/1:每分钟执行一次脚本)
crontab -l :查看定时任务
三.check_process.sh:
cd /root/autotop/
vim check_process.sh
TABLESPACE=`tail -n +8 /tmp/autotop/top.txt|awk '{a[$NF]+=$6}END{for(k in a)print a[k]/1024,k}'|sort -gr|head -10|cut -d" " -f2`
COUNT=`echo "$TABLESPACE" |wc -l`
INDEX=0
echo '{"data":['
echo "$TABLESPACE" | while read LINE; do
echo -n '{"{#PROCESSNAME}":"'$LINE'"}'
INDEX=`expr $INDEX + 1`
if [ $INDEX -lt $COUNT ]; then
echo ','
fi
done
echo ']}'
:wq! 保存退出
chmod +x check_process.sh
./check_process.sh
运行结果如:
{"data":[ {"{#PROCESSNAME}":"mysqld"}, {"{#PROCESSNAME}":"zabbix_se+"}, {"{#PROCESSNAME}":"/opt/lamp+"}, {"{#PROCESSNAME}":"java"}, {"{#PROCESSNAME}":"lightdm-g+"}, {"{#PROCESSNAME}":"systemd-j+"}, {"{#PROCESSNAME}":"php-fpm7"}, {"{#PROCESSNAME}":"dockerd-l+"}, {"{#PROCESSNAME}":"docker-co+"}, {"{#PROCESSNAME}":"X"}]}
四.process_monitor.sh:
cd /root/autotop/
vim process_monitor.sh
process=$1
name=$2
case $2 in
mem_res)
echo "`tail -n +8 /tmp/autotop/top.txt|awk '{a[$NF]+=$6}END{for(k in a)print a[k]/1024,k}'|grep "$process"|cut -d" " -f1`"
;;
cpu_p)
echo "`tail -n +8 /tmp/autotop/top.txt|awk '{a[$NF]+=$9}END{for(k in a)print a[k],k}'|grep "$process"|cut -d" " -f1`"
;;
mem_virt)
echo "`tail -n +8 /tmp/autotop/top.txt|awk '{a[$NF]+=$5}END{for(k in a)print a[k]/1024,k}'|grep "$process"|cut -d" " -f1`"
;;
mem_p)
echo "`tail -n +8 /tmp/autotop/top.txt|awk '{a[$NF]+=$10}END{for(k in a)print a[k],k}'|grep "$process"|cut -d" " -f1`"
;;
pid)
echo "`tail -n +8 /tmp/autotop/top.txt|awk '{a[$NF]+=$1}END{for(k in a)print a[k],k}'|grep "$process"|cut -d" " -f1`"
;;
runtime)
echo "`tail -n +8 /tmp/autotop/top.txt|awk '{a[$NF]+=$11}END{for(k in a)print a[k],k}'|grep "$process"|cut -d" " -f1`"
;;
*)
echo "Error input:"
;;
esac
exit 0
:wq! 保存退出
chmod +x process_monitor.sh
./process_monitor.sh
五.修改zabbix_agentd.conf,使得zabbix能够调用脚本:
find / -name zabbix_agentd.conf
找到路径如下:
/var/lib/docker-latest/overlay2/465e5fa0796af9136fcdb548e2e35b05c498b454b9261e53913ca930d409d561/diff/etc/zabbix/zabbix_agentd.conf
/var/lib/docker-latest/overlay2/4d424828878104ca3ceffe3c9b47abc64d24371404aa93fe12693be6c9e6303f/diff/etc/zabbix/zabbix_agentd.conf
/var/lib/docker-latest/overlay2/4d424828878104ca3ceffe3c9b47abc64d24371404aa93fe12693be6c9e6303f/merged/etc/zabbix/zabbix_agentd.conf
选择第一个编辑:
vim /var/lib/docker-latest/overlay2/465e5fa0796af9136fcdb548e2e35b05c498b454b9261e53913ca930d409d561/diff/etc/zabbix/zabbix_agentd.conf
#top10_process UserParameter=process.discovery,/root/autotop/check_process.sh UserParameter=process.resource[*],/root/autotop/process_monitor.sh $1 $2
:wq! 保存退出
六.重启 zabbix_agentd:
docker stop zabbix-agent
docker start zabbix-agent
七.zabbix平台配置