使用Ganglia對(duì)Linux網(wǎng)格和集群服務(wù)器進(jìn)行實(shí)時(shí)監(jiān)控
從系統(tǒng)管理員接手服務(wù)器和主機(jī)管理以來(lái),像應(yīng)用監(jiān)控這樣的工具就成了他們的好幫手。其中比較有名的有 Nagios、 Zabbix、 Icinga 和 Centreon。以上這些是重量級(jí)的監(jiān)控工具,讓一個(gè)新手管理員來(lái)設(shè)置,并使用其中的高級(jí)特性是有些困難的。
本文將向你介紹 Ganglia,它是一個(gè)易于擴(kuò)展的監(jiān)控系統(tǒng)。使用它可以實(shí)時(shí)查看 Linux 服務(wù)器和集群(圖形化展示)中的各項(xiàng)性能指標(biāo)。
Ganglia 能夠讓你以集群(按服務(wù)器組)和網(wǎng)格(按地理位置)的方式更好地組織服務(wù)器。
這樣,我們可以創(chuàng)建一個(gè)包含所有遠(yuǎn)程主機(jī)的網(wǎng)格,然后將那些機(jī)器按照其它標(biāo)準(zhǔn)分組成小的集合。
此外, Ganglia 的 web 頁(yè)面對(duì)移動(dòng)設(shè)備進(jìn)行過(guò)優(yōu)化,也允許你導(dǎo)出 csv 和 .json 格式的數(shù)據(jù)。
我們的測(cè)試環(huán)境包括一個(gè)安裝 Ganglia 的主節(jié)點(diǎn)服務(wù)器 CentOS 7 (IP 地址 192.168.0.29),和一個(gè)作為被監(jiān)控端的 Ubuntu 14.04 主機(jī)(192.168.0.32)。我們將通過(guò) Ganglia 的 Web 頁(yè)面來(lái)監(jiān)控這臺(tái) Ubuntu 主機(jī)。
下面的例子可以給大家提供參考,CentOS7 作為主節(jié)點(diǎn),Ubuntu 作為被監(jiān)控對(duì)象。
安裝和配置 Ganglia
請(qǐng)遵循以下步驟,在主節(jié)點(diǎn)服務(wù)器安裝監(jiān)控工具。
1、 啟用 EPEL 倉(cāng)庫(kù) ,然后安裝 Ganglia 和相關(guān)工具:
- # yum update && yum install epel-release
- # yum install ganglia rrdtool ganglia-gmetad ganglia-gmond ganglia-web
在上面這步隨 Ganglia 將安裝一些應(yīng)用,它們的功能如下:
- rrdtool,Round-Robin 數(shù)據(jù)庫(kù),它是一個(gè)儲(chǔ)存并圖形化顯示隨著時(shí)間變化的數(shù)據(jù)的工具;
- ganglia-gmetad 一個(gè)守護(hù)進(jìn)程,用來(lái)收集被監(jiān)控主機(jī)的數(shù)據(jù)。被監(jiān)控主機(jī)與主節(jié)點(diǎn)主機(jī)都要安裝 Ganglia-gmond(監(jiān)控守護(hù)進(jìn)程本身);
- ganglia-web 提供 Web 前端,用于顯示監(jiān)控系統(tǒng)的歷史數(shù)據(jù)和圖形。
2、 使用 Apache 提供的基本認(rèn)證功能,為 Ganglia Web 界面(/usr/share/ganglia)配置身份認(rèn)證。
如果你想了解更多高級(jí)安全機(jī)制,請(qǐng)參閱 Apache 文檔的 授權(quán)與認(rèn)證部分。
為完成這個(gè)目標(biāo),我們需要?jiǎng)?chuàng)建一個(gè)用戶名并設(shè)定一個(gè)密碼,以訪問(wèn)被 Apache 保護(hù)的資源。在本例中,我們先來(lái)創(chuàng)建一個(gè)叫 adminganglia 的用戶名,然后給它分配一個(gè)密碼,它將被儲(chǔ)存在 /etc/httpd/auth.basic(可以隨意選擇另一個(gè)目錄 和/或 文件名, 只要 Apache 對(duì)此有讀取權(quán)限就可以。)
- # htpasswd -c /etc/httpd/auth.basic adminganglia
給 adminganglia 輸入兩次密碼完成密碼設(shè)置。
3、 修改配置文件 /etc/httpd/conf.d/ganglia.conf:
- Alias /ganglia /usr/share/ganglia
- <Location /ganglia>
- AuthType basic
- AuthName "Ganglia web UI"
- AuthBasicProvider file
- AuthUserFile "/etc/httpd/auth.basic"
- Require user adminganglia
- </Location>
4、 編輯 /etc/ganglia/gmetad.conf:
首先,使用 gridname 指令來(lái)為網(wǎng)格設(shè)置一個(gè)描述性名稱。
- gridname "Home office"
然后,使用 data_source 指令,后面跟集群名(服務(wù)器組)、輪詢時(shí)間間隔(秒)、主節(jié)點(diǎn)主機(jī)和被監(jiān)控節(jié)點(diǎn)的 IP 地址:
- data_source "Labs" 60 192.168.0.29:8649 # 主節(jié)點(diǎn)
- data_source "Labs" 60 192.168.0.32 # 被監(jiān)控節(jié)點(diǎn)
5、 編輯 /etc/ganglia/gmond.conf。
a) 確保集群的配置類似下面。
- cluster {
- name = "Labs" # gmetad.conf 中的 data_source 指令的名字
- owner = "unspecified"
- latlong = "unspecified"
- url = "unspecified"
- }
b) 在 udp_send_chanel 中,注釋掉 mcast_join:
- udp_send_channel {
- # mcast_join = 239.2.11.71
- host = localhost
- port = 8649
- ttl = 1
- }
c) 在 udp_recv_channel 中,注釋掉 mcast_join 和 bind 部分:
- udp_recv_channel {
- # mcast_join = 239.2.11.71 ## comment out
- port = 8649
- # bind = 239.2.11.71 ## comment out
- }
保存并退出。
6、打開(kāi) 8649/udp 端口,使用 SELinux 確保 php 腳本(通過(guò) Apache 運(yùn)行)能夠連接到網(wǎng)絡(luò):
- # firewall-cmd --add-port=8649/udp
- # firewall-cmd --add-port=8649/udp --permanent
- # setsebool -P httpd_can_network_connect 1
7、重啟 Apache、gmetad、gmond,并確保它們啟用了“開(kāi)機(jī)啟動(dòng)”。
- # systemctl restart httpd gmetad gmond
- # systemctl enable httpd gmetad httpd
至此,我們現(xiàn)在能夠打開(kāi) Ganglia 的 Web 頁(yè)面 http://192.168.0.29/ganglia 并用步驟 2 中設(shè)置的憑證登錄。
Gangila Web 頁(yè)面
8、 在 Ubuntu 主機(jī)上,只需安裝 Ganglia-monitor,等同于 CentOS 上的 ganglia-gmond:
- $ sudo aptitude update && aptitude install ganglia-monitor
9、 編輯被監(jiān)控主機(jī)的 /etc/ganglia/gmond.conf 文件。與主節(jié)點(diǎn)主機(jī)上是相同的文件,除了被注釋掉的 cluster, udp_send_channel , udp_recv_channel 這里不應(yīng)被注釋:
- cluster {
- name = "Labs" # The name in the data_source directive in gmetad.conf
- owner = "unspecified"
- latlong = "unspecified"
- url = "unspecified"
- }
- udp_send_channel {
- mcast_join = 239.2.11.71
- host = localhost
- port = 8649
- ttl = 1
- }
- udp_recv_channel {
- mcast_join = 239.2.11.71 ## comment out
- port = 8649
- bind = 239.2.11.71 ## comment out
- }
之后重啟服務(wù)。
- $ sudo service ganglia-monitor restart
10、 刷新頁(yè)面,你將在 Home office grid / Labs cluster 中看到兩臺(tái)主機(jī)的各種統(tǒng)計(jì)及圖形化的展示(用下拉菜單選擇集群,本例中為 Labs):
Ganglia 中 Home office 網(wǎng)格報(bào)告
使用菜單按鈕(如上指出的),你可以獲取到每臺(tái)服務(wù)器和集群的信息。還可以使用 對(duì)比主機(jī)Compare Hosts選項(xiàng)卡來(lái)比較集群中所有服務(wù)器的狀態(tài)。
可以使用正則表達(dá)式選擇一組服務(wù)器,立刻就可以看到它們性能的對(duì)比:
Ganglia 服務(wù)器信息
我最喜歡的一個(gè)特點(diǎn)是對(duì)移動(dòng)端有友好的總結(jié)界面,可以通過(guò) Mobile 選項(xiàng)來(lái)訪問(wèn)。選擇你感興趣的集群,然后選中一個(gè)主機(jī)。
Ganglia 移動(dòng)端總結(jié)截圖
總結(jié)
本篇文章向大家介紹了 Ganglia,它是一個(gè)功能強(qiáng)大、擴(kuò)展性很好的監(jiān)控工具,主要用來(lái)監(jiān)控集群和網(wǎng)格。它可以隨意安裝,便捷的組合各種功能(你甚至可以嘗試一下官方網(wǎng)站提供的 Demo)。
此時(shí),你可能會(huì)發(fā)現(xiàn)許多知名的 IT 或非 IT 的企業(yè)在使用 Ganglia。除了我們?cè)谖恼轮刑峒暗闹猓€有很多理由這樣做,其中易用性,統(tǒng)計(jì)的圖形化(在名字旁附上臉部照片更清晰,不是嗎)可能是最重要的原因。
但是請(qǐng)不要拘泥于本篇文章,嘗試一下自己去做。如果你有任何問(wèn)題,歡迎給我留言。