Ganglia是UC Berkeley发起的一个开源集群监视可视化工具,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。
其详细介绍和工作原理请参考百度百科,地址:https://baike.baidu.com/item/Ganglia/1283012?fr=aladdin
1. 安装httpd服务与php
[root@cos100 flume]# sudo yum -y install httpd php
2. 安装其他依赖
[root@cos100 flume]# sudo yum -y install rrdtool perl-rrdtool rrdtool-devel apr-devel
3. 安装Ganglia
1). 导入rpm源
[root@cos100 flume]# sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
2). 安装rpm的三大组件
[root@cos100 flume]# sudo yum -y install ganglia-gmetad ganglia-web ganglia-gmond
4. 修改配置文件ganglia.conf(修改前端访问权限)
[root@cos100 flume]# sudo vim /etc/httpd/conf.d/ganglia.conf
修改为如下:
# Ganglia monitoring system php web frontend
Alias /ganglia /usr/share/ganglia
Order deny,allow
#Deny from all
Allow from all
# Allow from 127.0.0.1(只能通过本地访问)
# Allow from ::1
# Allow from .example.com
5. 修改配置文件gmetad.conf(修改data_source)
[root@cos100 flume]# sudo vim /etc/ganglia/gmetad.conf
修改为如下:
其中"cos100"为本地主机名
data_source "cos100" cos100
或:
data_source "cos100" 192.168.xx.x
6. 修改配置文件gmond.conf(修改监控的数据源)
[root@cos100 flume]# sudo vim /etc/ganglia/gmond.conf
在文件中寻找cluster{},udp_send_channel{},udp_recv_channel{}三个组并修改如下:
cluster {
# 本机主机名
name = "cos100"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
#bind_hostname = yes # Highly recommended, soon to be default.
# This option tells gmond to use a source address
# that resolves to the machine's hostname. Without
# this, the metrics may appear to come from any
# interface and the DNS names associated with
# those IPs will be used to create the RRDs.
# mcast_join = 239.2.11.71
# 本机IP
host = 192.168.xx.x
port = 8649
ttl = 1
}
udp_recv_channel {
# mcast_join = 239.2.11.71
port = 8649
# 本机IP
bind = 192.168.xx.x
retry_bind = true
# Size of the UDP buffer. If you are handling lots of metrics you really
# should bump it up to e.g. 10MB or even higher.
# buffer = 10485760
}
7. 修改selinux配置
[root@cos100 flume]# sudo vim /etc/selinux/config
设置其中的SELINUX=disabled从而关闭Selinux。
设置完毕需要重启虚拟机,如果暂时不想重启,则必须使之临时生效
[root@cos100 flume]# sudo setenforce 0
8. 启动ganglia
[root@cos100 flume]# sudo service httpd start
[root@cos100 flume]# sudo service gmetad start
[root@cos100 flume]# sudo service gmond start
9. 网页上浏览Ganglia页面
打开网页,输入网址:http://cos100/ganglia即可显示如下页面:
注意:如果完成如上配置,访问网页显示权限不足,如下图所示:
此情况为/var/lib/ganglia目录的权限不足问题导致,授予权限即可
[root@cos100 flume]# sudo chmod -R 777 /var/lib/ganglia
二. 使用Ganglia监控Flume
1. 修改Flume配置文件flume-env.sh
[root@cos100 flume]# vim conf/flume-env.sh
在文件中增加如下内容:
JAVA_OPTS="-Dflume.monitoring.type=ganglia
-Dflume.monitoring.hosts=cos100:8649
-Xms100m
-Xmx200m"
2. 启动Flume任务
[root@cos100 flume]# bin/flume-ng agent --conf conf/ --name a1 --conf-file job/flume-netcat-logger.conf -Dflume.root.logger==INFO,console -Dflume.monitoring.type=ganglia -Dflume.monitoring.hosts=cos100:8649
此时即可在网页查看Flume的状态,如下红色框选部分
1). Grid下拉框选择Source为本机主机名
2). 点击选择进入新的网页后继续选择Node为本机主机名
3). 点击选择进入网页后在如下右侧框选下拉框部分选择Metric Group为flume
选择完成后即显示Flume的状态页面
此时,Flume便被Ganglia实时监控。
3. 发送数据观察Ganglia监测图
新开一个客户端窗口,通过netcat实时生产数据
[root@cos100 flume]# nc localhost 44444
hello world
OK
服务端监控页面显示:
2020-02-18 04:59:02,343 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{} body: 68 65 6C 6C 6F 20 77 6F 72 6C 64 20 hello world
网页Flume监控页面显示:
如下为各个监控页面的具体说明:
图表名称 | 具体说明 |
---|---|
EventPutAttemptCount | source尝试写入channel的事件总数量 |
EventPutSuccessCount | 成功写入channel且提交的事件总数量 |
EventTakeAttemptCount | sink尝试从channel拉取事件的总数量。这不意味着每次事件都被返回,因为sink拉取的时候channel可能没有任何数据。 |
EventTakeSuccessCount | sink成功读取的事件的总数量 |
StartTime | channel启动的时间(毫秒) |
StopTime | channel停止的时间(毫秒) |
ChannelSize | 目前channel中事件的总数量 |
ChannelFillPercentage | channel占用百分比 |
ChannelCapacity | channel的容量 |
完毕!