Ganglia是一款为HPC(高性能计算) 集群设计的可扩展性的分布式监控系统,它可以监视和显示集群中节点的各种状态信息,他由运行在各个节点上的gmond守护进程来采集 CPU、内存、磁盘利用率、I/O负载、网络流量情况等方面的数据。然后汇总到gmetad守护进程下,使用rrdtool存储数据,然后将历史数据以曲线方式通过PHP页面呈现。这里用来监控Flume的运行信息。
1. 安装配置
- 安装epel软件源和httpd、php服务
yum install epel-release yum -y install httpd php
- 安装其他依赖
yum -y install rrdtool perl-rrdtool rrdtool-devel yum -y install apr-devel
- 安装ganglia的三大组件
yum -y install ganglia-gmetad # 安装ganglia-web时间比较久【也有可能是我的网络不好】 yum -y install ganglia-web yum install -y ganglia-gmond
- 修改配置文件
【养成好习惯,修改配置文件前先备份一下,正所谓有备无患 :smirk: 这里要修改4个配置文件】
【第 :one: 个配置:ganglia.conf】
这里解决了Web页面报:You don't have permission to access /ganglia on this server. 的问题。
vim /etc/httpd/conf.d/ganglia.conf
# 原内容
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
# Allow from .example.com
</Location>
# 修改后
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
Require all granted
</Location>
【第 :two: 个配置文件:gmetad.conf】
vim /etc/ganglia/gmetad.conf
# 配置数据源 名称 IP地址
data_source "tcloud_source" tcloud
【第 :three: 个配置文件:gmond.conf】
vim /etc/ganglia/gmond.conf
# 修改后的模样
cluster {
name = "tcloud_source"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel {
host = tcloud
port = 8649
ttl = 1
}
udp_recv_channel {
port = 8649
bind = tcloud
retry_bind = true
}
【第 :four: 个配置文件:/etc/selinux/config】
vim /etc/selinux/config
# 配置这两项
SELINUX=disabled
SELINUXTYPE=targeted
# selinux修改需要重启才能生效 临时生效命令
[root@tcloud ~]# setenforce 0
setenforce: SELinux is disabled
2. 启动验证
# 启动 httpd 服务
[root@tcloud ~]# systemctl start httpd.service
# 启动 gmetad 服务
[root@tcloud ~]# systemctl start gmetad.service
# 启动 gmond 服务
[root@tcloud ~]# systemctl start gmond.service
访问 http://tcloud/ganglia 进行验证
如果出现以上权限问题,修改/var/lib/ganglia目录的权限:
chmod -R 777 /var/lib/ganglia
成功页面为:
3. 监控测试
1) 修改 ${FLUME_HOME}/conf/flume-env.sh配置
vim /usr/local/flume/conf/flume-env.sh
# 添加一下配置【添加的时候不要换行】这里是为了大家看得清楚
JAVA_OPTS="
-Dflume.monitoring.type=ganglia
-Dflume.monitoring.hosts=tcloud:8649
-Xms100m -Xmx200m
"
2) 启动一个Flume任务进行测试【我们用 付诸实践 01 里的第一个进行举例】需要注意的是要增加一些监控参数。
# 1.启动
[root@tcloud ~]# flume-ng agent \
-n a1 \
-c conf \
-f /home/flume/test/test-exec-memory-logger.properties \
-Dflume.root.logger=INFO,console \
-Dflume.monitoring.type=ganglia \
-Dflume.monitoring.hosts=tcloud:8649
# 2.发送数据进行测试
[root@tcloud ~]# echo "Test" >> /tmp/log.txt
[root@tcloud ~]# echo "Ganglia" >> /tmp/log.txt
页面显示【云服务器性能不行,为了截这张图等了很久 :traffic_light:】:
点击小图可以看详情:
图例说明:
字段(图表名称) | 字段含义 |
---|---|
EventPutAttemptCount | source尝试写入channel的事件总数量 |
EventPutSuccessCount | 成功写入channel且提交的事件总数量 |
EventTakeAttemptCount | sink尝试从channel拉取事件的总数量。这不意味着每次事件都被返回,因为sink拉取的时候channel可能没有任何数据。 |
EventTakeSuccessCount | sink成功读取的事件的总数量 |
StartTime | channel启动的时间(毫秒) |
StopTime | channel停止的时间(毫秒) |
ChannelSize | 目前channel中事件的总数量 |
ChannelFillPercentage | channel占用百分比 |
ChannelCapacity | channel的容量 |