Ganglia快速開始嚮導

快速開始嚮導

介紹

Ganglia 監控套件包括三個主要部分:gmond,gmetad,和網頁接口,通常被稱爲ganlia-web

gmond 是一個守護進程,他運行在每一個需要監測的節點上,收集監測統計,發送和接受在同一個組播或單播通道上的統計信息
*如果他是一個發送者(mute=no)他會收集基本指標,比如系統負載(load_one),CPU利用率。他同時也會發送用戶通過添加C/Python模塊來自定義的指標。
*如果他是一個接收者(deaf=no)他會聚合所有從別的主機上發來的指標,並把它們都保存在內存緩衝區中。
gmetad 也是一個守護進程,他定期檢查gmonds,從那裏拉取數據,並將他們的指標存儲在RRD存儲引擎中。他可以查詢多個集羣並聚合指標。他也被用於生成用戶界面的web前端。
ganglia-web 顧名思義,他應該安裝在有gmetad運行的機器上,以便讀取RRD文件。

集羣是主機和度量數據的邏輯分組,比如數據庫服務器,網頁服務器,生產,測試,QA等,他們都是完全分開的,你需要爲每個集羣運行單獨的gmond實例。
一般來說每個集羣需要一個接收的gmond,每個網站需要一個gmetad。

安裝

最簡單的方法來安裝就是使用二進制包。在Ubuntu/Debian 上,你可以用apt-get來安裝。

apt-get install ganglia-monitor gmetad

補充:我做實驗是用CentOS,在centos上只需要添加epel和rpmfusion庫即可使用以下命令分別安裝上述三個組件

yum install ganglia-gmond
yum install ganglia-gmetad
yum install ganglia-web

防火牆規則

默認情況下gmond使用UDP協議的8649端口(在udp_send_channel 和udp_rec_channel中被指定),gmetad下載統計數據通過TCP的8649端口(在tcp_accept_channel中被指定)。
如果你的防火牆有任何的規則阻止這些端口上的通信,那麼你的統計信息就不會被顯示了。

單個集羣配置

如果你只有少數主機需要處理,我們推薦使用單個集羣,因爲這是最容易啓用和配置的。唯一你需要做的是決定是否要啓用單播或者組播傳輸。
組播模式是默認的設置,也是最簡單的使用方式,並且他提供沉餘。對“抖動”敏感的環境可能需要考慮啓用Ganglia在單播模式下運行,他可以顯著的減少主機間喋喋不休的交流,不過就是配置起來複雜一點。像Amazon’s AWS EC2產品這樣的環境就是不支持組播的,所以單播是惟一可用的設置選項。

組播

如果你正在使用組播傳輸,那麼你沒必要改變任何東西,因爲這是Ganglia包安裝默認的。唯一要做的就是把gmetad指向一個或幾個運行着gmond的主機。沒有必要列出每一個單個主機,因爲gmond被設置爲接受模式時會包含所有主機的列表以及整個集羣的統計信息。

# /etc/gmetad.conf on monhost
data_source "MyCluster" monhost

單播

要配置成爲單播你應該指定一個(或者多個)接受的主機,比如我將要挑選mon1主機作爲接收者。mon1的gmond.conf應該看起來像這樣。

globals {
  daemonize = yes
  setuid = yes
  user = nobody
  debug_level = 0
  max_udp_msg_len = 1472
  mute = no
  deaf = no
  allow_extra_data = yes
  host_dmax = 86400 /* Remove host from UI after it hasn't report for a day */
  cleanup_threshold = 300 /*secs */
  gexec = no
  send_metadata_interval = 30 /*secs */
}

cluster {
  name = "Production"
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}

host {
  location = "unspecified"
}

udp_send_channel {
  host = mon1
  port = 8649
  ttl = 1
}
udp_recv_channel {
  port = 8649
}

tcp_accept_channel {
  port = 8649
}

在其他的所有主機上,你只需要配置這個

globals {
  daemonize = yes
  setuid = yes
  user = nobody
  debug_level = 0
  max_udp_msg_len = 1472
  mute = no
  deaf = yes
  allow_extra_data = yes
  host_dmax = 86400 /* Remove host from UI after it hasn't report for a day */
  cleanup_threshold = 300 /*secs */
  gexec = no
  send_metadata_interval = 30 /*secs */
}

cluster {
  name = "Production"
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}

host {
  location = "unspecified"
}

udp_send_channel {
  host = mon1
  port = 8649
  ttl = 1
}

請注意send_metadata_interval被設置爲30秒。Ganglia的度量指標從他的元數據間隔發送得到的。元數據包含諸如度量分組,類型等等。假如你重啓了接收的gmond主機,那麼元數據就會丟失,gmond就不知道如何處理度量數據,因此會把他們拋棄。這會導致生成空白的圖表。在組播模式下,gmonds可以和其他任意一臺主機通信,在元數據丟失情況請求重新獲取。但這在單播模式下是不可能的,因此你需要命令gmond定期的發送元數據。

現在在你的gmetad.conf中放置

# /etc/gmetad.conf on mon1
data_source "Production" mon1

重啓所有,應該會生效了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章