随笔 - 633,  文章 - 0,  评论 - 13,  阅读 - 48万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

参考网址: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"}]}
复制代码

 

  TABLESPACE:获取前十的进程名(是以 RES 作为标准衡量资源消耗,可通过其他指标来监控)
  COUNT:得到TABLESPACE的行数(10)
  后面代码都是为了组装成zabbix能识别读取的标准数据格式。

四.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

 
复制代码

  

参数:
  process:进程名称(zabbix中会自动赋值)
  name:监控指标名(在zabbix模板中已经配置好)
  后面的代码都是逻辑判断,根据上面的参数信息,获取监控数值
  
 

   :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平台配置

posted on   大话人生  阅读(633)  评论(0编辑  收藏  举报
编辑推荐:
· .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语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示