zabbix監控Hadoop的實現

        Hadoop日常運行過程中一些參數需要進行實時監控,如:Map、Reduce任務數量,HDFS磁盤使用情況,namenode、datanode在線數量及健康情況,以便更好的掌握整個Hadoop集群架構的運行情況。

        下面結合最近工作中的一些實踐經驗,分享一下如何用zabbix實時監控Hadoop集群。

         工作一開始想在網上找現成的zabbix監控Hadoop文檔,發現只一篇老外的文檔:https://code.google.com/p/mikoomi/wiki/05,51cto有人做了翻譯,上面提供的好用的現成模板和兩個強大的數據抓取腳本。

         但是在使用的過程中有很多問題,需要根據自己的實際環境進行修改,但腳本中大部分的數據抓取和分析代碼是沒有問題的,寫這個的人的確很NB,下了不少工夫。

         我在這里僅提一下,需要改變的部分。

          mikoomi文檔中使用的是zabbix的externalscripts功能,生成數據后使用zabbix_sender命令向服務器發送數據,實現過程非常簡單,但不走運的是,我使他這個方法,數據的抓取和整理都沒有問題,就是在用zabbix_sender上傳數據時問上失敗。中間掙扎、糾結了好久,沒有找到解決辦法。遂決定,放棄原有的套路,換另一種方法。


         如果你用mikoomi的原始方法實現在,那么恭喜你,他的方法確實簡單好用,請你一定聯系我你是怎么做到的。


          下面來講一下我的基于mikoomi腳本的另一種實現方法。


          一開始,按照mikoomi原文中方法,導入他所提供的hadoop監控模板,一個用于監控namemode,一個用于監控jobstracker。

          然后,將需要被監控的namenode加入這兩個模板,當加入第二個模板的時候會提示你,這兩個模板中有兩個item沖突了,很好辦,從任意一個模板中刪除沖突項就好了。

 

         上述兩步操作比較簡單,就不多說了,下面重點來了,前方高能。

   

          兩個模板中默認原作者是要以zabbix_sender的方式傳送監控數據的,所以兩個模板中的item都是zabbix_trap的數據類型,現在我們即將采用的是傳統的在被監控端創建UserParameter的方式,所以一個很重要的地方需要做修改,如圖:

zabbix監控Hadoop的實現

這個頁面就是這么寬,沒辦法,將就著看吧!zabbix監控Hadoop的實現

    兩個模板60多個item一個一個改勢必很痛苦,zabbix給我們提供了一個叫“mess update”的功能,全選之后(除了一個叫Data Collector的item),選擇mess update即可進入如下頁面進行修改:

zabbix監控Hadoop的實現

就是這么貼心,就是這么簡單。有些情況下,全選的話,可能無法成功,那就一次少選 幾個,多改幾次就是了。


        模板中item的數據類型改完之后,將進入最重要的數據抓取階段。原作提供的腳本功能強大,但有很多地方不是哪里都能用,比如他的shell腳本是以#!/usr/bin/bash開頭的。腳本抓取數據的來源是hadoop自身提供的web頁面,腳本通過curl命令抓取頁面內容進行分析,提煉后按照 “主機名 key value”  的格式進行存儲。

        如果你們hadoop服務器的web頁面是不需要密碼訪問的還好,如果像我們公司一樣是需要密碼訪問的,這個url就需要特別注意一個,免得不能訪問,就將無法獲取數據。

    

        現把我修改后的,正在使用的腳本放在這里,供參考 :

mikoomi-hadoop-jobtracker-plugin-helper.sh

mikoomi-hadoop-jobtracker-plugin.sh

mikoomi-hadoop-namenode-plugin-helper.sh

mikoomi-hadoop-namenode-plugin.sh

run_hd.sh

******************************************************

