您好,登錄后才能下訂單哦!
一、需求:
結合公司環境hadoop1.0和2.0集群,選擇了Ganglia作為本公司集群監控項目
二、Ganglia介紹
1.Ganglia是UC Berkeley發起的一個開源集群監視項目,設計用于測量數以千計的節點。Ganglia的核心包含gmond、gmetad以及一個Web前端。主要是用來監控系統性能,如:cpu 、mem、硬盤利用率, I/O負載、網絡流量情況等,通過曲線很容易見到每個節點的工作狀態。對合理調整、分配系統資源,提高系統整體性能起到重要作用。
2.每臺計算機都運行一個收集和發送度量數據的名為 gmond 的守護進程。接收所有度量數據的主機可以顯示這些數據并且可以將這些數據的精簡表單傳遞到層次結構中。正因為有這種層次結構模式,才使得 Ganglia 可以實現良好的擴展。
3.gmond 帶來的系統負載非常少,這使得它成為在集群中各臺計算機上運行的一段代碼,而不會影響用戶性能。所有這些數據多次收集會影響節點性能。網絡中的 “抖動”發生在大量小消息同時出現時,可以通過將節點時鐘保持一致,來避免這個問題。
4.Ganglia 監控套件包括三個主要部分:gmond,gmetad,和網頁接口,通常被稱為ganglia- web。
4.1 gmond 是一個守護進程,他運行在每一個需要監測的節點上,收集監測統計,發送和接受在同一個組播或單播通道上的統計信息。
4.2 gme tad 也是一個守護進程,他定期檢查gmonds ,從那里拉取數據,并將他們的指標存儲在RRD存儲引擎中。它可以查詢多個集群并聚合指標。RRD也被用于生成用戶界面的web前端。
4.3 ganglia- web 顧名思義,他應該安裝在有gmetad運行的機器上,以便讀取RRD文件。
一般來說一個集群的每臺機器上都需要安裝gmond,只要負責展示web界面的機器安裝了gmetad即可。
三、安裝步聚
1. 前期準備
1.1. 節點準備
修改主機名、ip、iptables關閉; 時間同步: ntpdate -s time.windows.com;
1.2. 軟件準備
ganglia-3.7.1.tar.gz和ganglia-web-3.7.0.tar.gz 地址:http://ganglia.info/?page_id=66 confuse-2.7.tar.gz 地址:http://www.nongnu.org/confuse/ Python-2.7.10.tgz 地址:https://www.python.org/downloads/release/python-2710/ httpd-2.2.31.tar.gz 地址:http://httpd.apache.org/download php-5.6.12.tar.gz 地址:http://php.net/downloads.php
2. 集群規劃
2.1. 集群信息
cat /etc/issue
主機名稱 | IP | 系統版本 | 功能 |
dchdmaster2 | 192.168.1.193 | CentOS 6.5 x86_64 | 監控服務主節點 |
dchadoop206 | 192.168.1.199 | CentOS 6.5 x86_64 | 監控服務從節點 |
dchadoop207 | 192.168.1.216 | CentOS 6.5 x86_64 | 監控服務從節點 |
2.2. 軟件規劃
Ganglia監控服務的主節點需要安裝:ganglia,ganglia-web,php,apache Ganglia被監控從節點需要安裝:ganglia
2.3. 安裝路徑
ganglia-core安裝路徑:/usr/local/ganglia php安裝路徑:/usr/local/php apache安裝路徑:/usr/local/apache2 ganglia-web安裝路徑:/opt/ganglia/ganglia-web rrds數據路徑:/opt/ganglia/rrds
3. 安裝框架
3.1. 檢查依賴[或者安裝過程中發現缺少再安裝]
#rpm -q gcc glibc glibc-common rrdtool rrdtool-devel expat expat-devel pcre pcre-devel dejavu-lgc-sans-mono-fonts dejavu-sans-mono-fonts zlib-devel pcre pcre-devel apr apr-devel apr-util apr-util-devel
yum安裝:
#yum -y install gcc glibc glibc-common rrdtool rrdtool-devel expat expat-devel dejavu-lgc-sans-mono-fonts dejavu-sans-mono-fonts zlib-devel pcre pcre-devel apr apr-devel apr-util apr-util-devel
#yum -y install perl libxml2 libxml2-devel
注釋
pcre (Perl Compatible Regular Expressions)正則表達式處理
apr Apache可移植運行庫
3.2. 安裝ganglia
將要安裝的源文件傳到一個節點的/opt/src下
#cd /opt/src
3.2.1. confuse
//libconfuse 是一個用C實現配置文件解析器庫
#tar zvxf confuse-2.7.tar.gz #cd confuse-2.7 #./configure CFLAGS=-fPIC --disable-nls
//-fPIC 作用于編譯階段,告訴編譯器產生與位置無關代碼(Position-Independent Code)則產生的代碼中,沒有絕對地址,全部使用相對地址,故而代碼可以被加載器加載到內存的任意位置,都可以正確的執行。這正是共享庫所要求的,共享庫被加載時,在內存的位置不是固定的。
//--disable-nls:禁止對國際化支持
make && make install
3.2.2. python
// ganglia-gmond-modules-python
//很慢
python[默認的python.so路徑/usr/lib64/]
#cd /opt/src #tar -zvxf Python-2.7.10.tgz #cd /opt/src/Python-2.7.10 #./configure --prefix=/usr/local --enable-shared make && make install
//安裝后libpython2.7.so在/usr/local/lib下
配置共享庫
#vi /etc/ld.so.conf
-- 增加如下內容#python.so所在位置
/usr/local/lib
啟用配置
#ldconfig
//ldconfig 命令的用途,主要是在默認搜尋目錄(/lib和/usr/lib)以及動態庫配置文件/etc/ld.so.conf內所列的目錄下,搜索出可共享的動態鏈接庫(格式如前介紹,lib*.so*),
檢查是否生效
#ldconfig -v |grep "libpython2.7.so"
3.2.3. ganglia
3.2.3.1. 安裝
# cd /opt/src # tar zvxf ganglia-3.7.1.tar.gz # cd ganglia-3.7.1 # ./configure --prefix=/usr/local/ganglia --with-gmetad --enable-gexec --with-python=/usr/local # make && make install
3.2.3.2. 配置gmond(所有節點)
#cd /opt/src/ganglia-3.7.1
//設置開機啟動
#cp ./gmond/gmond.init /etc/init.d/gmond #vi /etc/init.d/gmond #GMOND=/usr/local/ganglia/sbin/gmond
//初始化gmond配置文件
./gmond/gmond -t > /usr/local/ganglia/etc/gmond.conf
vi /usr/local/ganglia/etc/gmond.conf -- 修改如下內容
cluster { name = "cloud-cluster" owner = "nobody" latlong = "unspecified" url = "unspecified" } 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. mcast_join = 239.2.11.71 port = 8649 ttl = 1 } /* You can specify as many udp_recv_channels as you like as well. */ udp_recv_channel { mcast_join = 239.2.11.71 port = 8649 bind = X.X.X.X retry_bind = true # Size of the UDP buffer. If you are handling lots of metrics you really # should bump it up to e.g. 10MB or even higher. # buffer = 10485760 }
#########################################添加python指標Begin
復制python module到ganglia部署目錄
#mkdir /usr/local/ganglia/lib64/ganglia/python_modules #cd /opt/src/ganglia-3.7.1 #cp ./gmond/python_modules/*/*.py /usr/local/ganglia/lib64/ganglia/python_modules
安裝程序ganglia-3.7.1默認提供了一些python module的配置文件,只需要部署到 /usr/local/ganglia/etc/conf.d 目錄下面即可生效
#cp ./gmond/python_modules/conf.d/*.pyconf /usr/local/ganglia/etc/conf.d
#####為什么創建python_modules和復制到指定文件夾?約定由于配置,查看/usr/local/ganglia/etc/conf.d/modpython.conf
#########################################添加python指標End
同步【ganglia、gmond配置、python模塊】 其他節點
#scp -r /usr/local/lib/libpython2.7.so* root@dchadoop206:/usr/local/lib #scp -r /usr/local/lib/python2.7/ root@dchadoop206:/usr/local/lib/ #scp /etc/ld.so.conf root@dchadoop206:/etc/ld.so.conf #scp -r /usr/local/ganglia/ root@dchadoop206:/usr/local/ganglia/ #scp -r /etc/init.d/gmond root@dchadoop206:/etc/init.d/gmond
//復制到所有從節點
#for i in {206..212}; do scp -r /usr/local/lib/libpython2.7.so* root@dchadoop$i:/usr/local/lib;done; #for i in {206..212}; do scp -r /usr/local/lib/python2.7 root@dchadoop$i:/usr/local/lib;done; #for i in {206..212}; do scp -r /etc/ld.so.conf root@dchadoop$i:/etc;done; #for i in {206..212}; do scp -r /usr/local/ganglia/ root@dchadoop$i:/usr/local/ganglia/;done; #for i in {206..212}; do scp -r /etc/init.d/gmond root@dchadoop$i:/etc/init.d/gmond;done;
啟動gmond服務,并設為開機自動運行 # ssh root@dchdmaster2 'cmd'
ssh root@dchadoop206 'ldconfig -v | grep python2.7'
//添加開機啟動
#cd /opt/src/ganglia-3.7.1 #cp ./gmond/gmond.init /etc/init.d/gmond #vi /etc/init.d/gmond --修改如下內容
GMOND=/usr/local/ganglia/sbin/gmond chkconfig --add gmond
開啟服務:
service gmond start/restart
在gmond機器上測試。
telnet localhost 8649
檢查:gmond沒啟動成功
各節點增加ganglia用戶,重啟gmond
#for i in {208..212};do ssh dchadoop$i 'useradd ganglia;groups ganglia';done; #for i in {208..212};do ssh dchadoop$i 'hostname;service gmond restart;service gmond status';done;
3.2.3.3. 配置gmetad(主節點)
#cd /opt/src/ganglia-3.7.1 #vi /usr/local/ganglia/etc/gmetad.conf -- 修改如下內容
##如果此文件沒有 cp ./gmetad/gmetad.conf /usr/local/ganglia/etc/
--從第一臺響應主機開始收集狀態數據 data_source "cloud-cluster" 10 dchdmaster2 dchadoop206 crxy162.crxy data_source "cloud-cluster" 10 dchadoop207 dchadoop208 dchadoop209 dchadoop210 dchadoop211 dchadoop212 gridname "cloud-grid" --gmetad偵聽端口 xml_port 8651 --gmetad交互式偵聽端口 interactive_port 8652 rrd_rootdir "/opt/ganglia/rrds" case_sensitive_hostnames 0
創建和修改rrds數據目錄所有者
#mkdir -p /opt/ganglia/rrds #chown -R nobody:nobody /opt/ganglia/rrds
啟動gmetad服務
#service gmetad restart
##設置開機啟動
#cd /opt/src/ganglia-3.7.1 #cp ./gmetad/gmetad.init /etc/init.d/gmetad
vi /etc/init.d/gmetad
修改如下內容
GMETAD=/usr/local/ganglia/sbin/gmetad chkconfig --add gmetad
在gmetad機器上測試
telnet localhost 8651
4. Ganglia 調試技巧
http://blog.csdn.net/xxd851116/article/details/25109043
4.0.0.1. 安裝ganglia-web (主節點)
4.0.0.1.1. 安裝apache
cd /opt/src tar zvxf httpd-2.2.31.tar.gz cd httpd-2.2.31 ./configure --prefix=/usr/local/apache2 make && make install
問題:
[APR is required]
[configure: error: Cannot use an external APR with the bundled APR-util]
4.0.0.1.2. 安裝php(安裝很慢)
#vi /usr/local/apache2/bin/apxs
#有的版本要將第一行改為perl位置即:#!/usr/bin/perl -w
#cd /opt/src #tar zvxf php-5.6.12.tar.gz #cd php-5.6.12 #./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs #make && make install
[Perl is not installed]
[xml2-config not found]
4.0.0.1.3. ganglia-web
#cd /opt/src #tar zvxf ganglia-web-3.7.0.tar.gz -C /opt/ganglia #mv /opt/ganglia/ganglia-web-3.7.0 /opt/ganglia/ganglia-web #cd /opt/ganglia/ganglia-web #cp conf_default.php conf.php
vi conf.php
$conf['gweb_confdir'] = "/opt/ganglia/ganglia-web"; $conf['gmetad_root'] = "/opt/ganglia"; vi header.php <?php session_start(); ini_set('date.timezone','PRC'); --修改時區為本地時區
配置臨時目錄:[dwoo是php的模版引擎]
#cd /opt/ganglia/ganglia-web/dwoo #mkdir cache compiled #chmod 777 cache compiled
配置服務器設置
vi /usr/local/apache2/conf/httpd.conf
.... Listen 80 .... <IfModule dir_module> DirectoryIndex index.html index.php AddType application/x-httpd-php .php </IfModule> ....
# 在文件最后增加如下內容
# ganglia Alias /ganglia "/opt/ganglia/ganglia-web" <Directory "/opt/ganglia/ganglia-web"> AuthType Basic Options None AllowOverride None Order allow,deny Allow from all </Directory> #ServerName www.example.com:80 把#去掉 修改成ip或者hostName[ServerName dchdmaster2:80]
啟動httpd服務
#/usr/local/apache2/bin/apachectl restart
5. 注意防火墻的限制
#關閉防火墻
service iptables stop
#查看防火墻開機啟動狀態
chkconfig iptables --list
#關閉防火墻的開機啟動
chkconfig iptables off
6. 訪問的地址
http://host/ganglia
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。