返回介绍

7.5 配置一个 Ganglia 分布式监控系统

发布于 2025-04-21 21:33:23 字数 5605 浏览 0 评论 0 收藏

7.5.1 Ganglia 配置文件介绍

Ganglia 的配置文件主要有两个,分别是监控管理端的 gmetad.conf 和客户端的 gmond.conf 文件。根据 Ganglia 安装方式的不同,配置文件的路径也不相同,通过 yum 源方式安装的 Ganglia,默认的配置文件位于/etc/ganglia 下,而通过源码方式安装的 Ganglia,配置文件路径位于 Ganglia 安装路径的 etc 目录下,例如,前面通过源码方式安装的 Ganglia 配置文件路径为/opt/app/ganglia/etc。在监控管理端,只需要配置 gmetad.conf 文件即可,而在客户端也只需要配置 gmond.conf 文件就行了。

7.5.2 Ganglia 监控系统架构图

Ganglia 支持多种监控架构,这是由 gmetad 的特性决定的,gmetad 可以周期性地去多个 gmond 节点收集数据,这就是 ganglia 的两层架构。同时,gmetad 不但可以从 gmond 收集数据,也可以从其他的 gmetad 得到数据,这就形成了 Gnaglia 的三层架构。多种架构方式也体现了 Ganglia 作为分布式监控系统的灵活性和扩展性。

这里介绍一个简单的 Ganglia 配置架构,即一个监控管理端和多个客户端的两层架构。我们假定 gmond 工作在多播模式,并且有一个 Cluster1 集群,其中有 4 台要监控的服务器,主机名从 cloud0 到 cloud3,这 4 台主机在同一个网段内。

7.5.3 Ganglia 监控管理端配置

监控管理端的配置文件是 gmetad.conf,这个配置文件内容比较多,但是需要修改的配置仅有如下几个:

data_source "Cluster1" cloud0 cloud2
gridname "TopGrid"
xml_port 8651
interactive_port 8652
rrd_rootdir "/var/lib/ganglia/rrds"

各参数含义如下。

- data_source:此参数定义了集群名字,以及集群中的节点。Cluster1 就是这个集群的名称,cloud0 和 cloud2 指明了从这两个节点收集数据,Cluster1 后面指定的节点名可以是 IP 地址,也可以是主机名,由于采用了多播模式,每个 gmond 节点都有本 Cluster1 集群节点的所有监控数据,因此不需要把所有节点的都写入 data_source 中。但是建议写入不低于 2 个,这样,在 cloud0 节点出现故障的时候,gmetad 会自动到 cloud2 节点采集数据,这样就保证了 Ganglia 监控系统的高可用性。

上面通过 data_source 参数定义了一个服务器集群 Cluster1,对于要监控多个应用系统的情况,还可以对不同用途的主机进行分组,定义多个服务器集群,分组方式可以通过下面的方法定义:

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

可以通过定义多个 data_source 来实现监控多个服务器集群,而每个服务器集群在定义集群节点的时候,可以采用主机名或 IP 地址等形式,也可以加端口,如果不加端口,默认端口是 8649,同时可以设定采集数据的频率,如上面的“10 localhost、501.3.4.7:8655”等,分别表示每隔 10s、50s 采集一次数据。

- gridname:此参数是定义一个网格名称。一个网格有多个服务器集群组成,每个服务器集群由“data_source”选项来定义。

- xml_port:此参数定义了一个收集数据汇总的交互端口,如果不指定,默认是 8651,可以通过 telnet 这个端口得到监控管理端收集到的客户端的所有数据。

- interactive_port:此参数定义了 Web 端获取数据的端口,这个端口在配置 Ganglia 的 Web 监控界面时需要指定。

- rrd_rootdir:此参数定义了 rrd 数据库的存放路径,gmetad 在收集到监控数据后会将其更新到该目录下对应的 rrd 数据库中。

到这里为止,在 Ganglia 监控管理端的配置完成了。

7.5.4 Ganglia 的客户端配置

Ganglia 监控的客户端 gmond 安装完成后,配置文件位于 Ganglia 安装路径的 etc 目录下,名称为 gmond.conf,这个配置文件稍微复杂,如下所示:

