此文章用於學習和交流轉載請註明,也可加入羣316297243交流學習
共有兩種安裝方式,在線的yum安裝和下載源碼包編譯安裝,這兩種安裝方式都可以,但是在線安裝的版本可能比較老,如果想使用新版本,建議使用離線安裝,特別是gweb的顯示,老版本比較醜陋。
安裝過程中用到包 http://yunpan.cn/cZHMtbsGkwLKG 訪問密碼 242b
1 安裝前環境準備
1 防火牆的狀態
#關閉防火牆
service iptables stop
chkconfig iptables off
#查看狀態
service iptables status
2 關閉selinux
sestatus 查看運行狀態
如果是運行狀態,編輯 cat /etc/selinux/config
修改該屬性 SELINUX=disabled然後重啓即可。
上面是永久生效的方法,還有一種是立即生效 運行getenforce 0(我沒有運行成功)
3 相關配置文件說明
ganglia 配置文件目錄:/etc/ganglia
rrd 數據庫存放目錄:/var/lib/ganglia/rrds
httpd 主站點目錄:/var/www/html
ganglia-web 安裝目錄:/usr/share/ganglia
ganglia-web 配置目錄:/etc/httpd/conf.d/ganglia.conf
2 yum或者apt-get安裝
由於我的機器是Centos6.5的,所以我這裏只介紹yum安裝方式,apt-get安裝和這差不多,只是命令不一樣而已。
1 檢查ganglia相關包是否存在
rpm -qa |grep ganglia
我這裏已經有了,是3.1.7版本的
如果沒有,請運行下面代碼更新資源
rpm -Uvh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
2 安裝gmond(每個節點都要安裝)
在每個需要監控的節點,安裝gmond
yum install ganglia-gmond
配置/etc/ganglia/gmond.conf文件
vim /etc/ganglia/gmond.conf
Global區域的修改如下圖,只需要修改user以及send_metadata_interval
Cluster區域修改如下圖,修改name名稱,這個是集羣名稱,用於後面gmetad的配置
Udp_send_channel區域修改如下,註釋掉mcasy_jion(用於組播),我們這裏採用單播,10.3.1.35替換成你機器的名稱
Udp_recv_channe修改如下,註釋掉mcast_join以及bind即可
啓動gmond
service gmond start
注:
可以在啓動之前,運行telnet localhost 8649
如果出現如下圖,xml內容則安裝正確,接着往下安裝
也可以將gmond.conf中的debug從0改爲100,看更多的日誌,然後進行排查。
3 安裝gmetad(只有主節點需要)
安裝 yum install ganglia-gmetad
配置
vim /etc/ganglia/gmetad.conf
找到data_source,第一個參數hadoop-cluster和gmond.conf的cluster的name必須一樣,第二個參數和 upd_send_channel中的host 一樣,當然可以有很多個,我這裏配置了一個,結合你配置的環境。
啓動
service gmetad start
測試 telnet localhost 8651 出現和上面測試gmond的情況一樣,那麼安裝成功。
4 安裝gweb(只需要主節點)
安裝yum install ganglia-web
修改ganglia-web 的訪問權限(只是掉其他,加入Allow from all)
vim /etc/httpd/conf.d/ganglia.conf
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
Order deny,allow
# Deny from all
# Allow from 127.0.0.1
# Allow from ::1
Allow from all
# Allow from .example.com
</Location>
5 安裝apache服務器以及php(下面只需主節點安裝)
1)安裝 apache以及php
yum install httpd php
2)安裝ganglia-web
yum install ganglia-web
3)將ganglia-web 安裝目錄鏈接到httpd 主站點目錄(apache服務器訪問的根目錄)
ln -s /usr/share/ganglia /var/www/html
4)修改httpd 主站點目錄下ganglia 站點目錄的訪問權限
將ganglia 站點目錄訪問權限改爲apache:apache,否則會報錯
$ chown -R apache:apache /var/www/html/ganglia
$ chmod -R 755 /var/www/html/ganglia
5)修改rrd 數據庫存放目錄訪問權限
將rrd 數據庫存放目錄訪問權限改爲nobody:nobody,否則會報錯
chown -R nobody:nobody /var/lib/ganglia/rrds
6 啓動訪問
依次啓動gmond,gmetad,httpd
service gmond start
訪問hostname/ganglia即可(這裏的hostname是安裝gweb以及gmetad的主機名或者ip)
3 源碼包安裝
1 安裝前準備
yum -y install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpmbuild glib2-devel dbus-devel freetype-devel fontconfig-devel gcc-c++ expat-devel python-devel libXrender-devel libart_lgpl libpng
2 安裝expat
下載expat-2.0.1.tar.gz
tar -xzvf expat-2.0.1.tar.gz
./configure --prefix=/usr/local/expat
make
make install
對於64位操作系統,需要手動的拷貝下動態鏈接庫到lib64下
mkdir /usr/local/expat/lib64
cp -a /usr/local/expat/lib/* /usr/local/expat/lib64/
3 安裝apr以及apr-util
tar -xvzf apr-1.3.12.tar.gz
./configure --prefix=/usr/local/apr
make
make install
tar xvjf apr-util-1.3.12.tar.bz2
./configure --with-apr=/usr/local/apr --with-expat=/usr/local/expat
make
make install
同樣64位機器需要拷貝動態鏈接庫
cp /usr/local/apr/include/apr-1/* /usr/local/apr/include/
mkdir -p /usr/local/apr/lib64
cp -af /usr/local/apr/lib/* /usr/local/apr/lib64
4 安裝confuse
wget http://download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
tar -xzvf confuse-2.7.tar.gz
cd confuse-2.7
./configure CFLAGS=-fPIC --disable-nls --prefix=/usr/local/confuse
make
make install
5 安裝rrdtool
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.8.tar.gz
cd rrdtool-1.4.8
./configure --prefix=/usr/local/rrdtool
make
make install
然後運行
/usr/local/rrdtool/bin/rrdtool
可以看到
6 安裝ganglia
1)現在纔是安裝ganglia的開始,如果提示需要pcre的話
yum install pcre
2)下載ganglia-3.2.6,解壓,安裝
tar -xzvf ganglia-3.2.6.tar.gz
./configure --with-librrd=/usr/local/rrdtool --with-gmetad --prefix=/usr/local/ganglia --with- libconfuse=/usr/local/confuse --enable-gexec
如果出現下圖所示,則正確
如果沒有,請查看下面出錯情況:
出現的問題:
Checking for confuse
checking for cfg_parse in -lconfuse... no
Trying harder including gettext
checking for cfg_parse in -lconfuse... no
Trying harder including iconv
checking for cfg_parse in -lconfuse... No
解決: yum install libconfuse-devel
checking pcre/pcre.h usability... no
checking pcre/pcre.h presence... no
checking for pcre/pcre.h... no
checking pcre.h usability... no
checking pcre.h presence... no
checking for pcre.h... no
checking for pcre_compile in -lpcre... no
解決:yum install pcre*
解決好上述問題運行下面命令:
make
make install
7 配置gmond(由於需要在每臺機器安裝gmond,則每臺機器都要安裝)
拷貝gmond服務啓動腳本
cp /opt/soft_tar/ganglia-3.6.0/gmond/gmond.init /etc/rc.d/init.d/gmond
創建配置文件主目錄
mkdir /etc/ganglia
拷貝gmond命令道/usr/sbin目錄下
cp -f /usr/local/ganglia/sbin/gmond /usr/sbin/gmond
生成gmond服務配置文件
gmond -t | tee /etc/ganglia/gmond.conf
加入gmond 服務
chkconfig --add gmond
配置 /etc/ganglia/gmond.conf
紅色部分發生改動
globals {
daemonize = yes
setuid = yes
user = ganglia //運行ganglia用戶
debug_level = 0
max_udp_msg_len = 1472
mute = no
deaf = no
allow_extra_data = yes
host_dmax = 86400 /*secs. Expires (removes from web interface) hosts in 1 day */
host_tmax = 20 /*secs */
cleanup_threshold = 300 /*secs */
gexec = no
send_metadata_interval = 15 /*多少秒發送一次 */
}
cluster {
name = "mycluster"//集羣名稱,要與gmetad.conf名稱一致
owner = "unspecified"//集羣用戶名稱
latlong = "unspecified"
url = "unspecified"
}
host {
location = "unspecified"
}
udp_send_channel {
#mcast_join = 239.2.11.71//註釋掉用單播
host = 10.2.1.35//gmetad的機器
port = 8649
ttl = 1
}
udp_recv_channel {
#mcast_join = 239.2.11.71
port = 8649
#bind = 239.2.11.71
retry_bind = true
}
啓動gmond
運行 service gmond start 啓動gmond
出現'/usr/local/ganglia/etc/gmond.conf' not found
解決
ln -s /etc/ganglia/gmond.conf /usr/local/ganglia/etc/gmond.conf
或者gmond --default_config > /etc/ganglia/gmond.conf
重新啓動gmond:service gmond restart.
測試數據
在gmetad機器上運行 tcpdump -i eth0 udp port 8649,或者telnet localhost 8649
8 安裝配置gmetad
1)同上配置環境
cp gmetad/gmetad.Init /etc/rc.d/Init.d/gmetad //拷貝gmetad服務啓動腳本
mkdir /etc/ganglia //創建配置文件主目錄
cp gmetad/gmetad.conf /etc/ganglia/ //拷貝gmetad服務配置文件
mkdir -p /var/lib/ganglia/rrds //創建rrd文件存放目錄
cp -f /usr/local/ganglia/sbin/gmetad /usr/sbin/gmetad
chkconfig --add gmetad
chown nobody:nobody /var/lib/ganglia/rrds //屬主和屬組都爲nobody
chkconfig --add gmetad
cp /opt/soft_tar/ganglia-3.6.0/gmetad/gmetad.conf /etc/ganglia/
2) 配置gmetad.conf
data_source "mycluster" 10.2.1.80
3) 啓動gmetad
service gmetad start
可以運行 telnet localhost 8651查看是否正常啓動
9 安裝php以及apache
PHP程序需要依賴Apache來運行,因此需要安裝如下依賴
1)安裝
yum -y install php httpd
2)啓動
service httpd start //啓動httpd 服務
3)測試php
vi /var/www/html/index.php
輸入:
<?php
phpinfo();
?>
保存,然後瀏覽器 master/index.php
10 安裝ganglia-web
下載,解壓
wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia-web/3.6.2/ganglia-web-3.6.2.tar.gz
解壓
cd ganglia-web-3.6.2
vim Makefile源文件
修改如下
執行make install
最後在/var/www/html/ganglia文件夾下,
cp conf_default.php conf.php
vim conf.php,修改
這裏修改爲本地安裝的rrdtool的bin路徑
11 修改rrds路徑的權限
chown -R nobody:nobody /var/lib/ganglia/rrds
chmod -R 755 /var/lib/ganglia/rrds
12 啓動gmond gmetad httpd訪問即可
4 集成hadoop,hbase到ganglia中
1 配置hadoop
在${HADOOP_HOME}/etc/hadoop/hadoop-metrics2.properties中 把原來的全部註釋掉,加上下面的,重啓啓動即可
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
*.sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both
*.sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40
namenode.sink.ganglia.servers=server-35:8649
resourcemanager.sink.ganglia.servers=server-35:8649
datanode.sink.ganglia.servers=server-35:8649
nodemanager.sink.ganglia.servers=server-35:8649
maptask.sink.ganglia.servers=server-35:8649
reducetask.sink.ganglia.servers=server-35:8649
2 配置Hbase
在${HADOOP_HOME}/etc/hadoop/hadoop-metrics2-hbase.properties中 把原來的全部註釋掉,加上下面的,重啓啓動即可
.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.sink.ganglia.period=10
hbase.sink.ganglia.period=10
hbase.sink.ganglia.servers=server-35:8649