官网:
http://ganglia.info/
http://ganglia.github.io/
http://metrics.dropwizard.io/3.1.0/getting-started/
Ganglia简介
Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点。每台计算机都运行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为 gmond 的守护进程。它将从操作系统和指定主机中收集。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次 结构模式,才使得 Ganglia 可以实现良好的扩展。gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。
组成模块
Ganglia由gmond、gmetad和gweb三部分组成:
gmond(Ganglia Monitoring Daemon)是一种轻量级服务,安装在每台需要收集指标数据的节点主机上。gmond在每台主机上完成实际意义上的指标数据收集工作,并通过侦听/通告协议和集群内其他节点共享数据。使用gmond,你可以很容易收集很多系统指标数据,如CPU、内存、磁盘、网络和活跃进程的数据等。
gmetad(Ganglia Meta Daemon)是一种从其他gmetad或gmond源收集指标数据,并将其以RRD格式存储至磁盘的服务。gmetad为从主机组收集的特定指标信息提供了简单的查询机制,并支持分级授权,使得创建联合监测域成为可能。
gweb(Ganglia Web)gweb是一种利用浏览器显示gmetad所存储数据的PHP前端。在Web界面中以图表方式展现集群的运行状态下收集的多种不同指标数据。
安装使用
Ubuntu 14.04下测试安装
Client
安装
sudo apt-get install ganglia-monitor
配置
http://imcn.me/html/y2014/21624.html
sudo vim /etc/ganglia/gmond.conf
默认会使用多播的方式来处理消息消息,单播的方式来使用说明:
/* Feel free to specify as many udp_send_channels as you like. Gmond used to only support having a single channel */
udp_send_channel {
mcast_join = 239.2.11.71
port = 8649
ttl = 1
}
修改为:
/* Feel free to specify as many udp_send_channels as you like. Gmond used to only support having a single channel */
udp_send_channel {
# mcast_join = 239.2.11.71
host = 192.168.56.10
port = 8649
ttl = 1
}
/* You can specify as many udp_recv_channels as you like as well. */
udp_recv_channel {
mcast_join = 239.2.11.71
port = 8649
bind = 239.2.11.71
}
修改为:
/* You can specify as many udp_recv_channels as you like as well. */
#udp_recv_channel {
# mcast_join = 239.2.11.71
# port = 8649
#bind = 239.2.11.71
#}
Server
安装使用
sudo apt-get install gmetad
用户可以安装web界面,查看实时的监控信息。需要安装web服务器、php以及gweb程序。
sudo apt-get install apache2
sudo apt-get install php5 libapache2-mod-php5
sudo service apache2 restart
安装完成后测试相关的环境是否安装正确
在apache根目录(/var/www/html)下创建php脚本phpinfo.php,测试运行结果
<?php
phpinfo();
?>
结果运行正确,安装gweb模块,安装过程中可能需要多次重启apache服务器
sudo apt-get install ganglia-webfrontend
服务配置
http://imcn.me/html/y2014/21624.html
基本的命令
gstat
查看当前集群的基本信息,gstat -l -n -a
gmetric
扩展模块
扩展基本原理
ganglia扩展可以通过以下两种方式实现:
1、通过添加带内(in-band)插件,主要是通过gmetric命令来实现。
这是通常使用的一种方法,主要是通过cronjob方法并调用Ganglia的gmetric命令来向gmond输入数据,进而实现统一监控,这种方法简单,对于少量的监控可以采用,但是对于大规模自定义监控时,监控数据难以统一管理。
2、通过添加一些其他来源的带外(out-of-band)欺骗,主要是通过C或者python接口来实现。
在Ganglia3.1.x版本以后,增加了C或者Python接口,通过这个接口可以自定义数据收集模块,并且这些模块可以被直接插入到gmond中以监控用户自定义的应用。
gmetric命令
python脚本扩展
java metrics
使用监控数据
如何在其他应用程序中使用Ganglia监控的数据?