運行下列命令能夠生成gmond默認配置文件:前端
User@host:$ gmond -tweb
配置文件由大括弧括起來的幾個section組成。這些section能夠粗略劃分爲兩個邏輯分類。第一類中的section處理主機和集羣的配置;第二類中的section處理指標數據收集和調度的特定問題。正則表達式
全部section名和屬性不區分大小寫,例以下列屬性是等價的:安全
name NAME Name NaMe服務器
有些section是可選的,而有些則是必需的;有些section在配置文件中可能屢次出現,而有些section可能只出現一次;有些section還可能包含subsection。網絡
在須要大型複雜配置的狀況下,include指令能夠將gmond.conf文件劃分爲多個文件。include指令支持typeglob的使用。例以下列命令表示gmond能夠加載/etc/ganglia/confd./中全部以「.conf」結尾的文件:dom
include('/etc/ganglia/conf.d/*.conf')jvm
注意: gmond.conf快速啓動tcp
爲了快速啓動和運行gmond,只須要設置默認配置文件中「cluster」section的name屬性。ide
配置文件由第三方API——libconfuse進行語法分析。通常規則適用於libconfuse文件格式。尤爲是,在表示布爾值時,可使用yes、true和on表示正值,用no、false和off表示負值。布爾值不區分大小寫。
有8個section處理主機自身配置。
section:globals。globals這一section配置守護進程自己的通用特性,它在配置文件中只出現一次。下面是Ganglia 3.3.1中的默認globals section。
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 /*secs. Expires (removes from web interface) hosts in 1 day */
host_tmax = 20 /*secs */
cleanup_threshold = 300 /*secs */
gexec = no
send_metadata_interval = 0 /*secs */
}
daemonize(布爾類型)
當值爲true時,gmond將在後臺分散運行。當在守護進程管理器(如daemontool)下運行gmond時,將此值設置爲false。
setuid(布爾類型)
當值爲true時,gmond將user屬性指定的特定用戶的UID做爲有效UID;當值爲false時,gmond將不會改變其有效用戶。
debug_level(整數值)
當值爲0時,gmond將正常運行。當debug_level大於0時,gmond將在前臺運行並輸出調試信息。debug_level值越大,輸出越詳細。
max_udp_msg_len(整數值)
該值是gmond發送包所能包含的最大長度。通常狀況下該值默認不變。
mute(布爾類型):
當值爲true時,無論其餘配置指令如何,gmond將不能發送數據。「單收」(mute)gmond節點只不向其餘gmond守護進程發送數據,但仍然會響應諸如gmetad的外部輪詢器。
deaf(布爾類型):
當值爲true時,無論其餘配置指令如何,gmond將不能接收數據。在每一個集羣內擁有成千上萬節點的大型網格中,或者在細緻優化的HPC網格中(例如充分利用CPU的空閒週期),爲減小匯彙集羣狀態的相關開銷,常常將普通的計算節點設置爲單發。在這些情形下,某些特色的節點被預置爲單收,此時這些節點的性能指標將不會被測量,由於這些節點將不會用做網格的運算。由於這些節點的任務是匯聚,因此它們的性能數據會「污染」集羣內其餘的功能部分。
allow_extra_data(布爾類型)
當值爲false時,gmond將不會發送XML的EXTRA_ELEMENT和EXTRA_DATA部分。該值主要應用於用戶使用本身的前端並但願節省帶寬時。
host_dmax(以秒爲單位的整數值)
dmax是delete max的縮寫。當值爲0時,即便遠程主機中止報告,gmond也不會從列表裏刪除該主機。若是host_dmax設置爲正值,當gmond在「host_dmax」秒內接收不到某臺主機的數據,gmond將刪除該主機。
host_tmax(以秒爲單位的整數值)
tmax是timeout max的縮寫,表明gmond等待一臺主機更新的最長時間。由於消息可能在網絡中丟失,因此若是在4倍的host_tmax時間內接收不到某臺主機的任何消息,gmond就認爲該主機已經崩潰。
cleanup_threshold(以秒爲單位的整數值)
gmond清除過時數據的最小時間間隔。
gexec(布爾類型)
當值爲true時,gmond將容許主機運行gexec任務。這種方式須要運行gexecd並安裝合適的驗證碼。
override_hostname = "192.168.0.43" 指定本節點顯示的名稱
send_metadata_interval(以秒爲單位的整數值)
該值設置gmond兩次發送元數據包的時間間隔。元數據包是用來描述全部激活指標的數據包。該指令默認設置爲0,表示gmond只有在初始啓動和收到其餘遠程運行的gmond節點請求時纔會發送元數據包。若是向集羣內添加一臺運行gmond的主機,則該主機節點須要向其餘節點公佈自身信息,並告知目前支持的指標標準。在多播模式下,因爲任何一個節點均可以向集羣內的其餘節點請求發送元數據,所以該問題並不存在。然而,在單播模式下必須設置重發間隔。間隔值是兩次重發之間的最少秒數。
module_dir(路徑;可選)
該指令用來標識已找到的指標收集模塊的路徑。若是省略,則默認爲編譯時選項值:--with-moduledir。該選項值即爲libganglia安裝目錄下名爲Ganglia的子目錄。爲了在特定gmond中找到該指令的默認值,能夠經過下面命令生成一個簡單配置文件:
# gmond -t
例如,在32位兼容英特爾的Linux主機上,默認值一般是/usr/lib/ganglia。
section:cluster。每一個gmond守護進程會使用在cluster section中定義的屬性來報告它所屬集羣的信息。默認值爲字符串「unspecified」。使用默認值系統便可正常工做。該section在配置文件中可能只出現一次,下面爲該section的默認配置:
cluster {
name = "unspecified"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
注意: cluster section中的屬性和gmond中以XML格式輸出的CLUSTER標識符的屬性相對應。
name(文本格式)
指定集羣名稱。當輪詢節點的集羣狀態的XML集合時,把該名稱插入CLUSTER元素內。輪詢該節點的gmetad會使用該值來命名存儲集羣數據的RRD文件。該指令將取代gmetad.conf配置文件中指定的集羣名稱。
owner(文本格式)
指定集羣管理員。
latlong(文本格式)
指定該集羣在地區上的GPS座標的經緯度。
url(文本格式)
指定攜帶集羣特定信息(如集羣用途和使用細節)的URL。
注意: cluster section指定的name屬性將該主機置於一個集羣內。多播地址和UDP端口指定一個主機是否在某個集羣內。name屬性只是充當輪詢時的標識符。
section: host。host section提供運行gmond主機的相關信息。目前只支持地址字符串屬性。默認host section爲:
host {
location = "unspecified"
}
location(文本格式)
用來標識主機位置,描述的格式通常與站點位置有關, 常用rack,U[,blade]的標識方式。
section: UDP channels。UDP發送和接收通道肯定gmond節點間的交互方式。集羣是由UDP通訊通道所定義的,也就是說,集羣只不過是共享一樣發送或接收通道的一些gmond節點。
gmond集羣內每一個節點默認經過UDP將自身指標數據多播至其餘節點,同時偵聽其餘節點的相似UDP多播。這種方式很容易設置和維護:集羣內每一個節點共享多播地址,並且每一個新節點可自動被發現。然而,正如在以前章節對單發和單收節點的介紹,有時須要經過單播地址指定某些節點。
出於這種緣由, 任意數量的gmond發送和接收通道能夠獨立配置以知足特定環境需求。每一個發送通道均可以定義gmond發佈本身指標數據的一種新方式,並且每一個接收通道均可以定義gmond接收其餘節點指標數據的一種方式,多是單播,也多是多播;多是IPv4,也多是IPv6。
請注意gmond節點不能配置爲向多個Ganglia集羣發送指標數據,也不該該嘗試從多個集羣接收指標數據。
UDP通道是經過udp_(send|receive)_channel section建立的。下面給出默認的UDP發送通道:
udp_send_channel {
#bind_hostname = yes
mcast_join = 239.2.11.71
port = 8649
ttl = 1
}
bind_hostname(布爾類型;可選;多播或單播)
通知gmond使用源地址解析主機名。
mcast_join(IP;可選;僅多播)
當指定該選項時,gmond將建立UDP套接字並加入由IP地址指定的多播組。該選項建立一個多播通道,並與host相互排斥。
mcast_if(文本格式;可選;僅多播)
當指定該選項時,gmond將發送來自指定接口(例如eth0)的數據。
host(文本格式或IP;可選;僅單播)
當指定該選項時,gmond將向已命名主機發送數據。該選項建立一個單播通道,並與mcast_join相互排斥。
port(數字;可選;多播或單播)
該選項指定gmond發送數據的端口號。若是未指定,則默認爲端口8649。
ttl(數字;可選;多播或單播)
time-to-live的縮寫。該設置在多播環境中尤爲重要,由於該值限制了指標數據所容許傳播的躍點(hop)數。當該值設置得比實際所需的更大時,指標數據將可以經過WAN鏈接傳輸到多個站點,甚至跳出WAN進入全局Internet。
下面是默認的UDP接收通道:
udp_recv_channel {
mcast_join = 239.2.11.71
port = 8649
bind = 239.2.11.71
}
mcast_join(IP;可選;僅多播)
當指定該選項時,gmond將偵聽指定IP的多播組所發送的多播數據包。若是未指定多播屬性,gmond將在指定端口建立單播UDP服務器。
mcast_if(文本格式;可選;僅多播)
當指定該選項時,gmond將偵聽指定接口(例如eth0)的數據。
bind(IP;可選;多播或單播)
當指定該選項時,gmond將捆綁到指定的本地地址。
port(數字;可選;多播或單播)
該選項指定gmond接收數據的端口號。若是未指定,則默認使用端口8649。
family(inet4|inet6;可選;多播或單播)
默認IP版本爲inet4。若是用戶想要將該端口綁定到inet6端口,請指定family屬性爲inet6。Ganglia不容許IPv6=>IPv4的映射(出於便捷性和安全性考慮)。若是用戶想同時對一個特殊端口進行inet4和inet6偵聽,請爲該端口定義兩個分離的接收通道。
acl(ACL定義;可選;多播或單播)
經過指定接入控制列表(Access Control Line,ACL)能夠對接收通道進行精細地接入控制。 詳見後面對ACL語法的詳細解釋。
section: TCP Accept Channel。TCP接收通道(TCP Accept Channel)是gmond節點建立向gmetad或其餘外部輪詢器彙報集羣狀態的通道。用戶能夠配置任意多選項。默認TCP接收通道爲:
tcp_accept_channel {
port = 8649
}
bind(IP;可選)
當指定該選項時,gmond將捆綁到指定的本地地址。
port(數字)
gmong接收鏈接的端口號。
family(inet4|inet6;可選;多播或單播)
默認IP版本爲inet4。若是用戶想要將該端口綁定到inet6端口,請指定family屬性爲inet6。Ganglia不容許IPv6=>IPv4的映射(出於便捷性和安全性考慮)。若是用戶想同時對一個特殊端口進行inet4和inet6偵聽,請爲該端口定義兩個分離的接收通道。
interface(文本格式;可選)
當指定該選項時,gmond將偵聽指定接口(例如eth0)數據。
acl(ACL定義;可選;多播或單播)
經過指定接入控制列表(ACL)能夠對接收通道進行精細地接入控制。
Access control。udp_recv_channel指令和tcp_accept_channel指令能夠包含一個接入控制列表(ACL)。該列表容許用戶指定gmond接收或拒絕鏈接的地址和地址範圍。下面是ACL的一個示例:
acl {
default = "deny"
access {
ip = 192.168.0.0
mask = 24
action = "allow"
}
access {
ip = ::ff:1.2.3.0
mask = 120
action = "deny"
}
}
對接入控制概念稍有認識的人都應該可以讀懂該語法。default屬性爲整個ACL定義了默認方式。任意的access塊能夠指定列表主機或IP地址,以及這些地址的相應allow或deny行爲。mask屬性以CIDR記法定義了子網掩碼,容許用戶指定地址範圍,而非一個個的具體地址。注意,當ACL衝突時,以第一個匹配項爲準。
optional section: sFlow。sFlow是用於監測高速路由網絡的工業標準技術。sFlow聚合器最初定位爲嵌入式網絡硬件,如今服務於通用操做系統和諸如Tomcat、memcached和Apache Web Server等流行應用。gmond能夠經過配置來充當網絡中sFlow代理的聚合器,收集sFlow代理的數據並實現對gmetad的透明傳輸。第8章將提供更多關於sFlow互操做性的信息。整個sFlow section是可選的。下面是sFlow的默認配置:
#sflow {
# udp_port = 6343
# accept_vm_metrics = yes
# accept_jvm_metrics = yes
# multiple_jvm_instances = no
# accept_http_metrics = yes
# multiple_http_instances = no
# accept_memcache_metrics = yes
# multiple_memcache_instances = no
#}
udp_port(數字;可選)
gmond接收sFlow數據的端口。
其餘剩餘配置參數用來處理特定應用的sFlow數據類型,詳見第8章。
section: modules。該section包含了加載指標模塊的必要參數。指標模塊是動態可加載的共享目標文件,用於擴展gmond可收集的指標。第5章將更爲詳細地介紹如何使用模塊來擴展gmond。
每一個modules section必須至少包含一個module subsection。module subsection由5個屬性組成。默認配置包含了默認安裝中全部可用模塊(module),若是不添加新模塊則無需更改該節。下面給出假設的模塊example_module的配置示例:
modules {
module {
name = "example_module"
language = "C/C++"
enabled = yes
path = "modexample.so"
params = "An extra raw parameter"
param RandomMax {
value = 75
}
param ConstantValue {
value = 25
}
}
}
name(文本格式)
若是模塊由C/C++開發,則模塊名由模塊結構所決定。若是模塊由諸如Python的解釋型語言開發完成,則模塊名與源文件名相同。
language(文本格式,可選)
若是未指定開發模塊的源代碼語言,則默認爲C/C++。目前只支持C、C++和Python。
enabled(布爾類型,可選)
經過配置文件設置模塊可用或不可用。若是enabled指令不包含在模塊配置中,則默認爲yes。
注意: 若是一個模塊已經被禁用,可是它包含的指標仍存在於當前指標收集組的列表中時,gmond將發出警告信息,可是將忽略該指標繼續正常運行。
path(文本格式)
指示gmond預設的加載模塊路徑(只支持C/C++編譯的動態可加載模塊)。若是path值不以正斜線開頭,則該值將附加到globals section的module_path屬性上。
param(文本格式;可選)
用來將字符串參數傳送到模塊初始化函數(只支持C/C++)。經過包含多個param section,能夠將多個參數傳送到模塊初始化函數。每一個param section必須命名,幷包含一條value指令。
section: collection_group。collection_group實體指定了gmond包含的指標及gmond收集和廣播這些指標的週期。用戶能夠定義任意多的收集組,每一個收集組必須包含至少一種metric section。
這些邏輯指標分組基於相同的收集間隔。這些在gmond.conf中定義的分組並不影響用於Web接口中的分組,也不能用這種方式來指定Web接口的分組名稱。節選部分默認配置以下:
collection_group {
collect_once = yes
time_threshold = 1200
metric {
name = "cpu_num"
title = "CPU Count"
}
}
collection_group {
collect_every = 20
time_threshold = 90
/* CPU status */
metric {
name = "cpu_user"
value_threshold = "1.0"
title = "CPU User"
}
metric {
name = "cpu_system"
value_threshold = "1.0"
title = "CPU System"
}
}
collect_once(布爾類型)
有些指標「不變」,也就是說在兩次重啓時不變化。這些指標包括OS類型和系統CPU數量等,只在初始啓動時收集一次,並將其collect_once屬性設置爲yes。該屬性與collect_every相互排斥。
collect_every(秒)
該值指定了收集組的輪詢間隔。在上例中,cpu_user和cpu_system指標的收集間隔是20秒。
time_threshold(秒)
gmond發送collection_group所指定的指標數據到全部已配置的udp_send_channels的最大時間。
name(文本格式)
指標收集模塊定義的單個指標標準名稱。每一個加載模塊通常定義好幾種單獨的指標。name能夠由name_match參數替換。使用name_match能夠經過單個定義來配置多個符合某個正則表達式的指標,如Perl兼容的正則表達式(pcre)的語法: name_match = 「multicpu_([a-z]+)([0-9]+)」。
注意: 經過在gmond上運行一個–m轉換(switch )能夠得到可用指標名列表。
value_threshold(數字)
每次收集到指標數據時,會將新值與上一次的數值進行比較。當兩者差異大於value_threshold時,整個收集組被髮送至已定義的udp_send_channels。在不一樣的指標模塊中該值表示不一樣的指標單位,例如,對於CPU統計,該值表明百分比,網絡統計則將該值理解爲原始字節數。
注意: 當收集組中的任意一個指標超過value_threshold時,該收集組內的全部指標將發送到UDP接收通道。
title(文本格式)
一種用戶化的用於Web前端的指標名稱