globals {
daemonize = yes   #
是否后台运行,这里表示以后台的方式运行
setuid = yes
     #
是否设置运行用户,在 Windows
中需要设置为 false
user = nobody     #
设置运行的用户名称,必须是操作系统已经存在的用户,默认是 nobody
debug_level = 0   #
调试级别,默认是 0
,表示不输出任何日志,数字越大表示输出的日志越多
max_udp_msg_len = 1472
  mute = no       #
是否发送监控数据到其他节点,设置为“no
”表示本节点将不再广播任何自己收集
                  #
到的数据到网络上
  deaf = no       #
是否接受其他节点发送过来的监控数据,设置为“no
”表示本节点将不再接收任何
                  #
其他节点广播的数据包
allow_extra_data = yes#
是否发送扩展数据
host_dmax = 0 /*secs */#
是否删除一个节点,0
代表永远不删除,0
之外的整数代表节点的不响应时间,
                       #
超过这个时间后,Ganglia
就会刷新集群节点信息进而删除此节点
cleanup_threshold = 300 /*secs */  #gmond
清理过期数据的时间
gexec = no                 #
是否使用 gexec
来告知主机是否可用,这里不启用
send_metadata_interval = 0#
在单播协议中,新添加的节点在多长时间内响应一下以表示自己的存在,
                          # 0
代表仅在 gmond
启动时通知一次,单位为 s
}
cluster {
name = "Cluster1"          #
集群的名称,是区分此节点属于某个集群的标志,必须和监控服务端
                           # data_source
中的某一项名称匹配
owner = "junfeng"          #
节点的拥有者,也就是节点的管理员
latlong = "unspecified"    #
节点的坐标,如经度、纬度等,一般无需指定
url = "unspecified"
      #
节点的 URL
地址,一般无需指定
}
host {
  location = "unspecified" #
节点的物理位置,一般无需指定
 }
udp_send_channel {         # UDP
包的发送通道
mcast_join = 239.2.11.71   #
指定发送的多播地址,其中 239.2.11.71
是一个 D
类地址。如果使用
                           #
单播模式,则要写 host = host1
,在单播模式下也可以配置多个
                           # udp_send_channel
  port = 8649              #
监听端口
ttl = 1
}
udp_recv_channel {         #
接收 UDP
包配置
mcast_join = 239.2.11.71   #
指定接收的多播地址,同样也是 239.2.11.71
这个 D
类地址
  port = 8649              #
监听端口
  bind = 239.2.11.71       #
绑定地址
}
tcp_accept_channel {
  port = 8649              #
通过 TCP
协议监听的端口,在远端可以通过连接到 8649
端口得到监控数据
}

在一个集群内,所有客户端的配置是一样的。完成一个客户端配置后,将配置文件复制到此集群内的所有客户端主机上即可完成客户端主机的配置。

7.5.5 Ganglia 的 Web 端配置

Ganglia 的 Web 监控界面是基于 PHP 的,因此需要安装 PHP 环境。PHP 环境的安装这里不做介绍,读者可以在 http://sourceforge.net/projects/ganglia/files/下载 ganglia-web 的最新版本,然后将 ganglia-web 程序放到 Apche 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['gweb_confdir'] = "/var/www/html/ganglia"; # ganglia web
的根目录
$conf['gmetad_root'] = "/opt/app/ganglia";      # ganglia
程序安装目录
$conf['rrds'] = "${conf['gmetad_root']}/rrds";  # ganglia web
读取 rrd
数据库的路径,
这里是/opt/app/ganglia/rrds
$conf['dwoo_compiled_dir'] = "${conf['gweb_confdir']}/dwoo/compiled";   #
需要“777
”权限
$conf['dwoo_cache_dir'] = "${conf['gweb_confdir']}/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
服务器的交互式提供监控数据端口发布

这里需要说明的是:“$conf['dwoo_compiled_dir']”和“$conf['dwoo_cache_dir']”指定的路径在默认情况下可能不存在,因此需要手动建立 compiled 和 cache 目录,并授予 Linux 下“777”的权限。另外,rrd 数据库的存储目录/opt/app/ganglia/rrds 一定要保证 rrdtool 可写,因此需要执行授权命令:

chown 
–R nobody:nobody /opt/app/ganglia/rrds

这样 rrdtool 才能正常读取 rrd 数据库,进而将数据通过 Web 界面展示出来。其实 ganglia-web 的配置还是比较简单的,一旦配置出错会给出提示,根据错误提示进行问题排查,一般都能找到解决方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。