老谢博客

  • 首页
  • WordPress
  • 网络技术
  • 乱七八糟
  • 运维技术
  • 给我留言
  • 关于老谢

Zabbix 3.2 agentd自动发现监控资源占用TOP 10进程

分类:运维技术日期:2018-06-13 - 19:34:41作者:老谢

创建top.sh
#!/bin/sh
top -n 1 -b> /tmp/top.txt

#!/bin/sh top -n 1 -b> /tmp/top.txt

#注: 所有脚本请放至/usr/local/zabbix/share/scripts中
#注: 该脚本的意思是执行一次top命令并将结果重定向到top.txt

crontab -e
*/1 * * * * /usr/local/zabbix/share/scripts/top.sh > /dev/null

crontab -e */1 * * * * /usr/local/zabbix/share/scripts/top.sh > /dev/null

#注: 使用crond每分钟执行一次脚本,输出最新top数据到top.txt

创建check_process.sh获取进程名
#!/bin/bash
TABLESPACE=`tail -n +8 /tmp/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 ']}'

#!/bin/bash TABLESPACE=`tail -n +8 /tmp/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 ']}'

  注: 最关键的是tail -n +8 /tmp/top.txt|awk ‘{a[NF]+=6}END{for(k in a)print a[k]/1024,k}’|sort -gr|head -10|cut -d” ” -f2这条命令:这条命令的意思是从top.txt文件中取出从第八行到末尾行的数据,然后使用awk对这些数据进行累加,效果是以最后一列为关键字,每个关键字对应的第6列的数值进行累加,输出第六列数据的累加结果和最后一列数据,然后使用sort进行排序,注意这里的参数是使用-gr而不是使用-nr是因为获取到的第六列的值是以KB为单位的,假如某进程占用内存大于10G的话,将会使用科学记数法计数,sort -nr参数无法对科学记数法进行计数,需要将参数改成-gr才行,其中的-r是进行反向排序,同时为了防止zabbix获取到该值是科学记数法获取的值从而无法识别,先将该值/1024将单位变成MB,当zabbix获取到数据后再*1024*1024将该值还原成BYTE单位。head -10是取出占用内存最大的十个进程,然后使用cut对数据进行切分,获得十个进程的进程名。

  将获取到的十个进程名进行json格式化的输出,输出结果如下:

[root@localhost scripts]# ./check_process.sh
{"data":[
{"{#PROCESSNAME}":"php-fpm"},
{"{#PROCESSNAME}":"zabbix_agentd"},
{"{#PROCESSNAME}":"sshd"},
{"{#PROCESSNAME}":"rsyslogd"},
{"{#PROCESSNAME}":"mingetty"},
{"{#PROCESSNAME}":"crond"},
{"{#PROCESSNAME}":"bash"},
{"{#PROCESSNAME}":"mysqld_safe"},
{"{#PROCESSNAME}":"init"},
{"{#PROCESSNAME}":"udevd"}]}

[root@localhost scripts]# ./check_process.sh {"data":[ {"{#PROCESSNAME}":"php-fpm"}, {"{#PROCESSNAME}":"zabbix_agentd"}, {"{#PROCESSNAME}":"sshd"}, {"{#PROCESSNAME}":"rsyslogd"}, {"{#PROCESSNAME}":"mingetty"}, {"{#PROCESSNAME}":"crond"}, {"{#PROCESSNAME}":"bash"}, {"{#PROCESSNAME}":"mysqld_safe"}, {"{#PROCESSNAME}":"init"}, {"{#PROCESSNAME}":"udevd"}]}

#注:本例是以 RES 作为标准衡量资源消耗,可通过其他指标来监控

创建process_monitor.sh获取资源消耗
#!/bin/sh
process=$1
name=$2
case $2 in
mem)
echo "`tail -n +8 /tmp/top.txt|awk '{a[$NF]+=$6}END{for(k in a)print a[k]/1024,k}'|grep "$process"|cut -d" " -f1`"
;;
cpu)
echo "`tail -n +8 /tmp/top.txt|awk '{a[$NF]+=$9}END{for(k in a)print a[k],k}'|grep "$process"|cut -d" " -f1`"
;;
*)
echo "Error input:"
;;
esac
exit 0