注意事項

         上述腳本均是放在被監控端即namenode上運行。

        上述腳本中的URL使用了user.name變量,是因為我們的環境中訪問hadoop頁面是需要密碼的,直接把密碼加入url就行。如果不需要密碼,把這個就是去掉就了行,注意,每一個腳本有兩處URL。

         從腳本名稱中便可看出,帶有“jobtracker”的腳本是用于抓取和jobtracker運行有關的數據的,帶有“namenode”的是用來抓取和namenode運行有關的數據的。

         腳本run_hd.sh是用來將前面腳本生成的數據合并到一處的,后并后的文件我取名為/tmp/namenode.txt(這個文件不要放在zabbix用戶無法訪問的目錄,比如:root家目錄下zabbix監控Hadoop的實現)。

         

         首次使用需先運行run_hd.sh產生數據文件/tmp/namenode.txt ,然后執行如下awk命令,將生成結果導入 /etc/zabbix/zabbix_agentd.d/hadoop.conf 中,代碼如下:

                    

awk '{ print "UserParameter="$2",grep \" "$2" \" /tmp/namenode.txt | awk '\''{ print '\$'3 }'\''" }' /tmp/namenode.txt  > /etc/zabbix/zabbix_agentd.d/hadoop.conf

        注意: 此awk命令只需執行一次即可。


        然后重啟被監控端的zabbix_agent進程: 

                   

  service zabbix_agent restart


         最后,也是最重要的,要把腳本run_hd.sh放入crontab,第分鐘執行一次,這樣/tmp/namenode.txt   中的數據就會每分更新一次,和zabbix監控中的更新同步。


好了,坐等出圖。出圖需要一點點時間,這個時候可以使用zabbix_get命令來測試,看一看zabbix server 端能不能接收到數據,比如: 

                    

 zabbix_get -s namenode -k min_free_storage_pct_node_name


zabbix監控Hadoop的實現

zabbix監控Hadoop的實現


就先展示這兩個吧,其它的數據不方便放上來。

至于triger和報警,mikoomi的模板中都為我們安排好了,我們只要保障數據能正常上傳,就可以了。



如有疑問,歡迎留言~~~~zabbix監控Hadoop的實現


************************************************************

神馬, 谷歌不能訪問?mikoomi的網頁打不開?好吧,附送hosts一枚,不謝!

戳我就能上谷歌!





原創文章,作者:紅豆殺,如若轉載,請注明出處:http://www.www58058.com/736

(1)
紅豆殺紅豆殺
上一篇 2015-03-06 15:39
下一篇 2015-03-08 21:38

相關推薦

  • 第六周作業

    1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;          cp/etc/rc.d/rc.sysinit /tmp/     &nbs…

    2017-09-04
  • 7.磁盤及文件系統管理

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; [root@localhost ~]# fdisk /dev/sd…

    Linux干貨 2017-08-21
  • DNS服務器之理論基礎

    一、什么是DNS     DNS全稱為Domain Name System,即域名系統,其作用就是將我們經常使用的“網址”解析為IP地址。     在互聯網上通信需要借助于IP地址,但人類對于數字的記憶能力遠不如文字,那么將IP地址轉換成容易記憶的文字是個好辦法,可是計算機只能識…

    Linux干貨 2015-04-29
  • 馬哥教育網絡20期+第二周練習博客

    1、 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 ls 使用方式:ls [OPTION]… [DIR]… 常用選項: -a:顯示所有檔案及目錄;  -A:顯示除影藏文件“.”和“..”以外的所有文件列表; -C:多列顯示輸出結果。這是默認選項;  -l:與“-C”選項功能相反,所有輸出…

    Linux干貨 2016-06-23
  • linux-系統啟動和內核管理

    一、Linux 組成及啟動過程 Linux: kernel+rootfs    kernel:進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能      IPC:Inter Process Communication  &nbsp…

    Linux干貨 2016-09-26
  • shell 腳本的編輯基礎

          shell腳本是Linux運維工程師必須掌握的技能之一,shell腳本的使用讓我們更好的操作Linux系統,方便了我們的執行。 一,編程基礎 編程基本概念 編程邏輯處理方式:順序執行,循環執行,選擇執行 程序:指令+ 數據 shell 編程:過程式、解釋執行 shell程序:提供了編程能力,解釋執…

    Linux干貨 2016-08-22
欧美性久久久久