zabbix监控top

参考网址:http://www.51testing.com/html/05/n-4456205.html?tdsourcetag=s_pcqq_aiomsg

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

五.

  

猜你喜欢

转载自www.cnblogs.com/jingzaixin/p/12410213.html