0%

Ganglia

Ganglia 易于扩展的监控系统


前言

Ganglia,它是一个易于扩展的监控系统。使用它可以实时查看 Linux 服务器和集群(图形化展示)中的各项性能指标

Ganglia 能够让你以集群(按服务器组)和网格(按地理位置)的方式更好地组织服务器

可以创建一个包含所有远程主机的网格,然后将那些机器按照其它标准分组成小的集合

此外, Ganglia 的 web 页面对移动设备进行过优化,也允许你导出 csv 和 .json 格式的数据

安装

启用 EPEL 仓库 ,然后安装 Ganglia 和相关工具

主节点

1
2
3
yum -y install epel-release

yum -y install ganglia-gmetad ganglia-gmond ganglia-web

监控节点

1
2
3
yum -y install epel-release

yum -y install ganglia-gmond

ganglia-gmetad一个守护进程,用来收集被监控主机的数据

被监控主机与主节点主机都要安装ganglia-gmond

ganglia-web提供 Web 前端,用于显示监控系统的历史数据和图形

基本认证

使用 Apache 提供的基本认证功能,为 Ganglia Web 界面(/usr/share/ganglia)配置身份认证

为完成这个目标,我们需要创建一个用户名并设定一个密码,以访问被 Apache 保护的资源

在本例中,我们先来创建一个叫 adminganglia 的用户名,然后给它分配一个密码,它将被储存在 /etc/httpd/auth.basic(可以随意选择另一个目录 和/或 文件名, 只要 Apache 对此有读取权限就可以。)

htpasswd -c /etc/httpd/auth.basic adminganglia

给 adminganglia 输入两次密码完成密码设置

修改配置文件 /etc/httpd/conf.d/ganglia.conf

1
2
3
4
5
6
7
8
Alias /ganglia /usr/share/ganglia
<Location /ganglia>
AuthType basic
AuthName "Ganglia web UI"
AuthBasicProvider file
AuthUserFile "/etc/httpd/auth.basic"
Require user adminganglia
</Location>

修改 gmetad.conf

编辑 /etc/ganglia/gmetad.conf

首先,使用 gridname 指令来为网格设置一个描述性名称

1
gridname "Home office"

然后,使用 data_source 指令,后面跟集群名(服务器组)、轮询时间间隔(秒)、主节点主机和被监控节点的 IP 地址

1
data_source "Labs" 60 192.168.0.29:8649 192.168.0.30 192.168.0.31

修改 gmond.conf

编辑 /etc/ganglia/gmond.conf

确保集群的配置类似下面

指定集群名字

1
2
3
4
5
6
cluster {
name = "Labs" # gmetad.conf 中的 data_source 指令的名字
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}

每个节点写自己的主机名

1
2
3
host {
location = "region-30"
}

udp_send_channel 中,注释掉 mcast_join,并指向 gmetad 主机

1
2
3
4
5
6
udp_send_channel {
#mcast_join = 239.2.11.71
host = 192.168.0.29 # 每个节点都指向gmetad主机
port = 8649
ttl = 1
}

udp_recv_channel 中,注释掉 mcast_joinbind 部分

1
2
3
4
5
udp_recv_channel {
# mcast_join = 239.2.11.71 ## comment out
port = 8649
# bind = 239.2.11.71 ## comment out
}

关闭防火墙

1
2
systemctl stop firewalld
systemctl disable firewalld

启动服务

启动 Apache、gmetad、gmond,并确保它们启用了“开机启动”。

1
2
systemctl start httpd gmetad gmond
ystemctl enable httpd gmetad httpd

至此,我们现在能够打开 Ganglia 的 Web 页面 http://192.168.0.29/ganglia 并用步骤 2 中设置的凭证登录

收集 Hadoop 集群 metric

因为我用的是 CDH 版本的Hadoop。所以这里以CDH为例,Apache 版的网上好多。自行搜索

根绝官方文档可以知道

主页->配置->高级配置代码段->搜索Metrics->Hadoop 度量 2 高级配置代码段(安全阀)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 
*.period=10
hbase.sink.ganglia.servers=192.168.1.240:8649
datanode.sink.ganglia.servers=192.168.1.240:8649
namenode.sink.ganglia.servers=192.168.1.240:8649
*.sink.ganglia.retry_socket_interval=60000
*.sink.ganglia.socket_connection_retries=10
*.source.filter.class=org.apache.hadoop.metrics2.filter.GlobFilter
*.record.filter.class=${*.source.filter.class}
*.metric.filter.class=${*.source.filter.class}
nodemanager.sink.ganglia.record.filter.exclude=ContainerResource*
secondarynamenode.sink.ganglia.servers=192.168.1.240:8649
nodemanager.sink.ganglia.servers=192.168.1.240:8649
resourcemanager.sink.ganglia.servers=192.168.1.240:8649
jobhistoryserver.sink.ganglia.servers=192.168.1.240:8649

把 IP 改成你自己的 gmetad IP,然后重启

选择某个Node具体观察,可以看到已经收集到了HDFS和YARN的度量数据


参考链接