zabbix使用自主發(fā)現(xiàn)(LLD)功能添加單個進(jìn)程內(nèi)存CPU監(jiān)控

使用背景

線上有多臺游戲服務(wù)器,每臺游戲服務(wù)器部署多個游戲服,每個游戲服會啟動兩個java進(jìn)程夭坪,一個game_word拱层,一個game_db,現(xiàn)在要對這些所有機(jī)器上的所有游戲服進(jìn)程進(jìn)行內(nèi)存和CPU進(jìn)行監(jiān)控核蘸。

我使用的zabbix版本為3.4

游戲名,目錄都為臨時命名

游戲進(jìn)程如下
root      2314  2310  0 10:55 pts/0    00:01:28 java -server -Xms1024m -Xmx1024m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=512m -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+DisableExplicitGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -verbose:gc -Xloggc:/gamedata/mmk_game_s11/log4j2/gc/mmk_game_s11_DB_gc.log -XX:ErrorFile=/gamedata/mmk_game_s11/log4j2/error/mmk_game_s11_DB_error_%p.log -XX:HeapDumpPath=/gamedata/mmk_game_s11/log4j2/error/mmk_game_s11_DB_heapDump_%p.hprof -cp ./classes:./config/:./libs/* core.dbsrv.main.DBStartup 
root      2346  2342  0 10:55 pts/0    00:00:52 java -server -Xms2632m -Xmx2632m -Xmn1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:MaxDirectMemorySize=1024m -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:+DisableExplicitGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -verbose:gc -Xloggc:/gamedata/mmk_game_s11/log4j2/gc/mmk_game_s11_srvWorld0_gc.log -XX:ErrorFile=/gamedata/mmk_game_s11/log4j2/error/mmk_game_s11_srvWorld0_error_%p.log -XX:HeapDumpPath=/gamedata/mmk_game_s11/log4j2/error/mmk_game_s11_srvWorld0_heapDump_%p.hprof -Dsun.zip.disableMemoryMapping=true -javaagent:libs/classReloader.jar -cp ./classes/:./config/:./libs/:./libs/* game.seam.main.WorldStartup 0
proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>]proc.cpu.util[<name>,<user>,<type>,<cmdline>,<mode>,<zone>]

在zabbix3.4版本中有個proc.mem,proc.cpu.util有這兩個key item參數(shù),可用來對單進(jìn)程的內(nèi)存和cpu進(jìn)行監(jiān)控蒿柳。

參數(shù)的相關(guān)文檔如下:

Zabbix代理監(jiān)控項(xiàng)的詳細(xì)信息

image
proc.mem這個key說明

先已簡單的nginx進(jìn)程為例

10.163.46.81使用top查看nginx的內(nèi)存信息

image

server端,使用zabbix_get測試key值命令

[root@zabbix_server ~]# zabbix_get -s 10.163.46.81 -p 10050 -k "proc.mem[nginx,root]"
112234496

文檔上可以得知漩蟆,proc.mem取得的默認(rèn)值為VIRT的值

再次獲取一次內(nèi)存信息垒探,這次獲取ngixn內(nèi)存RES的值

[root@zabbix_server ~]# zabbix_get -s 10.163.46.81 -p 10050 -k "proc.mem[nginx,root,,,rss]"
4304896

這樣就能獲取單個進(jìn)程的虛擬內(nèi)存,物理內(nèi)存值怠李。

由于機(jī)器上只有一個name值為nginx的進(jìn)程圾叼,所以我們在使用proc.mem直接指定name值即可。

但我們實(shí)際要監(jiān)控的游戲進(jìn)程都為java的進(jìn)程名捺癞,那要如何處理呢夷蚊?

這時,就需要proc.memcmdline參數(shù)髓介,cmdline參數(shù)可支持正則惕鼓。

cmdline又是什么呢?

以剛才的java進(jìn)程為例:

剛才java有個進(jìn)程號為2314,打印出cmdline

[root@zabbix_agemt tmp]# cat /proc/2314/cmdline 
java-server-Xms1024m-Xmx1024m-Xmn512m-XX:MetaspaceSize=128m-XX:MaxMetaspaceSize=256m-XX:MaxDirectMemorySize=512m-XX:+UseParallelGC-XX:+UseParallelOldGC-XX:+DisableExplicitGC-XX:+PrintGCDateStamps-XX:+PrintGCDetails-verbose:gc-Xloggc:/gamedata/mmk_game_s11/log4j2/gc/mmk_game_s11_DB_gc.log-XX:ErrorFile=/gamedata/mmk_game_s11/log4j2/error/mmk_game_s11_DB_error_%p.log-XX:HeapDumpPath=/gamedata/mmk_game_s11/log4j2/error/mmk_game_s11_DB_heapDump_%p.hprof-cp./classes:./config/:./libs/*core.dbsrv.main.DBStartup

所以此處cmdline取每個服的特有值mmk_game_s11_DB

使用proc.mem打印出這個服的db的內(nèi)存值

[root@zabbix_server tmp]# zabbix_get -s 10.163.46.81 -p 10050 -k "proc.mem[,root,,mmk_game_s1_srvWorld0,rss]"
608288768

這樣就取到了這個游戲服單個進(jìn)程的RES內(nèi)存值

這是手動獲取單個服的DB內(nèi)存版保,為了后續(xù)能使用自主發(fā)現(xiàn)功能呜笑,我們需要寫個腳本,把每臺機(jī)器上的游戲服名稱獲取出來彻犁。

編寫獲取游戲服的腳本

zabbix_agent端編寫叫胁,腳本直接放在zabbix/script

[root@zabbix_agent zabbix]# cat script/check_porcess.sh 
#!/bin/bash

## zabbix process
## date: 2017.11.27

process_dir=/gamedata
game_list=`ls ${process_dir}|grep game`
game_num=0
INDEX=0

for game in `echo ${game_list}`;do
        game_world_pid=`ps aux|grep java|grep ${game}|grep srvWorld0|awk '{print $2}'`
        if [ -n "${game_world_pid}" ];then
                ((game_num++))
        fi
done


echo '{"data":['

for game in `echo ${game_list}`;do
        game_world_pid=`ps aux|grep java|grep ${game}|grep srvWorld0|awk '{print $2}'`
        if [ -n "${game_world_pid}" ];then
                echo  '{"{#PROCESSNAME}":"'${game}_srvWorld0'"},'
                                INDEX=`expr $INDEX + 1`
                                if [ $INDEX -lt ${game_num} ];then
                                        echo '{"{#PROCESSNAME}":"'${game}_DB'"},'
                                else
                                        echo '{"{#PROCESSNAME}":"'${game}_DB'"}'
                                fi
        fi
done

echo ']}'

直接運(yùn)行腳本,測試腳本是否正常汞幢。

[root@zabbix_agent zabbix]# sh script/check_porcess.sh 
{"data":[
{"{#PROCESSNAME}":"mmk_game_s1_srvWorld0"},
{"{#PROCESSNAME}":"mmk_game_s1_DB"},
{"{#PROCESSNAME}":"mmk_game_s99_srvWorld0"},
{"{#PROCESSNAME}":"mmk_game_s99_DB"}
]}

修改zabbix_agent修改配置文件以及添加配置文件

[root@zabbix_agent zabbix]# cat etc/zabbix_agentd.conf|grep -v ^#|grep -v ^$ 
LogFile=/tmp/zabbix_agentd.log
Server=10.163.254.250
ServerActive=10.163.254.250
Hostname=zabbix_agent
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d
UnsafeUserParameters=1

其中修改的內(nèi)容就是添加最后兩行信息

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d
UnsafeUserParameters=1

然后在zabbix_agentd.conf.d添加一個新的配置文件信息

[root@zabbix_agent zabbix]# cat etc/zabbix_agentd.conf.d/java_process.conf 
UserParameter=gameprocess,/usr/local/zabbix/script/check_porcess.sh

server端測試keygameprocess是否正常

[root@zabbix_server ~]# zabbix_get -s 10.163.46.81 -p 10050 -k "gameprocess"               
{"data":[
{"{#PROCESSNAME}":"mmk_game_s1_srvWorld0"},
{"{#PROCESSNAME}":"mmk_game_s1_DB"},
{"{#PROCESSNAME}":"mmk_game_s99_srvWorld0"},
{"{#PROCESSNAME}":"mmk_game_s99_DB"}
]}

腳本內(nèi)容到此完成驼鹅,下面開始模板創(chuàng)建。

創(chuàng)建新的模板森篷,添加自主發(fā)現(xiàn)內(nèi)容

創(chuàng)建模板
image

關(guān)聯(lián)Template OS Linux模板

image
image
在模板中添加discovery

此處一定要在模板中創(chuàng)建输钩,而不是最頂端的那個discovery

image

添加一個discovery rule

image
image
在模板中添加Item prototypes

創(chuàng)建三個Item prototypes,兩個內(nèi)存的仲智,一個CPU的

image
image
image
在模板中添加Graph prototypes
image
image

至此模板已創(chuàng)建完成买乃。

開始創(chuàng)建網(wǎng)絡(luò)發(fā)現(xiàn)服務(wù),讓主機(jī)自動關(guān)聯(lián)剛剛創(chuàng)建的模板001_process_template

image

添加action

image
image

最后可以看圖形顯示了

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钓辆,一起剝皮案震驚了整個濱河市剪验,隨后出現(xiàn)的幾起案子肴焊,更是在濱河造成了極大的恐慌,老刑警劉巖功戚,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娶眷,死亡現(xiàn)場離奇詭異,居然都是意外死亡啸臀,警方通過查閱死者的電腦和手機(jī)届宠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乘粒,“玉大人豌注,你說我怎么就攤上這事∥嚼澹” “怎么了幌羞?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長竟稳。 經(jīng)常有香客問我属桦,道長,這世上最難降的妖魔是什么他爸? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任聂宾,我火速辦了婚禮,結(jié)果婚禮上诊笤,老公的妹妹穿的比我還像新娘系谐。我一直安慰自己,他們只是感情好讨跟,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布纪他。 她就那樣靜靜地躺著,像睡著了一般晾匠。 火紅的嫁衣襯著肌膚如雪茶袒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天凉馆,我揣著相機(jī)與錄音薪寓,去河邊找鬼。 笑死澜共,一個胖子當(dāng)著我的面吹牛向叉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嗦董,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼母谎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了京革?” 一聲冷哼從身側(cè)響起销睁,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤供璧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冻记,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡来惧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年冗栗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片供搀。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡隅居,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出葛虐,到底是詐尸還是另有隱情胎源,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布屿脐,位于F島的核電站涕蚤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏的诵。R本人自食惡果不足惜万栅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望西疤。 院中可真熱鬧烦粒,春花似錦、人聲如沸代赁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芭碍。三九已至徒役,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間豁跑,已是汗流浹背廉涕。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留艇拍,地道東北人狐蜕。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像卸夕,于是被迫代替她去往敵國和親层释。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Zabbix簡介 Zabbix官方網(wǎng)站Zabbix中文文檔 本文系統(tǒng)環(huán)境是CentOS7x86_64, Zabbi...
    Zhang21閱讀 7,968評論 0 37
  • 聽完常生龍局長的《教師讀書那些事兒》快集,我的內(nèi)心久久不能平靜贡羔,我在為常局長的讀書精神和讀書境界所折服的同時廉白,我也在心...
    wujihong閱讀 485評論 0 1
  • 第一次知道窩溝封閉是幾年前看一個育兒大V的微博楣嘁,她帶孩子去做磅轻,并在微博上向媽媽們科普,那時小米年紀(jì)還小逐虚,我沒太在意...
    一片禾田閱讀 616評論 4 5