天天看點

分布式監控系統ganglia配置文檔

 一、Ganglia的元件

Ganglia包括如下程式,他們之間通過XML格式傳遞監控資料,達到監控效果。 

Gmetad 這個程式負責收集各個cluster的資料,并更新到rrd資料庫中。 

Gmond 收集本機的監控資料,發送到其他機器上。收集其他機器的監控資料,供Gmetad讀取。預設監聽端口8649 

web front-end 一個基于web的監控界面,需要和Gmetad安裝在同一個節點上,從Gmetad取資料,并且讀取rrd資料庫,生成圖檔,顯示出來。 

二、Ganglia的工作模式

Ganglia的收集資料工作可以工作在單點傳播(unicast)或多點傳播(multicast)模式下,預設為多點傳播模式。 

單點傳播:發送自己收集到的監控資料到特定的一台或幾台機器上,可以跨網段 

多點傳播:發送自己收集到的監控資料到同一網段内所有的機器上,同時收集同一網段内的所有機器發送過來的監控資料。因為是以廣播包的形式發送,是以需要同一網段内。但同一網段内,又可以定義不同的發送通道。

三、Ganglia的安裝

Ganglia的安裝非常簡單,分為監控管理端(Gmetad)和用戶端(Gmond)安裝兩部分,已經寫成安裝腳本,這裡不在描述。

推薦安裝版本是ganglia-3.4.0,可以在http://sourceforge.net/projects/ganglia/files/下載下傳安裝。

四、Ganglia的配置

這裡介紹一個簡單的Ganglia配置構架,即一個監控管理端和多個用戶端,我們假定gmond工作在多點傳播模式,并且有一個Cluster1的叢集,裡面有10台伺服器(從host1到host10),在同一個網段内。

1、監控管理端配置

監控管理端的配置檔案是gmetad.conf,在安裝Ganglia的etc目錄下可以找到,這個檔案配置非常簡單,介紹如下:

data_source "Cluster1" host1 host2

xml_port 8651

interactive_port 8652

rrd_rootdir "/var/lib/ganglia/rrds"

data_source參數定義了叢集名字,以及叢集中的節點。由于采用multicast模式,每台gmond節點都有本Cluster1内節點機器的所有監控資料,是以不需要把所有節點寫入data_source中。建議寫入不低于2個,在host1節點當機的時候,會自動找host2節點取資料。

xml_port定義了一個收集資料彙總的互動端口,如果不指定,預設是8651,可以通過telnet這個端口得到監控管理端收集到的用戶端的所有資料。

interactive_port 定義了Web端擷取資料的端口,這個端口在配置Ganglia的web監控界面時需要指定。

rrd_rootdir參數定義了rrd資料庫的存放路徑,gmetad收集到監控資料後,會更新到該目錄下的對應的rrd資料庫中。

上面通過data_source參數定義了一個監控叢集,如果要監控多個應用系統,可以通過如下方式定義:

data_source "my cluster" 10 localhost  my.machine.edu:8649  1.2.3.5:8655

data_source "my grid" 50 1.3.4.7:8655 grid.org:8651 grid-backup.org:8651

data_source "another source" 1.3.4.7:8655  1.3.4.8

在定義叢集節點的時候,可以采用主機名、IP位址等形式,也可以加端口,如果不加端口的話,預設是8649端口,同時可以設定采集資料的頻率,如上面的“10 localhost、50 1.3.4.7:8655”等,分别表示每隔10秒鐘、50秒鐘采集一次資料。

2、用戶端配置

用戶端監控安裝完成後,配置檔案位于安裝Ganglia的etc目錄下,名稱為gmond.conf,這個配置檔案稍微複雜,介紹如下:

globals {

  daemonize = yes        #以背景的方式運作

  setuid = yes

  user = nobody          #運作gmond的使用者

  debug_level = 0        #調試級别

  max_udp_msg_len = 1472

  mute = no            #啞巴,本節點将不會再廣播任何自己收集到的資料到網絡上

  deaf = no             #聾子,本節點将不再接收任何其他節點廣播的資料包

  allow_extra_data = yes

  host_dmax = 0 /*secs */

  cleanup_threshold = 300 /*secs */

  gexec = no             #是否使用gexec

  send_metadata_interval = 0

}

cluster {

  name = "Cluster1"     #本節點屬于哪個cluster

  owner = "junfeng"     #誰是該節點的所有者

  latlong = "unspecified"   #在地球上的坐标,經度、緯度?

  url = "unspecified"

host {

  location = "unspecified"  

 }

udp_send_channel {       #udp包的發送通道

  mcast_join = 239.2.11.71   #多點傳播,工作在239.2.11.71通道下。如果使用單點傳播模式,則要寫host = host1,單點傳播模式下也可以配置多個udp_send_channel

  port = 8649            #監聽端口

  ttl = 1

udp_recv_channel {           #接收udp包配置

  mcast_join = 239.2.11.71   #同樣工作在239.2.11.71通道下

  port = 8649                #監聽端口

  bind = 239.2.11.71         #綁定

tcp_accept_channel {

  port = 8649               #通過tcp協定監聽的端口,遠端可以通過連結8649端口得到監控資料

3、Ganglia之Web端配置

Ganglia的web監控界面是基于PHP的,是以需要安裝PHP環境,PHP環境的安裝不在介紹,可以在http://sourceforge.net/projects/ganglia/files/下載下傳ganglia-web,然後放到web根目錄即可,推薦下載下傳ganglia-web-3.5.7版本。

配置ganglia的web界面比較簡單,隻需要修改幾個php檔案即可,首先第一個是conf_default.php,可以将conf_default.php重命名為conf.php,也可以保持不變,ganglia的web預設先找conf.php,找不到會繼續找conf_default.php,需要修改的内容如下:

$conf['gmetad_root'] = "/var/lib/ganglia"; # ganglia web根目錄

$conf['rrds'] = "${conf['gmetad_root']}/rrds"; #ganglia web讀取rrds資料庫的路徑

$conf['dwoo_compiled_dir'] = "${conf['gmetad_root']}/dwoo/compiled"; #需要777權限

$conf['dwoo_cache_dir'] = "${conf['gmetad_root']}/dwoo/cache"; #需要777權限

$conf['rrdtool'] = "/opt/rrdtool/bin/rrdtool"; #指定rrdtool的路徑

$conf['graphdir']= $conf['gweb_root'] . '/graph.d'; #生成圖形模闆目錄

$conf['ganglia_ip'] = "127.0.0.1"; #gmetad伺服器的位址

$conf['ganglia_port'] = 8652; #gmetad伺服器的互動式提供監控資料端口釋出

五、管理ganglia

所有配置操作完成後,即可啟動ganglia服務了,首先在監控管理端啟動gmetad服務:

/etc/init.d/gmetad start

接着啟動apache的web服務:

/usr/local/apache2/bin/apachectl start

最後在每個用戶端啟動gmond服務:

/etc/init.d/gmond start

最後附上一張web截圖:

<a href="http://blog.51cto.com/attachment/201303/103810985.png" target="_blank"></a>

本文轉自南非螞蟻51CTO部落格,原文連結: http://blog.51cto.com/ixdba/1149003,如需轉載請自行聯系原作者