ganglia-gmond.conf配置文件
運行下列命令可以生成gmond默認配置文件:
User@host:$ gmond -t
配置文件由大括弧括起來的幾個section組成。這些section可以粗略劃分為兩個邏輯分類。第一類中的section處理主機和集群的配置;第二類中的section處理指標數據收集和調度的特定問題。
所有section名和屬性不區分大小寫,例如下列屬性是等價的:
name NAME Name NaMe
有些section是可選的,而有些則是必需的;有些section在配置文件中可能多次出現,而有些section可能只出現一次;有些section還可能包含subsection。
在需要大型復雜配置的情況下,include指令可以將gmond.conf文件劃分為多個文件。include指令支持typeglob的使用。例如下列命令表示gmond可以加載/etc/ganglia/confd./中所有以“.conf”結尾的文件:
include(‘/etc/ganglia/conf.d/*.conf‘)
註意: gmond.conf快速啟動
為了快速啟動和運行gmond,只需要設置默認配置文件中“cluster”section的name屬性。
配置文件由第三方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前端的指標名稱
來自為知筆記(Wiz)
ganglia-gmond.conf配置文件