Ganglia簡(jiǎn)介
Ganglia 是一款為 HPC(高性能計(jì)算)集群而設(shè)計(jì)的可擴(kuò)展的分布式監(jiān)控系統(tǒng),它可以監(jiān)視和顯示集群中的節(jié)點(diǎn)的各種狀態(tài)信息,它由運(yùn)行在各個(gè)節(jié)點(diǎn)上的 gmond 守護(hù)進(jìn)程來(lái)采集 CPU 、內(nèi)存、硬盤利用率、 I/O 負(fù)載、網(wǎng)絡(luò)流量情況等方面的數(shù)據(jù),然后匯總到 gmetad守護(hù)進(jìn)程下,使用 rrdtool 存儲(chǔ)數(shù)據(jù),最后將歷史數(shù)據(jù)以曲線方式通過(guò) PHP 頁(yè)面呈現(xiàn)。
Ganglia 的特點(diǎn)如下:
(1)良好的擴(kuò)展性,分層架構(gòu)設(shè)計(jì)能夠適應(yīng)大規(guī)模服務(wù)器集群的需要
(2)負(fù)載開銷低,支持高并發(fā)
(3)廣泛支持各種操作系統(tǒng)( UNIX 等)和 cpu 架構(gòu),支持虛擬
Ganglia組成部分
Ganglia 監(jiān)控系統(tǒng)有三部分組成,分別是 gmond、 gmetad、 gweb,作用如下:
gmond: 即為 ganglia monitoring daemon,是一個(gè)守護(hù)進(jìn)程,運(yùn)行在每一個(gè)需要監(jiān)測(cè)的節(jié)點(diǎn)上,用于收集本節(jié)點(diǎn)的信息并發(fā)送到其他節(jié)點(diǎn),同時(shí)也接收其他節(jié)點(diǎn)發(fā)過(guò)來(lái)的數(shù)據(jù),默認(rèn)的監(jiān)聽端口為 8649。
gmetad: 即為 ganglia meta daemon,是一個(gè)守護(hù)進(jìn)程,運(yùn)行在一個(gè)數(shù)據(jù)匯聚節(jié)點(diǎn)上,定期檢查每個(gè)監(jiān)測(cè)節(jié)點(diǎn)的 gmond 進(jìn)程并從那里獲取數(shù)據(jù),然后將數(shù)據(jù)指標(biāo)存儲(chǔ)在本地 RRD 存儲(chǔ)引擎中。
gweb: 即為Ganglia Web,是一個(gè)基于 web 的圖形化監(jiān)控界面(PHP前端),需要和 gmetad 安裝在同一個(gè)節(jié)點(diǎn)上,它從gmetad 獲取數(shù)據(jù),并且讀取 RRD 數(shù)據(jù)庫(kù),通過(guò) rrdtool 生成圖表,用于前臺(tái)展示,界面美觀、豐富,功能強(qiáng)大。
以上,引自https://blog.51cto.com/huaxin/1841208
gmond用于收集監(jiān)測(cè)數(shù)據(jù),可以發(fā)送也可以接收在同一個(gè)組播或單播通道上的統(tǒng)計(jì)信息。gmond有兩個(gè)角色,一個(gè)是發(fā)送者,另一個(gè)是接收者。當(dāng)mute=no時(shí),gmond是發(fā)送者,會(huì)收集本節(jié)點(diǎn)上的基本指標(biāo),比如系統(tǒng)負(fù)載(load_one)、cpu和memory利用率等,也可以發(fā)送用戶通過(guò)添加C/Python模塊來(lái)自定義的指標(biāo)。當(dāng)deaf=no是接收者,主要用來(lái)聚合所有從別的節(jié)點(diǎn)上發(fā)來(lái)的指標(biāo)(如flume agent發(fā)來(lái)的metrics信息),并把他們都保存在內(nèi)存緩沖區(qū)中。gmond節(jié)點(diǎn)之間通過(guò)UDP收集數(shù)據(jù),gmetad通過(guò)TCP從gmond節(jié)點(diǎn)獲取數(shù)據(jù)。
以下步驟基于CentOS 7.6 64bit系統(tǒng)安裝成功
查看系統(tǒng)環(huán)境:
[root@localhost ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.6.1810 (Core)
Release: 7.6.1810
Codename: Core
ganglia的安裝與部署
- 1、安裝httpd服務(wù)與php
# yum -y install httpd php
已安裝:
httpd.x86_64 0:2.4.6-89.el7.centos.1 php.x86_64 0:5.4.16-46.el7
作為依賴被安裝:
apr.x86_64 0:1.4.8-3.el7_4.1 apr-util.x86_64 0:1.5.2-6.el7
httpd-tools.x86_64 0:2.4.6-89.el7.centos.1 mailcap.noarch 0:2.1.41-2.el7
php-cli.x86_64 0:5.4.16-46.el7 php-common.x86_64 0:5.4.16-46.el7
完畢!
- 2、安裝其他依賴
# yum -y install rrdtool perl-rrdtool rrdtool-devel
已安裝:
rrdtool.x86_64 0:1.4.8-9.el7 rrdtool-devel.x86_64 0:1.4.8-9.el7
rrdtool-perl.x86_64 0:1.4.8-9.el7
作為依賴被安裝:
cairo.x86_64 0:1.15.12-3.el7
dejavu-sans-mono-fonts.noarch 0:2.33-6.el7
fribidi.x86_64 0:1.0.2-1.el7
graphite2.x86_64 0:1.3.10-1.el7_3
harfbuzz.x86_64 0:1.7.5-2.el7
libXdamage.x86_64 0:1.1.4-4.1.el7
libXext.x86_64 0:1.3.3-3.el7
libXfixes.x86_64 0:5.0.3-1.el7
libXxf86vm.x86_64 0:1.1.4-1.el7
libglvnd.x86_64 1:1.0.1-0.8.git5baa1e5.el7
libglvnd-egl.x86_64 1:1.0.1-0.8.git5baa1e5.el7
libglvnd-glx.x86_64 1:1.0.1-0.8.git5baa1e5.el7
libthai.x86_64 0:0.1.14-9.el7
libwayland-client.x86_64 0:1.15.0-1.el7
libwayland-server.x86_64 0:1.15.0-1.el7
libxshmfence.x86_64 0:1.2-1.el7
mesa-libEGL.x86_64 0:18.0.5-4.el7_6
mesa-libGL.x86_64 0:18.0.5-4.el7_6
mesa-libgbm.x86_64 0:18.0.5-4.el7_6
mesa-libglapi.x86_64 0:18.0.5-4.el7_6
pango.x86_64 0:1.42.4-2.el7_6
pixman.x86_64 0:0.34.0-1.el7
完畢!
# yum -y install apr-devel
已安裝:
apr-devel.x86_64 0:1.4.8-3.el7_4.1
完畢!
- 3、安裝ganglia
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
獲取http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
警告:/var/tmp/rpm-tmp.KbkMeA: 頭V3 RSA/SHA256 Signature, 密鑰 ID 0608b895: NOKEY
準(zhǔn)備中... ################################# [100%]
軟件包 epel-release-7-11.noarch (比 epel-release-6-8.noarch 還要新) 已經(jīng)安裝
file /etc/rpm/macros.ghc-srpm from install of epel-release-6-8.noarch conflicts with file from package redhat-rpm-config-9.1.0-87.el7.centos.noarch
# yum -y install ganglia-gmetad
已安裝:
ganglia-gmetad.x86_64 0:3.7.2-2.el7
作為依賴被安裝:
ganglia.x86_64 0:3.7.2-2.el7 libconfuse.x86_64 0:2.7-7.el7
libevent.x86_64 0:2.0.21-4.el7 libmemcached.x86_64 0:1.0.16-5.el7
完畢!
# yum -y install ganglia-gmond
已安裝:
ganglia-gmond.x86_64 0:3.7.2-2.el7
完畢!
# yum -y install ganglia-web
已安裝:
ganglia-web.x86_64 0:3.7.1-2.el7
作為依賴被安裝:
libXpm.x86_64 0:3.5.12-1.el7 libxslt.x86_64 0:1.1.28-5.el7
php-ZendFramework.noarch 0:1.12.20-1.el7 php-bcmath.x86_64 0:5.4.16-46.el7
php-gd.x86_64 0:5.4.16-46.el7 php-process.x86_64 0:5.4.16-46.el7
php-xml.x86_64 0:5.4.16-46.el7 t1lib.x86_64 0:5.1.2-14.el7
完畢!
- 4、修改ganglia配置文件
# vim /etc/httpd/conf.d/ganglia.conf
#
# Ganglia monitoring system php web frontend
#
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
# Require local
Require all granted
# Require ip 10.1.2.3
# Require host example.org
</Location>
特別注意:以下配置是不能起作用的
<Location /ganglia>
Order deny,allow
Allow from all
</Location>
該文件配置有誤時(shí)頁(yè)面會(huì)提示以下錯(cuò)誤:
Forbidden
You don't have permission to access /ganglia on this server.
錯(cuò)誤日志提示:
[authz_core:error] [pid 14410] [client 171.84.5.202:8444] AH01630: client denied by server configuration: /usr/share/ganglia
- 5、修改gmetad配置文件
# vim /etc/ganglia/gmetad.conf
#data_source "my cluster" localhost
data_source "bigdata" localhost
# The name of this Grid. All the data sources above will be wrapped in a GRID
# tag with this name.
# default: unspecified
gridname "MyGrid"
5、修改gmond配置文件
# vim /etc/ganglia/gmond.conf
cluster {
#name = "unspecified"
name = "bigdata"
owner = "unspecified"
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
host = localhost
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 = 239.2.11.71
bind = localhost
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
}
- 6、查看SELinux狀態(tài)
# sestatus
SELinux status: disabled
如果不是disabled狀態(tài),需修改以下配置文件:
vim /etc/selinux/config
或者臨時(shí)關(guān)閉SELinux:
# setenforce 0
- 7、啟動(dòng)ganglia
# service httpd start
若80端口已被其他應(yīng)用所占,可以修改 /etc/httpd/conf/httpd.conf 文件中的Listen 80,修改該文件后需重啟httpd服務(wù):
systemctl restart httpd.service
# service gmetad start
# service gmond start
- 8、打開瀏覽器訪問(wèn)ganglia-web(假設(shè)192.168.9.191為本機(jī)ip)
http://192.168.9.191:80/ganglia/
如果完成以上操作仍出現(xiàn)權(quán)限不足錯(cuò)誤,可修改/var/lib/ganglia目錄的權(quán)限嘗試
# chmod -R 777 /var/lib/ganglia

特別說(shuō)明:
使用Fedora30系統(tǒng),無(wú)法成功使用yum安裝ganglia-web,依賴沖突錯(cuò)誤
$ yum install ganglia-web
錯(cuò)誤:
問(wèn)題: conflicting requests
- nothing provides php-ZendFramework needed by ganglia-web-3.7.2-24.fc30.x86_64
(try to add '--skip-broken' to skip uninstallable packages)
在fedora-release 中該安裝包的名稱都是小寫,即使安裝了php-zendframework后,仍然報(bào)上述錯(cuò)誤,可能ganglia-web安裝時(shí)是查詢絕對(duì)匹配php-ZendFramework的安裝包
$ yum install php-zendframework
想要升級(jí)安裝rpm也失敗了:
$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
獲取http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
警告:/var/tmp/rpm-tmp.FILPNi: 頭V3 RSA/SHA256 Signature, 密鑰 ID 352c64e5: NOKEY
錯(cuò)誤:依賴檢測(cè)失?。?br>
fedora-release 與 epel-release-7-11.noarch 沖突