#!/bin/sh process=$1 name=$2 case $2 in mem) echo "`tail -n +8 /tmp/top.txt|awk '{a[$NF]+=$6}END{for(k in a)print a[k]/1024,k}'|grep "$process"|cut -d" " -f1`" ;; cpu) echo "`tail -n +8 /tmp/top.txt|awk '{a[$NF]+=$9}END{for(k in a)print a[k],k}'|grep "$process"|cut -d" " -f1`" ;; *) echo "Error input:" ;; esac exit 0

  本地执行脚本测试:

[root@localhost scripts]# ./process_monitor.sh php-fpm cpu
0
[root@localhost scripts]# ./process_monitor.sh php-fpm mem
6.0752

[root@localhost scripts]# ./process_monitor.sh php-fpm cpu 0 [root@localhost scripts]# ./process_monitor.sh php-fpm mem 6.0752

编辑zabbix_agentd.conf

#增加以下UserParameter字段

UserParameter=process.discovery,/usr/local/zabbix/share/scripts/check_process.sh
UserParameter=process.resource[*],/usr/local/zabbix/share/scripts/process_monitor.sh $1 $2

UserParameter=process.discovery,/usr/local/zabbix/share/scripts/check_process.sh UserParameter=process.resource[*],/usr/local/zabbix/share/scripts/process_monitor.sh $1 $2

#注:配置完成后重启zabbix_agentd

zabbix server上抓取测试
[root@zabbix-server bin]# ./zabbix_get -s xx.xx.xx.xx -k "process.discovery"
{"data":[
{"{#PROCESSNAME}":"php-fpm"},
{"{#PROCESSNAME}":"zabbix_agentd"},
{"{#PROCESSNAME}":"sshd"},
{"{#PROCESSNAME}":"rsyslogd"},
{"{#PROCESSNAME}":"mingetty"},
{"{#PROCESSNAME}":"crond"},
{"{#PROCESSNAME}":"bash"},
{"{#PROCESSNAME}":"mysqld_safe"},
{"{#PROCESSNAME}":"init"},
{"{#PROCESSNAME}":"udevd"}]}
[root@zabbix-server bin]# ^C
[root@zabbix-server bin]# ./zabbix_get -s xx.xx.xx.xx -k "process.resource[php-fpm,mem]"
6.0752
[root@zabbix-server bin]# ./zabbix_get -s xx.xx.xx.xx -k "process.resource[php-fpm,cpu]"
0

[root@zabbix-server bin]# ./zabbix_get -s xx.xx.xx.xx -k "process.discovery" {"data":[ {"{#PROCESSNAME}":"php-fpm"}, {"{#PROCESSNAME}":"zabbix_agentd"}, {"{#PROCESSNAME}":"sshd"}, {"{#PROCESSNAME}":"rsyslogd"}, {"{#PROCESSNAME}":"mingetty"}, {"{#PROCESSNAME}":"crond"}, {"{#PROCESSNAME}":"bash"}, {"{#PROCESSNAME}":"mysqld_safe"}, {"{#PROCESSNAME}":"init"}, {"{#PROCESSNAME}":"udevd"}]} [root@zabbix-server bin]# ^C [root@zabbix-server bin]# ./zabbix_get -s xx.xx.xx.xx -k "process.resource[php-fpm,mem]" 6.0752 [root@zabbix-server bin]# ./zabbix_get -s xx.xx.xx.xx -k "process.resource[php-fpm,cpu]" 0

导入模板

点击下载

#参考自:https://blog.csdn.net/ybx13218464908/article/details/47819401

原文地址 : https://www.xj123.info/7178.html

本站遵循 : 署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5)

版权声明 : 原创文章转载时,请务必以超链接形式标明文章原始出处

Tags: linux , zabbix
  • 上一篇:Zabbix 3.2 agentd使用自带模板监控MySQL性能
  • 下一篇:Zabbix Proxy进程管理bash脚本
1条评论
  1. 企业搜索软件 说:

    下载了, 希望用得上

    POST:2018-08-26 12:53 回复
发表评论 点击取消评论.

*必填

*必填

  • 文章归档
  • 子网计算
  • 我的共享
  • 锻炼计划
  • 给我留言
  • 关于老谢
2025 年 6 月
一 二 三 四 五 六 日
 1
2345678
9101112131415
16171819202122
23242526272829
30  
« 5 月    

最新文章

  • 认知,是否是一座大山?当架构决策变成配置清单比价
  • 重装博客服务器环境
  • 特斯拉24款标续 Model Y 2万公里使用体验
  • 接盘的傻子
  • 小牛us电瓶指示灯闪三次不上电
  • 一次还不错的小米售后体验
  • 装台1600元办公主机
  • 2021好久没更新博客
  • Zabbix监控oxidized备份状态
  • Zabbix 5.0 LTS版本MySQL表分区及编译安装随记

