閱讀241 返回首頁    go 阿裏雲 go 技術社區[雲棲]


使用 Ganglia 對 Linux 網格和集群服務器進行實時監控

從係統管理員接手服務器和主機管理以來,像應用監控這樣的工具就成了他們的好幫手。其中比較有名的有 Nagios、 Zabbix、 Icinga 和 Centreon。以上這些是重量級的監控工具,讓一個新手管理員來設置,並使用其中的高級特性是有些困難的。

本文將向你介紹 Ganglia,它是一個易於擴展的監控係統。使用它可以實時查看 Linux 服務器和集群(圖形化展示)中的各項性能指標。

Ganglia 能夠讓你以集群(按服務器組)和網格(按地理位置)的方式更好地組織服務器。

這樣,我們可以創建一個包含所有遠程主機的網格,然後將那些機器按照其它標準分組成小的集合。

此外, Ganglia 的 web 頁麵對移動設備進行過優化,也允許你導出 csv 和 .json 格式的數據。

我們的測試環境包括一個安裝 Ganglia 的主節點服務器 CentOS 7 (IP 地址 192.168.0.29),和一個作為被監控端的 Ubuntu 14.04 主機(192.168.0.32)。我們將通過 Ganglia 的 Web 頁麵來監控這台 Ubuntu 主機。

下麵的例子可以給大家提供參考,CentOS7 作為主節點,Ubuntu 作為被監控對象。

安裝和配置 Ganglia

請遵循以下步驟,在主節點服務器安裝監控工具。

1、 啟用 EPEL 倉庫 ,然後安裝 Ganglia 和相關工具:


  1. # yum update && yum install epel-release
  2. # yum install ganglia rrdtool ganglia-gmetad ganglia-gmond ganglia-web

在上麵這步隨 Ganglia 將安裝一些應用,它們的功能如下:

  • rrdtool,Round-Robin 數據庫,它是一個儲存並圖形化顯示隨著時間變化的數據的工具;
  • ganglia-gmetad 一個守護進程,用來收集被監控主機的數據。被監控主機與主節點主機都要安裝 Ganglia-gmond(監控守護進程本身);
  • ganglia-web 提供 Web 前端,用於顯示監控係統的曆史數據和圖形。   2、 使用 Apache 提供的基本認證功能,為 Ganglia Web 界麵(/usr/share/ganglia)配置身份認證。

如果你想了解更多高級安全機製,請參閱 Apache 文檔的 授權與認證部分。

為完成這個目標,我們需要創建一個用戶名並設定一個密碼,以訪問被 Apache 保護的資源。在本例中,我們先來創建一個叫 adminganglia 的用戶名,然後給它分配一個密碼,它將被儲存在 /etc/httpd/auth.basic(可以隨意選擇另一個目錄 和/或 文件名, 隻要 Apache 對此有讀取權限就可以。) 


  1. # htpasswd -c /etc/httpd/auth.basic adminganglia

給 adminganglia 輸入兩次密碼完成密碼設置。

3、 修改配置文件 /etc/httpd/conf.d/ganglia.conf


  1. Alias /ganglia /usr/share/ganglia
  2. <Location /ganglia>
  3. AuthType basic
  4. AuthName "Ganglia web UI"
  5. AuthBasicProvider file
  6. AuthUserFile "/etc/httpd/auth.basic"
  7. Require user adminganglia
  8. </Location>

4、 編輯 /etc/ganglia/gmetad.conf

首先,使用 gridname 指令來為網格設置一個描述性名稱。


  1. gridname "Home office"

然後,使用 data_source 指令,後麵跟集群名(服務器組)、輪詢時間間隔(秒)、主節點主機和被監控節點的 IP 地址:


  1. data_source "Labs" 60 192.168.0.29:8649 # 主節點
  2. data_source "Labs" 60 192.168.0.32 # 被監控節點

5、 編輯 /etc/ganglia/gmond.conf

a) 確保集群的配置類似下麵。


  1. cluster {
  2. name = "Labs" # gmetad.conf 中的 data_source 指令的名字
  3. owner = "unspecified"
  4. latlong = "unspecified"
  5. url = "unspecified"
  6. }

b) 在 udp_send_chanel 中,注釋掉 mcast_join


  1. udp_send_channel {
  2. # mcast_join = 239.2.11.71
  3. host = localhost
  4. port = 8649
  5. ttl = 1
  6. }

c) 在 udp_recv_channel 中,注釋掉 mcast_join 和 bind 部分:


  1. udp_recv_channel {
  2. # mcast_join = 239.2.11.71 ## comment out
  3. port = 8649
  4. # bind = 239.2.11.71 ## comment out
  5. }

保存並退出。

6、打開 8649/udp 端口,使用 SELinux 確保 php 腳本(通過 Apache 運行)能夠連接到網絡:


  1. # firewall-cmd --add-port=8649/udp
  2. # firewall-cmd --add-port=8649/udp --permanent
  3. # setsebool -P httpd_can_network_connect 1

7、重啟 Apache、gmetad、gmond,並確保它們啟用了“開機啟動”。


  1. # systemctl restart httpd gmetad gmond
  2. # systemctl enable httpd gmetad httpd

至此,我們現在能夠打開 Ganglia 的 Web 頁麵 https://192.168.0.29/ganglia 並用步驟 2 中設置的憑證登錄。

[Gangila Web 頁麵][5]

Gangila Web 頁麵

8、 在 Ubuntu 主機上,隻需安裝 Ganglia-monitor,等同於 CentOS 上的 ganglia-gmond:


  1. $ sudo aptitude update && aptitude install ganglia-monitor

9、 編輯被監控主機的 /etc/ganglia/gmond.conf 文件。與主節點主機上是相同的文件,除了被注釋掉的 clusterudp_send_channel , udp_recv_channel 這裏不應被注釋:


  1. cluster {
  2. name = "Labs" # The name in the data_source directive in gmetad.conf
  3. owner = "unspecified"
  4. latlong = "unspecified"
  5. url = "unspecified"
  6. }
  7. udp_send_channel {
  8. mcast_join = 239.2.11.71
  9. host = localhost
  10. port = 8649
  11. ttl = 1
  12. }
  13. udp_recv_channel {
  14. mcast_join = 239.2.11.71 ## comment out
  15. port = 8649
  16. bind = 239.2.11.71 ## comment out
  17. }

之後重啟服務。


  1. $ sudo service ganglia-monitor restart

10、 刷新頁麵,你將在 Home office grid / Labs cluster 中看到兩台主機的各種統計及圖形化的展示(用下拉菜單選擇集群,本例中為 Labs):

Ganglia 中 Home office 網格報告

Ganglia 中 Home office 網格報告

使用菜單按鈕(如上指出的),你可以獲取到每台服務器和集群的信息。還可以使用 對比主機Compare Hosts選項卡來比較集群中所有服務器的狀態。

可以使用正則表達式選擇一組服務器,立刻就可以看到它們性能的對比:

Ganglia 服務器信息

Ganglia 服務器信息

我最喜歡的一個特點是對移動端有友好的總結界麵,可以通過 Mobile 選項來訪問。選擇你感興趣的集群,然後選中一個主機。

Ganglia 移動端總結截圖

原文發布時間為:2017-01-31

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-27 09:31:33

  上一篇:go  如何知道目錄及子目錄下文件的數量
  下一篇:go  OpenSSL 在 Apache 和 Dovecot 下的使用(一)