简介
Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。
每台计算机都运行一个收集和发送度量数据的名为 gmond 的守护进程。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次结构模式,才使得 Ganglia 可以实现良好的扩展。gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。所有这些数据多次收集会影响节点性能。网络中的 “抖动”发生在大量小消息同时出现时,可以通过将节点时钟保持一致,来避免这个问题。
gmetad可以部署在集群内任一台节点或者通过网络连接到集群的独立主机,它通过单播路由的方式与gmond通信,收集区域内节点的状态信息,并以XML数据的形式,保存在数据库中。
由RRDTool工具处理数据,并生成相应的的图形显示,以Web方式直观的提供给客户端。
Ganglia 能够让你以集群(按服务器组)和网格(按地理位置)的方式更好地组织服务器。这样,我们可以创建一个包含所有远程主机的网格,然后将那些机器按照其它标准分组成小的集合。此外, Ganglia 的 web 页面对移动设备进行过优化,也允许你导出 csv和 .json 格式的数据。
原理
Ganglia包括如下几个程序,他们之间通过XDR(xml的压缩格式)或者XML格式传递监控数据,达到监控效果。集群内的节点,通过运行gmond收集发布节点状态信息,然后gmetad周期性的轮询gmond收集到的信息,然后存入rrd数据库,通过web服务器可以对其进行查询展示。
Ganglia工作模式
Ganglia收集数据可以工作在单播或多播模式下,默认为多播模式
- 单播:所有gmond节点将自己的监控数据发送到特定的一台或几台服务器上。可以跨网段(如果监控的集群主机处于不同网段,则需要使用此种方式)
- 多播:所有的gmond节点通过多播的形式发送各自的数据,也就是每一个gmond节点上面都完整的存了一份所有gmond节点的监控数据,gmetad只需要向其中的一个gmond索取数据即可,gmetad首先到数据源的第一个查询,如果失败,查询第二个,以此类推。
安装
安装环境:
- 服务端:192.168.255.124
- 客户端:192.168.255.123
服务端配置:
1、wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2、yum install -y ganglia rrdtool ganglia-gmetad ganglia-gmond ganglia-web
3、设置密码登录
[root@backup2] /etc/yum.repos.d$ htpasswd -c /etc/httpd/auth.basic adminganglia
New password:
Re-type new password:
Adding password for user adminganglia
4、设置访问权限验证
vim /etc/httpd/conf.d/ganglia.conf
5、vim /etc/ganglia/gmetad.conf
添加gridname
修改data_source行
说明:
定义集群名称,轮询间隔,以及集群中的节点。
如果采用多播模式,每台gmond节点都有本集群内节点服务器的所有监控数据,因此不必把所有节点都列出来。建议写入不低于2个,在第1个节点宕掉后,会自动找第2个节点取数据。
节点名称可以使用ip或者域名,启动gmetad时,会进行域名解析的。
6、vim /etc/ganglia/gmond.conf
(1)修改name和gmetad文件中data_source行名字相同
如果使用多播模式,设置就非常简单,不管是主节点还是监控端节点,gmond配置文件只需要修改cluster name即可。也就是做完第(1)步即可; 如果使用单播模式,需要继续设置:
(2)在 udp_send_chanel (udp发送通道)中,注释掉 mcast_join(此配置表示使用多播通道),添加host = 192.168.255.124,意思是指定接受数据的机器
(3)在 udp_recv_channel (udp接收通道)中,注释掉 mcast_join,bind变量设为主节点ip,该ip必须所有其他gmond可以访问到。
7、systemctl restart httpd gmetad gmond
systemctl enable httpd gmetad gmond
8、netstat -tunlp
客户端设置
1、yum install -y ganglia ganglia-gmond
2、vim /etc/ganglia/gmond.conf
修改cluster中的name。
如果是单播模式,继续修改配置如下
3、systemctl restart gmond
systemctl enable gmond
访问http://192.168.255.124:8080/ganglia,在弹出的窗口输入第三步中设置的账号密码。
参考链接