以容器部署Ganglia并监控Hadoop集群
网上有很多Ganglia部署的教程,每一个我都觉得繁琐,我的目的只是用来监控Hadoop测试集群,能即刻使用才是王道,于是我想到通过Rancher部署Ganglia应用服务(类似于我在上一篇文章中部署Jmeter容器集群的方式),以容器的方式一键部署,省去了中间繁琐的安装过程。
第一步:安装部署Docker
1、对于CantOS安装Docker最好是CentOS7,这样可以保证内核至少是3.10(通过uname -r 命令查看),低于这个版本的内核无法安装Docker。
2、使用 root 权限登录 Centos。确保 yum 包更新到最新(sudo yum update)。
3、卸载旧版本(如果安装过旧版本的话)
sudo yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、直接安装最新版的docker(记住版本宁可最新,也不要低于Rancher所要求的版本)
sudo yum install docker-ce
7、启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker
第二步:部署安装Rancher
Rancher最好部署在独立的机器上,毕竟是Docker管理平台,需要有足够的资源和空间,由于我的另一篇文章《搭建Jmeter容器集群平台》已经介绍了Rancher的部署,在这里我就不多写了,而且我用的就是当初部署好的Rancher。
第三步:添加主机
在Rancher->基础架构->主机->添加主机(Custer),直接将页面上的脚本,复制到Ganglia对应的主机(Linux)上运行,举例如下(确保没有防火墙封禁端口):
sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.10 http://172.16.1.30:8080/v1/scripts/5F5DD52AF831DB9BB4AF:1514678400000:JTVmpDRKXUlm1TtU93FgwforgIA
第四步:添加Ganglia容器
先用docker search ganglia命令搜索一下公共库里有哪些可用的ganglia镜像:
我们就用搜索到的第一个镜像就行,安装的方式有两种,一种是直接在主机管理界面上添加容器,如下:
主要是选择要下载调用的镜像,映射的端口,调度规则(设置需要在哪台主机上部署容器,如果不设置的话,就按Rancher的规则从多台主机中挑一台)
另一种方式是我推荐的,就是通过docker-compose配置文件安装,而且是以应用服务的方式对外提供服务:
1、用编辑器编写如下docker-compose.yml:
version: '2' services: ganglia: image: wookietreiber/ganglia stdin_open: true tty: true ports: - 8649:8649/tcp - 8651:8651/tcp - 8652:8652/tcp - 8661:8661/tcp - 2003:2003/tcp - 80:80/tcp - 6343:6343/udp labels: io.rancher.container.pull_image: always io.rancher.scheduler.affinity:host_label: host.ip=172.17.2.130
和rancher-compose.yml:
version: '2' services: ganglia: scale: 1 start_on_create: true
2、在Rancher的应用->用户->添加应用:输入应用名,选择docker-compose.yml和rancher-compose.yml。
点击【创建】按钮,就能成功创建应用和容器服务。通过http://172.17.2.130/ganglia/就能够直接访问了ganglia了
由于这个镜像安装的ganglia是默认的组播模式(不需要固定的Server IP,比较方便),所以我们以下的监控配置就按组播模式进行配置。
第五步:在hadoop集群节点机器上部署监控代理gmond
yum -y install epel-release
yum -y install ganglia-gmond
由于用组播模式,并较省事,什么配置都不用改,为了能让hadoop集群能标识出来,我们改一下cluster name
vi /etc/ganglia/gmond.conf
cluster {
name = "hadoop"
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
三个hadoop节点(无论主从)全是按这么操作。然后启动各节点的gmood:
systemctl start gmond.service (如果是centos6.5,用service gmond start启动)
systemctl enable gmond.service
由于ganglia容器部署完后,上面自带有gmond节点,为了跟hadoop集群的gmond以示区别,我们进入ganglia容器下,把gmond.conf配置改掉:
vi /etc/ganglia/gmond.conf,按如下把原来的8649端口改成8661(就是为了跟hadoop节点监控端口区别开,当然也可以选择不改,改也是为了验证一下自定义端口)
第六步:修改ganglia中的gmetad
gmetad会定期检查gmond,从那里拉取数据,并将他们的指标存储在RRD存储引擎中。也可以查询多个集群并聚合指标。所以配好它,才能收集各个节点的监控数据。
进入ganglia容器中,vi /etc/ganglia/gmetad.conf
由于是组播模式,什么都不用动了,主需要修改一下data_source参数如下:
data_source "my cluster" localhost:8661
data_source "hadoop" 10 172.17.2.171:8649 172.17.2.186:8649 172.17.2.187:8649
以上的修改目的是,上一步涉及到localhost的监控端口变了,所以要加上8661,hadoop是我们新加的监控集群,所以添加一个data_source,每10秒轮询一次,其中监控端口8649是默认的,可以不写。
这样我们就可以重启ganglia容器,然后再回到http://172.17.2.130/ganglia/,就能看到新加入的节点和集群了:
第七步:修改hadoop配置
前面说了那么多,其实都是为了这一步准备,我们要监控hadoop,就必须让hadoop各节点的ganglia metrics接口开放,通过修改hadoop配置文件目录下的hadoop-metrics2.properties:
namenode.sink.ganglia.servers=239.2.11.71:8649
datanode.sink.ganglia.servers=239.2.11.71:8649
jobtracker.sink.ganglia.servers=239.2.11.71:8649
tasktracker.sink.ganglia.servers=239.2.11.71:8649
maptask.sink.ganglia.servers=239.2.11.71:8649
reducetask.sink.ganglia.servers=239.2.11.71:8649
resourcemanager.sink.ganglia.servers=239.2.11.71:8649
nodemanager.sink.ganglia.servers=239.2.11.71:8649
historyserver.sink.ganglia.servers=239.2.11.71:8649
journalnode.sink.ganglia.servers=239.2.11.71:8649
nimbus.sink.ganglia.servers=239.2.11.71:8649
supervisor.sink.ganglia.servers=239.2.11.71:8649
以上标粗部分是通用配置的(其它是在Ambari下的HDP集群建议加配的),另外由于是组播模式,IP需要设置成239.2.11.71(这个IP就能互相找到各个监控与被监控节点,如果不放心,可以在各个节点上添加路由到组播地址ip route add 239.2.11.71 dev eth0)。
另外如果是用Ambari管理的hadoop集群,修改hadoop-metrics2.properties是需要在Ambari管理界面上进行的,通过HDFS的Configs->Advanced完成配置,需要注意的是Ambari本身有一套监控接口(用的是metric_collector,默认是开启的),如果我们要同时用ganglia监控,就要求把ganglia.servers参数的注释去掉,替换servers ip为239.2.11.71,同时ganglia_server应该为允许,可以直接将{% if has_ganglia_server %}和对应的{% endif %}去掉,最终配置为:
# if has_ganglia_server *.period=60 *.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31 *.sink.ganglia.period=10 # default for supportsparse is false *.sink.ganglia.supportsparse=true .sink.ganglia.slope=jvm.metrics.gcCount=zero,jvm.metrics.memHeapUsedM=both .sink.ganglia.dmax=jvm.metrics.threadsBlocked=70,jvm.metrics.memHeapUsedM=40 # Hook up to the server namenode.sink.ganglia.servers=239.2.11.71:8649 datanode.sink.ganglia.servers=239.2.11.71:8649 jobtracker.sink.ganglia.servers=239.2.11.71:8649 tasktracker.sink.ganglia.servers=239.2.11.71:8649 maptask.sink.ganglia.servers=239.2.11.71:8649 reducetask.sink.ganglia.servers=239.2.11.71:8649 resourcemanager.sink.ganglia.servers=239.2.11.71:8649 nodemanager.sink.ganglia.servers=239.2.11.71:8649 historyserver.sink.ganglia.servers=239.2.11.71:8649 journalnode.sink.ganglia.servers=239.2.11.71:8649 nimbus.sink.ganglia.servers=239.2.11.71:8649 supervisor.sink.ganglia.servers=239.2.11.71:8649 resourcemanager.sink.ganglia.tagsForPrefix.yarn=Queue # endif
保存修改的配置,重启hadoop集群服务。然后不出意外就能看到hadoop的监控指标(如果不行,可以把主从节点和ganglia容器都重启一遍):
最后一步:验证监控结果
最后我们就可以享受监管结果了,不只是能监控hadoop集群的资源使用情况(CPU、内存、磁盘负载、网络负载),还能看到以下的hadoop JvmMetrics监控指标,基本是全面监控。
其实监控方式和原理都与Ambari自带的监控框架一样,所以ganglia是用来满足对传统hadoop集群或其它集群服务器的监控,至于用Ambari或Cloudera Manager部署及管理的Hadoop集群,用管理平台自带的监控框架就行了。但是本文的目的不只是为了说明如何快速构建和应用ganglia监控,而是更想表达容器化是非常有助于我们快速构建测试环境和性能监控环境,这对于性能测试来讲非常重要,特别是我们面对大量云端化或集群化服务的测试。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ECS启动新“模”法
喜大普奔!!ECS支持启动模板创建了! 快到模板里来!把你的创建参数通通装进模板里,还能一模多版,需要时想翻谁牌子就翻谁,一键创建,SO EASY! 实例启动模板,可包含用于创建实例的配置信息。目的在于帮助用户快速创建实例,按不同应用和场景管理创建参数。您可以在模板中存储包含除密码外的其它创建参数,在实例库存满足的情况下即可一键创建,最大地节省选配时间。例如,启动模板可能包含您通常用于创建实例的KEYPAIR、RAM ROLE ID、实例类型和网络设置等。在使用控制台和OPEN API创建实例时,您可以指定要使用的启动模板。 对于每个实例启动模板,可以创建一个或多个模板版本,每个版本可以具有不同的配置参数。在通过模板创建实例时,您可以使用任何版本的创建模板。如果未指定版本,则使用默认版本。您可以将任何启动模板版本设置为默认版本,默认情况
- 下一篇
K8S Ingress Controller 发布公告
服务简介 在Kubernetes集群中,Ingress是授权入站连接到达集群服务的规则集合,为您提供七层负载均衡能力,您可以通过 Ingress 配置提供外部可访问的 URL、负载均衡、SSL、基于名称的虚拟主机,阿里云容器服务K8S Ingress Controller在完全兼容社区版本的基础上提供了更多的特性和优化。 版本说明 v0.22.0.5-552e0db-aliyun: 开启Server动态更新时支持泛域名、白名单和重定向配置 v0.22.0.4-5a14d4b-aliyun: 优化灰度发布规则支持Perl正则匹配方式 v0.22.0.3-da10b7f-aliyun: 同步更新到社区0.22.0版本,变更记录参考Ingress-Nginx 开启动态更新时支持蓝绿发布和灰度发布机制 默认开启Nginx Upstream的动态更新特性 [Br
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- CentOS8安装Docker,最新的服务器搭配容器使用