ganglia-gmond.conf配置文件

运行下列命令能够生成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前端的指标名称



相关文章
相关标签/搜索