参考网址: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平台配置
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构