Zabbix实战-简易教程--进程类
一、获取LLD的json对象(游戏进程)
通过脚本获取游戏进程:
#!/bin/bash gameprocess=(`ps xua|grep -E "server_global|server_ps|server_log|server_name|server_rank|server_db|server_gc|server_chat|server_th|server_zone|server_gs*|server_login"|grep -v grep|awk -F[/] '{print $2}'|awk '{print $1}' 2>/dev/null`) length1=${#gameprocess[@]} printf "{\n" printf '\t'"\"data\":[" for ((i=0;i<$length1;i++)) do printf '\n\t\t{' printf "\"{#GAMEPROCESS}\":\"${gameprocess[$i]}\"}" if [ $i -lt $[$length1-1] ];then printf ',' fi done printf "\n\t]\n" printf "}\n" EOF
执行结果如下:
脚本已经上传至github:https://github.com/loveqx/zabbix-doc/blob/master/zabbix-scripts/zabbix-template-gameprocess/gameprocess.sh
二、测试和自定义key
通过上面方法获取需要监控的进程后,就可以对进程的各项资源进行监控了。其中资源包括:cup使用大小和占用百分比、内存使用大小和占用百分比以及进程数量。
# discovery game process
UserParameter=custom.process.discovery,/bin/sh /etc/zabbix/externalscripts/gameprocess.sh
UserParameter=custom.game.process.num[*],/bin/bash /etc/zabbix/externalscripts/game_process_number.sh $1
UserParameter=custom.game.process.cpu[*],sudo top -c -b -n1|grep -v grep |grep -w `ps xua|grep "\.\/$1$$"|grep -v grep|grep -v sh|awk '{print $$2}'`|awk '{print $$9}'
UserParameter=custom.game.process.mem[*],ps xua|grep -w "\.\/$1"|grep -v grep|grep -v sh |grep -v python|awk '{print $$4}'
UserParameter=custom.game.process.vsz.mem[*],ps xua|grep -w "\.\/$1"|grep -v grep|grep -v sh |grep -v python|awk '{print $$5}'
UserParameter=custom.game.process.rss.mem[*],ps xua|grep -w "\.\/$1"|grep -v grep|grep -v sh |grep -v python|awk '{print $$6}'
注意:
1、其中cpu由于研发要求查看瞬时值,所以采用top方式进行采集。采集方式是通过pid来进行过滤。
2、更加值得注意的是:在centos7上,由于top出来的结果会显示不全。在本机执行没有问题,而通过远程执行的时候,结果会显示不全。
三、制作模板
模板已上传至github:https://github.com/loveqx/zabbix-doc/tree/master/zabbix-scripts/zabbix-template-gameprocess
四、效果图
1、CPU百分比
2、内存百分比
3、进程数量
4、内存大小
六、参考文献
脚本地址:https://github.com/loveqx/zabbix-doc/tree/master/zabbix-scripts/zabbix-template-gameprocess