Ganglia
1.概述
为HPC(高性能计算) 集群设计的可扩展性的分布式监控系统 ,可以监视和显示集群中节点的各种状态信息 由运行在各个节点上的gmond 守护进程来采集CPU、内存、磁盘利用率、I/O负载、网络流量情况等方面的数据,然后汇总到gmetad 守护进程下,使用rrdtool 存储数据,然后将历史数据以曲线方式通过PHP页面呈现 Ganglia的中文意思是神经中枢,现在支持多部分操作系统(包括linux、unix、windows),可支持2000个节点的网络监控(当然这不是上限,只是一个大集群使用的范例)
2.组件
Ganglia底层使用RRDTool 存储数据 gmond(ganglia monitor deamon)
gmond运行在集群每个节点上,收集RRDTool 产生的数据
gmetad(ganglia metadata deamon)
gmetad运行在监控服务器上,收集每个gmond的数据
ganglia可视化工具,显示ganglia收集的主机各项指标
gweb允许在图标中通过点击- 拖拽改变时间周期,包含从不同文本格式(CSV, JSON等)中便捷提供数据的工具,显示完整、使用的URL接口,使用户可以通过预知的URL将感兴趣的图表嵌入其他程序
gweb是一种PHP程序,因为需要与轮询器创建的RRD数据库交互,所以gweb通常安装在和gmetad相同的物理硬件上
图解
3.层次结构
由小到大可以分为node -> cluster -> grid node
一个node就是一个需要监控的节点,一般是个主机,用IP表示
每个node上运行一个gmond进程用来采集数据,并提交给gmetad
一个cluster由多个node组成,就是一个集群,我们可以给集群定义名字
一个集群可以选一个node运行gmetad进程,汇总/ 拉取gmond提交的数据,并部署web front,将gmetad采集的数据用图表展示出来
一个grid由多个cluster组成,是一个更高层面的概念,我们可以给grid定义名字
grid中可以定义一个顶级的gmetad进程,汇总/ 拉取多个gmond、子gmetad提交的数据,部署web front,将顶级gmetad采集的数据用图表展示出来
4.收集数据工作的运行模式
发送自己收集到的监控数据到特定的一台或几台机器上,可以跨网段
发送自己收集到的监控数据到同一网段内所有的机器上,同时收集同一网段内的所有机器发送过来的监控数据
因为是以广播包的形式发送,因此需要同一网段内。但同一网段内,又可以定义不同的发送通道
Ganglia的安装与部署(编译方式,centos7使用RPM方式安装会报错)
1.环境准备
systemctl stop firewalld. service
setenforce 0
卸载系统默认安装的Apache软件包,如果安装过的话
rpm - qa httpd*
rpm - e -- nodeps 包名
有多个httpd* ,用脚本删除for name in `rpm - qa httpd* `; do rpm - e -- nodeps $name; done
rpm - Uvh https: / / dl. fedoraproject. org/ pub/ epel/ epel- release- latest- 7. noarch. rpm
yum install wget lrzsz vim lynx lsof netstat- tools unzip - y
timedatectl
列出了所有的时区:timedatectl list- timezones
把时区设置为上海:timedatectl set- timezone Asia / Shanghai
/ usr/ sbin/ ntpdate time. nist. gov
crontab - e
输入:* / 10 * * * * / usr/ sbin/ ntpdate time. nist. gov > / dev/ null 2 > & 1
23456789是服务端的配置,此处选择node1
2.gmetad配置
yum -y install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpm-build glib2-devel dbus-devel freetype-devel fontconfig-devel gcc gcc-c++ expat-devel python-devel libXrender-devel yum install -y libart_lgpl-devel pcre-devel libtool yum install -y rrdtool rrdtool-devel mkdir /tools cd /tools/ wget http://www.mirrorservice.org/sites/download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz tar zxvf confuse-2.7.tar.gz cd confuse-2.7 ./configure --prefix=/usr/local/ganglia-tools/confuse CFLAGS=-fPIC –disable-nls --libdir=/usr/local/ganglia-tools/confuse/lib64 make && make install cd /tools/ wget https://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/3.7.2/ganglia-3.7.2.tar.gz --no-check-certificate tar zxf ganglia-3.7.2.tar.gz cd ganglia-3.7.2 ./configure --prefix=/usr/local/ganglia --enable-gexec --enable-status --with-gmetad --with-libconfuse=/usr/local/ganglia-tools/confuse make && make install cp gmetad/gmetad.init /etc/init.d/gmetad ln -s /usr/local/ganglia/sbin/gmetad /usr/sbin/gmetad
3.gweb配置
yum install httpd httpd-devel php -y yum -y install rsync cd /tools/ wget https://sourceforge.net/projects/ganglia/files/ganglia-web/3.7.2/ganglia-web-3.7.2.tar.gz –no-check-certificate tar zxvf /tools/ganglia-web-3.7.2.tar.gz -C /var/www/html/
/ var / www/ html/ 相当于tomcat的webapp目录
cd /var/www/html/ mv ganglia-web-3.7.2 ganglia cd /var/www/html/ganglia/ useradd -M -s /sbin/nologin www-data make install chown apache:apache -R /var/lib/ganglia-web/
4.修改启动脚本
GMETAD= / usr/ sbin/ gmetad #这句话可以自行更改gmetad的命令,当然也能向我们前面做了软连接
start ( ) {
[ - f / usr/ local/ ganglia/ etc/ gmetad. conf ] || exit 6 #这里将配置文件改成现在的位置,不然启动没反应
5.创建rrds目录
mkdir /var/lib/ganglia/rrds -p chown -R nobody:nobody /var/lib/ganglia/rrds
6.修改gmetad配置文件,实际就是配置客户端gmond(这个目录会经常被修改)
vim /usr/local/ganglia/etc/gmetad.conf
data_source "my ganglia" 192.168 .10 .100 : 8649 192.168 .10 .102 : 8649
7.启动服务
mkdir -p /usr/local/ganglia/var/run /etc/init.d/gmetad restart systemctl restart httpd netstat -luntp
8.修改配置文件
vim /etc/httpd/conf.d/ganglia.conf
# Ganglia monitoring system php web frontend
Alias / ganglia / var / www/ html/ ganglia/
< Location / ganglia>
#Order deny, allow
#Deny from all
Require all granted
Allow from all
# Allow from 127.0 .0 .1
# Allow from :: 1
# Allow from . example. com
< / Location >
vim /usr/local/ganglia/etc/gmond.conf
9.实战:随便编写一个页面然后访问
cd /var/www/html/ mkdir cj cd cj vim index.html
hello
< hr / >
访问:http://192.168.10.100/cj/
23是客户端的配置,此处选择node1
10.如果该节点没有配置gmeta,则执行2
11.安装过gmate的节点从这一步开始
/ usr/ local/ ganglia/ sbin/ gmond - t > / usr/ local/ ganglia/ etc/ gmond. conf
cp /tools/ganglia-3.7.2/gmond/gmond.init /etc/init.d/gmond mkdir -p /usr/local/ganglia/var/run /etc/init.d/gmond restart netstat -luntp
操作Flume测试监控
1.修改flume-env.sh配置
cd /usr/local/flume-1.9.0/conf vim flume-env.sh
JAVA_OPTS= "-Dflume.monitoring.type=ganglia -Dflume.monitoring.hosts=192.168.10.100:8649 -Xms100m -Xmx200m"
2.启动Flume任务
bin/ flume- ng agent -- conf conf/ -- name a1 -- conf- file jobs/ t1/ flume- telnet- logger. conf - Dflume . root. logger== INFO, console \
- Dflume . monitoring. type= ganglia \
- Dflume . monitoring. hosts= 192.168 .10 .100 : 8649
3.启动另一个node1
4.观察页面信息
http://192.168.10.100/ganglia/
5.其他
web页面介绍:https://www.shuzhiduo.com/A/Ae5RwY7LdQ/ 提示服务重启命令
/ etc/ init. d/ gmetad restart
systemctl restart httpd
/ etc/ init. d/ gmond restart