共计 4331 个字符,预计需要花费 11 分钟才能阅读完成。
今天就跟大家聊聊有关如何分析 Ganglia 本质及 SparkOnGanglia 的配置,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
前言
Ganglia 是 UC Berkeley 发起的一个开源监视项目,设计用于测量数以千计的节点。每台计算机都运行一个收集和发送度量数据(如处理器速度、内存使用量等)的名为 gmond 的守护进程。它将从操作系统和指定主机中收集。接收所有度量数据的主机可以显示这些数据并且可以将这些数据的精简表单传递到层次结构中。正因为有这种层次结构模式,才使得 Ganglia 可以实现良好的扩展。gmond 带来的系统负载非常少,这使得它成为在集群中各台计算机上运行的一段代码,而不会影响用户性能。
一 Ganglia 组件
Ganglia 监控套件包括三个主要部分:gmond,gmetad,和网页接口,通常被称为 ganglia-web。
Gmond : 是一个守护进程,他运行在每一个需要监测的节点上,收集监测统计,发送和接受在同一个组播或单播通道上的统计信息 如果他是一个发送者 (mute=no) 他会收集基本指标,比如系统负载(load_one),CPU 利用率。他同时也会发送用户通过添加 C /Python 模块来自定义的指标。如果他是一个接收者(deaf=no)他会聚合所有从别的主机上发来的指标,并把它们都保存在内存缓冲区中。
Gmetad: 也是一个守护进程,他定期检查 gmonds,从那里拉取数据,并将他们的指标存储在 RRD 存储引擎中。他可以查询多个集群并聚合指标。他也被用于生成用户界面的 web 前端。
Ganglia-web : 顾名思义,他应该安装在有 gmetad 运行的机器上,以便读取 RRD 文件。集群是主机和度量数据的逻辑分组,比如数据库服务器,网页服务器,生产,测试,QA 等,他们都是完全分开的,你需要为每个集群运行单独的 gmond 实例。
一般来说集群中每个节点需要一个接收的 gmond,每个网站需要一个 gmetad。
二 安装依赖
注:建议全程使用超级用户安装, 本例安装环境 centos6.6
1.#yum install –y gcc gcc-c++ libpng freetype zlib libdbi apr* libxml2-devel pkg-config glib pixman pango pango-devel freetye-devel fontconfig cairo cairo-devel libart_lgpl libart_lgpl-devel pcre* rrdtool*
三 安装 expat 依赖
1. #cd ~
2.#wget http://jaist.dl.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz
3.#tar -xf expat-2.1.0.tar.gz cd expat-2.1.0 ./configure –prefix=/usr/local/expat make make install cd ..
对于 64 位操作系统,需要手动的拷贝下动态链接库到 lib64 下
1.#mkdir /usr/local/expat/lib64 cp -a /usr/local/expat/lib/* /usr/local/expat/lib64/
四 安装 confuse
1.#wget http://ftp.twaren.net/Unix/NonGNU//confuse/confuse-2.7.tar.gz
2.#tar -xf confuse-2.7.tar.gz cd confuse-2.7 ./configure CFLAGS=-fPIC –disable-nls –prefix=/usr/local/confuse make make install cd ..
64bit 机器需要拷贝动态链接库:
1.#mkdir -p /usr/local/confuse/lib64 cp -a -f /usr/local/confuse/lib/* /usr/local/confuse/lib64/
五 安装 ganglia
1.#wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.6.0/ganglia-3.6.0.tar.gz
2.#tar -xf ganglia-3.6.0.tar.gz cd ganglia-3.6.0 ./configure –with-gmetad –enable-gexec –with-libconfuse=/usr/local/confuse –with-libexpat=/usr/local/expat –prefix=/usr/local/ganglia –sysconfdir=/etc/ganglia make make install cd ..
六 服务端配置。
1.#mkdir -p /var/lib/ganglia/rrds mkdir -p /var/lib/ganglia/dwoo chown -R root:root /var/lib/ganglia
修改 /etc/ganglia/gmetad.conf 文件
1.data_source glo master(master 映射要监控的主机 Ip, 在本例中只监控一台机器即 master。如非必要不用填端口,默认 8649,
这里的 glo 表示的是集群的名称,后面的内容是这个集群中所包含的主机信息,也就是要监控的主机。)
2.setuid_username root
添加自启动脚本
1.#cp -f ganglia-3.6.0/gmetad/gmetad.init /etc/init.d/gmetad cp -f /usr/local/ganglia/sbin/gmetad /usr/sbin/gmetad chkconfig –add gmetad
启动 gmetad 服务
1.#service gmetad start
看见 Starting GANGLIA gmetad: [OK]就代表运行正常了。通过 telnet localhost 8651 验证 gmetad 是否正常
七 客户端配置(gmond 节点)
本机安装如下:
1.#cp -f ganglia-3.6.0/gmond/gmond.init /etc/init.d/gmond cp -f /usr/local/ganglia/sbin/gmond /usr/sbin/gmond chkconfig –add gmond gmond –default_config /etc/ganglia/gmond.conf
对于生成的默认配置文件 /etc/ganglia/gmond.conf 需要做适当的修改
globals {
user = root /* 运行 Ganglia 的用户 */
host_dmax = 120 /*secs */
send_metadata_interval = 15 /* 发送数据的时间间隔 */
}
cluster {
name = glo /* 集群名称 */
owner = root /* 运行 Ganglia 的用户 */
}
udp_send_channel {
# mcast_join = 239.2.11.71 /* 注释掉组播 */
host = 192.168.1.108/* 发送给安装 gmetad 的机器 */
}
udp_recv_channel {#接受 UDP 包配置
# mcast_join = 239.2.11.71
# bind = 239.2.11.71
}
其中 name 是将要在服务端进行的分组,是服务端的数据源。接下来开启服务
1.#service gmond start
看见 Starting GANGLIA gmetad: [OK]代表启动成功。如果有失败,可以讲 gmond.conf 中的 debug 从 0 改为 100,看更多的日志,然后进行排查。
八 服务端的 WEB 配置
PHP 程序需要依赖 Apache 来运行,因此需要安装如下依赖
1.# yum -y install php httpd
2.# service httpd start // 启动 httpd 服务
九 安装 ganglia web
1.#cd /root
2.#wget http://jaist.dl.sourceforge.net/project/ganglia/ganglia-web/3.5.10/ganglia-web-3.5.10.tar.gz
3.#tar -xf ganglia-web-3.5.10.tar.gz cd ganglia-web-3.5.10 make install cd ..
这样 在 /var/www/html/ 下 生成了 ganglia 目录
注:
Ganglia 访问失败:
There was an error collecting ganglia data (127.0.0.1:8652): fsockopen error: Permission denied
解决:
需要关闭 selinux:vi /etc/selinux/config,把 SELINUX=enforcing 改成 SELINUX=disable;需要重启机器。
可以使用命令 setenforce 0 来关闭 selinux 而不需要重启,刷新页面,即可访问。但此方法只是一权宜之计。要想永久修改 selinux 设置,还是要使用第一种方法。
重启 httpd 服务器即可看到效果
1.#service httpd restart
使用 http://master/ganglia 查看对应的 ganglia 信息。(注:master 为运行 gmetad 的主机的 hostname)
十 SparkOnGanglia 中配置(前提为编译好带有 ganglia 组件的 SPARK)
(本例 spark 版本 1.5.1)
在 $SPARK_HOME/conf/metrics.properties 添加
*.sink.ganglia. >
*.sink.ganglia.host=master
*.sink.ganglia.port=8649
*.sink.ganglia.period=2
*.sink.ganglia.unit=seconds
*.sink.ganglia.ttl=1
*.sink.ganglia.mode=unicast
然后在 ganglia web 中查看 Metric 项
看完上述内容,你们对如何分析 Ganglia 本质及 SparkOnGanglia 的配置有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。