原本打算先分享第9章與第10章的內容,但是剛好我要重新安裝Ganglia與Nagios,且第10章也會說到叢集監控(Cluster Monitoring)的問題,所以就先分享如何安裝Ganglia和Nagios給大家囉^.^,這裡先分享如何安裝Ganglia於Hadoop上。
- 何謂Ganglia
在說明如何安裝前,先跟大家簡單分享一下ganglia是如何來蒐集資料的。
- 機制,ganglia的狀態蒐集機制是透過每一台gmond來蒐集資料,並透過主節點的gmetad來彙整資料後傳給rrdtool來做繪圖的動作。
- 如何與hadoop連結,透過$HADOOP_HOME/conf/hadoop-metrics2.properties來開啟想要呈現的狀態(BTW. 我的hadoop版本是1.0.3),接下來就是去掉注釋以及指定輸出甚麼狀態給Ganglia。
- a. 去掉註釋
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
*.sink.ganglia.supportsparse=true
- b. 指定輸出狀態
namenode.sink.ganglia.servers=192.168.6.10:8649, 輸出namenode的狀態
datanode.sink.ganglia.servers=192.168.6.10:8649,輸出datanode的狀態
jobtracker.sink.ganglia.servers=192.168.6.10:8649,輸出jobtracker的狀態
tasktracker.sink.ganglia.servers=192.168.6.10:8649,輸出jobtracker的狀態
maptask.sink.ganglia.servers=192.168.6.10:8649,輸出maptask的狀態
reducetask.sink.ganglia.servers=192.168.6.10:8649,輸出reducetask的狀態
- 安裝Ganglia
參考文獻 1. http://www.ibm.com/developerworks/cn/linux/l-ganglia-nagios-1/
參考文獻 2. http://taoo.iteye.com/blog/1415866
- 安裝前說明:因為每個人所安裝環境都不同,所以可能在安裝某些套件的時候會出現一些相依性套件的問題,這時候或許您可以google一下,大致上90%應該都可以利用google順利解決。
- 事前準備:(請一個一個裝,遇到相依問題在解決),注意:從節點(slaves)不需要安裝gmetad與web及rrdtool的部分!!。
epel-release-6-7.noarch.rpm
- ganglia 部分 :
ganglia-devel-3.4.0-1.x86_64.rpm
ganglia-gmetad-3.4.0-1.x86_64.rpm
ganglia-gmond-3.4.0-1.x86_64.rpm
ganglia-gmond-modules-python-3.4.0-1.x86_64.rpm
ganglia-web-3.5.2-1.noarch.rpm
libganglia-3.4.0-1.x86_64.rpm
- rrdtool 部分 :
rrdtool-1.3.8-6.el6.x86_64
rrdtool-devel-1.3.8-6.el6.x86_64
- ganglia 配置:
- gmetad.conf : vim /etc/ganglia/gmetad.conf,這個部分很難寫,=>後面是說明,請仔細看gmetad與gmond在的對應即可,並請於這些conf檔中加入下述所呈現的部分,建議先大致看完整的conf檔的排列,會對加入下述所呈現的部分會有幫助。
data_source "XinCluster" masteribm => "XinCluster": 群組名稱,masteribm : 主節點的hostname(uname -n可查)
trusted_hosts masteribm => masteribm : 主節點的hostname(uname -n可查)
- gmond.conf : vim /etc/ganglia/gmond.conf
cluster {
name = "XinCluster"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel請改成如下所示 :
udp_send_channel {
# bind_hostname = yes # Highly recommended, soon to be default.
# This option tells gmond to use a source address
# that resolves to the machine's hostname. Without
# this, the metrics may appear to come from any
# interface and the DNS names associated with
# those IPs will be used to create the RRDs.
host = masteribm的ip
port = 8649
ttl = 1
}
udp_recv_channel請改成如下所示 :
udp_recv_channel {
#mcast_join = 239.2.11.71
port = 8649
#bind = 239.2.11.71
#retry_bind = true
}
透過上面的設定不難可以看的出來,其實gmond是透過udp_send_channel的host及port 8649來傳遞狀態,然後藉由masteribm上的gmetad來蒐集並交由rrdtool來畫圖,應該會有人有問題,為何不透過mcast_join的多播器來做呢?,因為本人用過...但是叢集節點總是會不定時的失去聯繫,詳細原因不明,如果有哪位看倌知曉的,煩請告知小弟一聲^.^~感激不盡。
不要以為安裝完上述的東東就能用了喔^_^~請記得在安裝httpd~也就是阿帕契(apache)拉。
- 安裝httpd( yum install httpd )
httpd.x86_64 : Apache HTTP Server
- 啟動ganglia
service gmond start
service gmetad start
service httpd start
- 從wed介面查看
http://hostname的ip/ganglia/
- ganglia當然不僅只有上述那些東東,它還有個欺騙的功能,但目前尚未需要這個功能,所以就沒與大家分享,如果之後有需要用到我會在與大家分享的^.^~