一.介绍
Ganglia是由UC Berkeley发起的一个开源监控项目,设计用于监控数以千几的节点。每台服务器都运行一个收集和发送监控数据名为gmond的守护进程。它将从操作系统和指定主机中收集。接收所有监控数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次架构模式,使ganglia可以实现良好的扩展。Gmond带来的系统负载非常小,这使得它成为集群中各个服务器上运行一段代码而不会影响用户性能。
Ganglia主要用来监控系统性能的软件,通过曲线很容易见到每个节点的工作状态,对合理调整,分配系统资源,提高系统整体性能起到重要作用,支持浏览器方式访问,但不能监控节点硬件技术指标。Ganglia是分布式的监控系统。
Ganglia的组件:
Ganglia包括如下程序,它们之间通过xml格式传递监控数据。
服务端ganglia meta daemon(gmetad):负责收集各个cluster的数据,并更新到rrd数据库中
客户端ganglia monitoring daemon(gmond):收集本机的监控数据,发送到其他服务器上,收集其他服务器的监控数据,供gmetad读取。
基于web的动态访问方式ganglia PHP web Frontend:一个基于web的监控界面,需要和gmetad安装在同一个节点上,从gmetad取数据,并且读取rrd数据库,生成图片显示。
Ganglia工作模式:
Ganglia收集数据可以工作在单播或多播模式下,默认为多播模式
单播:发送自己收集到的监控数据到特定的一台或几台服务器上,可以跨网段。
多播:发送自己收集到的监控数据到同一网段所有的服务器上,同时收集同一网段的所有服务器发送过来的监控数据。因为是以广播包的形式发送,因此需要在同一网段内,但同一网段内,又可以定义不同的发送通道。
二。ganglia的安装和配置:
1.直接使用epelyum源进行安装即可,或者编译安装
1.1 安装所需软件包:
yum install -y rrdtool rrdtool-devel apr-devel expat-devel dejavu-lgc-sans-mono-fonts dejavu-sans-mono-fonts glibc glibc-common apr apr-devel apr-util expat expat-devel pcre pcre-devel zlib zlib-devel
1.2 安装confuse
wget http://ftp.twaren.net/Unix/NonGNU//confuse/confuse-2.7.tar.gz
tar -zxf confuse-2.7.tar.gz
cd confuse-2.7
./configure CFLAGS=-fPIC --disable-nls
make && make install
1.3 设置python 模块的环境变量
echo "/usr/local/lib" /etc/ld.so.conf
ldconfig
ldconfig -v |grep "python"
1.4 安装ganglia 服务端 gmetad
wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.7.1/ganglia-3.7.1.tar.gz
tar zxf ganglia-3.7.1.tar.gz
cd ganglia-3.7.1
./configure --prefix=/usr/local/ganglia --with-gmetad --enable-gexec
make
make install
1.5 安装ganglia的agent端
wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.7.1/ganglia-3.7.1.tar.gz
tar zxf ganglia-3.7.1.tar.gz
cd ganglia-3.7.1
./configure --prefix=/usr/local/ganglia --enable-gexec
make
make install
1.6 安装ganglia-web 前端展示
2. 配置ganglia gmetad端
2.1 复制服务控制脚本
cp -fr ganglia/gmetad/gmetad.init /etc/init.d/gmetad
并修改脚本下面内容
GMETAD=/usr/local/ganglia/sbin/gmetad
2.2 修改gmetad的配置文件更改下面参数:(参数的具体含义请参考gmetad.conf配置文件解释)
data_source "my cluster" 10.10.211.6
setuid_username "nobody"
xml_port 8651
interactive_port 8652
rrd_rootdir “/var/lib/ganglia/rrds”
case_sensitive_hostnames 0
创建rrd_rootdir文件,并授权nobody
mkdir /var/lib/ganglia/rrds
chown -R nobody.nobody /var/lib/ganglia/rrds
2.3 启动gmetad 服务,检查服务端口和进程
[[email protected] ~]#/etc/init.d/gmetad start
Starting GANGLIA gmetad: [确定]
[[email protected] ~]#netstat -lnpt | grep gmetad
tcp 0 0 0.0.0.0:8651 0.0.0.0:* LISTEN 4529/gmetad
tcp 0 0 0.0.0.0:8652 0.0.0.0:* LISTEN 4529/gmetad
[[email protected] ~]#ps -ef | grep gmetad
nobody 4529 1 0 23:38 ? 00:00:00 /usr/local/ganglia/sbin/gmetad
root 4545 20744 0 23:38 pts/3 00:00:00 grep gmetad
3.配置ganglia gmond 端
globals {
daemonize = yes #以后台的方式运行
setuid = yes
user = nobody #运行gmond的用户
debug_level = 0 #调试级别
max_udp_msg_len = 1472
mute = no #哑巴,本节点将不会再广播任何自己收集到的数据到网络上
deaf = no #聋子,本节点将不再接收任何其他节点广播的数据包
allow_extra_data = yes
host_dmax = 0 /*secs */
cleanup_threshold = 300 /*secs */
gexec = no #是否使用gexec
send_metadata_interval = 0
} cluster {
name = "Cluster1" #本节点属于哪个cluster
owner = "junfeng" #谁是该节点的所有者
latlong = "unspecified" #在地球上的坐标,经度、纬度?
url = "unspecified"
} host {
location = "unspecified"
} udp_send_channel { #udp包的发送通道
mcast_join = 239.2.11.71 #多播,工作在239.2.11.71通道下。如果使用单播模式,则要写host = host1,单播模式下也可以配置多个udp_send_channel
port = 8649 #监听端口
ttl = 1
} udp_recv_channel { #接收udp包配置
mcast_join = 239.2.11.71 #同样工作在239.2.11.71通道下
port = 8649 #监听端口
bind = 239.2.11.71 #绑定
} tcp_accept_channel {
port = 8649 #通过tcp协议监听的端口,远端可以通过链接8649端口得到监控数据
}
4.配置gmond web
gmond-web 是用php写的,所以需要web+php进行解析
4.1 下载软件包
wget http://heanet.dl.sourceforge.net/project/ganglia/ganglia-web/3.5.10/ganglia-web-3.5.10.tar.gz
4.2 配置
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">