Ganglia企業級系統監控
1.現在有哪些分佈式企業級監控?
(1).Ganglia(無界面配置)
(2).Nagios(無界面配置)
(3).Zabbix(界面配置)
2.Ganglia監控對象
(1).監控Hadoop(在這方面用的比較多)
(2).監控Hbase
3.Ganglia簡介
Ganglia 是 UC Berkeley 發起的一個開源監視項目,設計用於測量數以千計的節點。
每臺計算機都運行一個收集和發送度量數據(如處理器速度、內存使用量等)的名爲 gmond 的守護進程。
它將從操作系統和指定主機中收集。
接收所有度量數據的主機可以顯示這些數據並且可以將這些數據的精簡表單傳遞到層次結構中。
正因爲有這種層次結構模式,才使得Ganglia可以實現良好的擴展。gmond帶來的系統負載非常少,這使得它成爲在集羣中各臺計算機上運行的一段代碼,而不會影響用戶性能
3.1.Ganglia組件
Ganglia 監控套件包括三個主要部分:gmond,gmetad,和網頁接口,通常被稱爲ganglia-web。
Gmond :是一個守護進程,他運行在每一個需要監測的節點上,收集監測統計,發送和接受在同一個組播或單播通道上的統計信息
如果它是一個發送者(mute=no)它會收集基本指標,比如系統負載(load_one),CPU利用率。
它同時也會發送用戶通過添加C/Python模塊來自定義的指標。
如果它是一個接收者(deaf=no)它會聚合所有從別的主機上發來的指標,並把它們都保存在內存緩衝區中。
Gmetad:也是一個守護進程,他定期檢查gmonds,從那裏拉取數據,並將他們的指標存儲在RRD存儲引擎中。
它可以查詢多個集羣並聚合指標。
它也被用於生成用戶界面的web前端。
Ganglia-web :顧名思義,它應該安裝在有gmetad運行的機器上,以便讀取RRD文件。
集羣是主機和度量數據的邏輯分組,比如數據庫服務器,網頁服務器,生產,測試,QA等,他們都是完全分開的,你需要爲每個集羣運行單獨的gmond實例。
一般來說每個集羣需要一個接收的gmond,每個網站需要一個gmetad。
3.2.單播模式下的Ganglia
3.3.廣播模式下的Ganglia
4.Ganglia安裝
4.1.節點部署服務情況
node01(192.168.230.10)、node02(192.168.230.11)、node03(192.168.230.12)、node04(192.168.230.13)
NameNode(NNA) NameNode(NNS)
DataNode DataNode
ResourceManager(RMA) ResourceManager(RMS)
NodeManager NodeManager NodeManager
zookeeper zookeeper zookeeper
4.2.安裝yum epel源
[root@node01 ~]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@node02 ~]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@node03 ~]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@node04 ~]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
4.3.安裝依賴包
[root@node01 ~]# yum -y install httpd-devel automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
[root@node02 ~]# yum -y install httpd-devel automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
[root@node03 ~]# yum -y install httpd-devel automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
[root@node04 ~]# yum -y install httpd-devel automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
4.4.查看Ganglia安裝包
[root@node01 ~]# yum search ganglia
4.5.在NNA上安裝Ganglia
yum -y install ganglia* (包括gmetad,gmond,ganglia-web)
[root@node01 ~]# yum -y install ganglia*
4.6.其他節點上安裝Ganglia-Gmond
[root@node02 ~]# yum install ganglia-gmond
[root@node03 ~]# yum install ganglia-gmond
[root@node04 ~]# yum install ganglia-gmond
4.7.在安裝好Ganglia後,我們需要對Ganglia工具進行配置,在由Ganglia-web服務的節點上,我們需要配置web服務
[root@node01 hadoop-2.5.1]# vi /etc/httpd/conf.d/ganglia.conf
#
# Ganglia monitoring system php web frontend
#
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
Order deny,allow
# Deny from all
Allow from all
# Allow from 127.0.0.1
# Allow from ::1
# Allow from .example.com
</Location>
4.8.在/etc/ganglia/gmetad.conf修改內容如下所示:
[root@node01 hadoop-2.5.1]# vi /etc/ganglia/gmetad.conf
4.9.在NNA配置gmond.conf
[root@node01 hadoop-2.5.1]# vi /etc/ganglia/gmond.conf
[root@node01 hadoop-2.5.1]# scp -r /etc/ganglia/gmond.conf root@node02:/etc/ganglia/
[root@node01 hadoop-2.5.1]# scp -r /etc/ganglia/gmond.conf root@node03:/etc/ganglia/
[root@node01 hadoop-2.5.1]# scp -r /etc/ganglia/gmond.conf root@node04:/etc/ganglia/
4.10.配置主節點監控文件
[root@node01 hadoop-2.5.1]# vi /opt/modules/hadoop-2.5.1/etc/hadoop/hadoop-metrics2.properties
namenode.sink.ganglia.servers=node01:8649
resourcemanager.sink.ganglia.servers=node01:8649
mrappmaster.sink.ganglia.servers=node01:8649
jobhistoryserver.sink.ganglia.servers=node01:8649
4.11.從節點配置
[root@node02 hadoop-2.5.1]# vi /opt/modules/hadoop-2.5.1/etc/hadoop/hadoop-metrics2.properties
datanode.sink.ganglia.servers=node02:8649
nodemanager.sink.ganglia.server=node02:8649
[root@node02 hadoop-2.5.1]# vi /opt/modules/hadoop-2.5.1/etc/hadoop/hadoop-metrics2.properties
datanode.sink.ganglia.servers=node03:8649
nodemanager.sink.ganglia.server=node03:8649
[root@node04 hadoop-2.5.1]# vi /opt/modules/hadoop-2.5.1/etc/hadoop/hadoop-metrics2.properties
datanode.sink.ganglia.servers=node04:8649
nodemanager.sink.ganglia.server=node04:8649
4.12.安裝 php環境
ganglia使用一個web前端服務來展示監控信息。該服務是使用PHP編寫的。因此需要配置php運行環境。
[root@node01 ~]# yum install httpd
[root@node01 ~]# yum install php
[root@node01 ~]# service httpd start
在/var/www/html/下面建立一個文件info.php,內容如下:
<?php
echo 'Hello, world!';
?>
在瀏覽器中輸入http://192.168.230.10/info.php,看看是否能正常工作
4.13.啓動ganglia
[root@node01 html]# service gmetad start
[root@node01 html]# service gmond start
4.14.從頁面上訪問
http://192.168.230.10/ganglia
一些注意問題:
1、gmetad收集到的信息被放到/var/lib/ganglia/rrds/
2、可以通過以下命令檢查是否有數據在傳輸
如果報錯There was an error collecting ganglia data (127.0.0.1:8652):
fsockopen error: Connection refused,然後gmetad status顯示gmetad 已死,
但是 subsys 被鎖,這需要改一下目錄的權限 chown matrix:matrix /var/lib/ganglia/rrds即可解決。