最新评论

  • zwwooooo:类似以前做网站开发时,一开始有自...
  • 老陳网志:有点高端,像我们整点nas玩玩就够...
  • springwood:自从 CentOS 不维护之后,我换 U...
  • 大D:难都搞下来了,那就更得YM了
  • 大D:只能是YM了,谢总牛啊
  • 灰常记忆:经济不好 今年我也换了机器 一...
  • 大峰:这是海外服务器嘛?速度挺快的。
  • 大D:只能单走一个6了哈哈哈
  • zwwooooo:买特斯拉和买iPhone的人群其实相似...
  • 平安家属子痕:一直坚持油车,看你写的心里有...

日志存档

  • 2025 年 5 月
  • 2025 年 4 月
  • 2025 年 3 月
  • 2024 年 9 月
  • 2024 年 5 月
  • 2024 年 1 月
  • 2023 年 4 月
  • 2021 年 10 月
  • 2021 年 4 月
  • 2021 年 3 月
  • 2021 年 2 月
  • 2020 年 11 月
  • 2020 年 9 月
  • 2020 年 5 月
  • 2020 年 4 月
  • 2020 年 3 月
  • 2020 年 1 月
  • 2019 年 12 月
  • 2019 年 10 月
  • 2019 年 7 月
  • 2019 年 6 月
  • 2019 年 5 月
  • 2019 年 3 月
  • 2019 年 1 月
  • 2018 年 12 月
  • 2018 年 11 月
  • 2018 年 10 月
  • 2018 年 7 月
  • 2018 年 6 月
  • 2018 年 5 月
  • 2018 年 4 月
  • 2018 年 3 月
  • 2018 年 1 月
  • 2017 年 10 月
  • 2017 年 9 月
  • 2017 年 8 月
  • 2017 年 7 月
  • 2017 年 2 月
  • 2017 年 1 月
  • 2016 年 12 月
  • 2016 年 11 月
  • 2016 年 10 月
  • 2016 年 7 月
  • 2016 年 6 月
  • 2016 年 4 月
  • 2016 年 2 月
  • 2016 年 1 月
  • 2015 年 12 月
  • 2015 年 10 月
  • 2015 年 9 月
  • 2015 年 7 月
  • 2015 年 5 月
  • 2015 年 4 月
  • 2015 年 3 月
  • 2015 年 2 月
  • 2015 年 1 月
  • 2014 年 12 月
  • 2014 年 10 月
  • 2014 年 9 月
  • 2014 年 8 月
  • 2014 年 7 月
  • 2014 年 6 月
  • 2014 年 5 月
  • 2014 年 4 月
  • 2014 年 3 月
  • 2014 年 2 月
  • 2014 年 1 月
  • 2013 年 12 月
  • 2013 年 11 月
  • 2013 年 10 月
  • 2013 年 9 月
  • 2013 年 8 月
  • 2013 年 7 月
  • 2013 年 6 月
  • 2013 年 5 月
  • 2013 年 4 月
  • 2013 年 3 月
  • 2013 年 2 月
  • 2013 年 1 月
  • 2012 年 12 月
  • 2012 年 11 月
  • 2012 年 9 月
  • 2012 年 8 月
  • 2012 年 7 月
  • 2012 年 6 月
  • 2012 年 5 月
  • 2012 年 4 月
  • 2012 年 3 月
  • 2012 年 2 月
  • 2012 年 1 月
  • 2011 年 12 月
  • 2011 年 11 月
  • 2011 年 10 月
  • 2011 年 9 月
  • 2011 年 8 月
  • 2011 年 7 月
  • 2011 年 6 月
  • 2011 年 5 月
  • 2011 年 4 月
  • 2011 年 3 月
  • 2011 年 2 月
  • 2011 年 1 月
  • 2010 年 12 月
  • 2010 年 11 月
  • 2010 年 10 月
  • 2010 年 9 月
  • 2010 年 8 月
  • 2010 年 7 月

W3C

  • XHTML 1.0 Transitional
  • CSS level 3
  • Google+
Copyright © 2010-2025 老谢博客 All rights reserved.
Gzipped 76.5% | Optimized loading 48 queries in 1.050 seconds | Memory 38.95 MB | 尼玛的备案
Powered by WordPress. | Hosted By LAOXUEHOST | Theme by WordPress主题巴士 | 站点地图 | SiteMap | uptime查询