我是靠谱客的博主 真实黄豆,最近开发中收集的这篇文章主要介绍配置ganglia 监控 hadoop 节点,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

操作系统: CentOS

安装

最方便的yum因为版本问题用不了
所以就用源码安装咯,安装之前,有一些需要前置依赖需要安装的

rpm -q gcc glibc glibc-common rrdtool rrdtool-devel apr  apr-devel expat expat-devel  pcre pcre-devel dejavu-lgc-sans-mono-fonts dejavu-sans-mono-fonts

查一下,如果没有就自动安装一下

yum -y install 包名(支持*) :自动选择y,全自动
yum install 包名(支持*) :手动选择y or n
yum remove 包名(不支持*)
rpm -ivh 包名(支持*):安装rpm包
rpm -e 包名(不支持*):卸载rpm包
#建立rrd数据库
mkdir -p /var/lib/ganglia/rrds/
chown nobody:nobody -R /var/lib/ganglia/rrds/

除了上面的,还有个confuse-2.7,需要源码安装

wget http://savannah.nongnu.org/download/confuse/confuse-2.7.tar.gz
tar -zxvf confuse-2.7.tar.gz
cd confuse-2.7.tar.gz
./configure CFLAGS=-fPIC --disable-nls
make && make install

依赖包装好了,开始装ganglia
ganglia分为gmond,gmetad,Ganglia-web
前者是客户端用的, 后两个是服务端用的

服务端-gmetad

注意需要加–with-gmetad

#安装
wget http://downloads.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.7.1/ganglia-3.7.1.tar.gz
tar -zxvf ganglia-3.7.1.tar.gz
cd ganglia-3.7.1
./configure --with-gmetad --with-librrd=/usr/lib64/ --prefix=/usr/local/ganglia --enable-gexec --enable-status
make  && make install
cp ./gmetad/gmetad.init /etc/init.d/gmetad
ip route add 239.2.11.71 dev em1
vi  /etc/init.d/gmetad

根据安装路径修改/etc/init.d/gmetad
METAD=/usr/ganglia/sbin/gmetad
改为
METAD=/usr/local/ganglia/sbin/gmetad
之后修改配置文件
vi /usr/local/ganglia/etc/gmetad.conf
rrd路径与之前建立的路径相同

data_source "hadoop" IP:端口
gridname "hadoop"
rrd_rootdir "/usr/local/ganglia/rrds"

需要注意的是,data_source指的是一个监控组,监控内网内gmond进程端口为设定端口的一组服务器
修改service

vim /usr/lib/systemd/system/gmetad.service

将service修改为如下

[Unit]
Description=Ganglia Meta Daemon
After=network.target
[Service]
Type=forking
PIDFile=/var/run/gmetad.pid
ExecStart=/usr/local/ganglia/sbin/gmetad -c /usr/local/ganglia/etc/gmetad.conf --pid-file=/var/run/gmetad.pid
EnvironmentFile=-/usr/local/ganglia/sbin/gmetad

之后重新载入service

systemctl daemon-reload
service gmetad start

查看状态

service gmetad status

查看获取的监控信息

telnet localhost 8651

遇到过的问题如下:
1.Unable to create tcp_accept_channel
这里是因为志强未成功启动,导致设置的tcp端口被占用,而重新启动时,并没有释放该端口,所以重新启动发现该端口被占用,启动失败
解决方法很简单,获取阻塞端口进程

netstat -nlp |grep 8649
ps -ef | grep gmated
kill -9 pid

kill进程之后重新启动即可
2.找不到pid文件,这个是因为service文件中的路径与实际不符合,而且编译过程也没有产生相应的pid文件,依照上面的改动即可解决

服务端-ganglia-web

接下来安装web相关的
php和apache(因为web端是php写的,所以需要安装php)
需要注意的是apache叫httpd

yum install -y php
yum install -y httpd
#设置Apache服务的启动级别
chkconfig --levels 235 httpd on
#启动
/etc/init.d/httpd start
#或者
service httpd start

修改ganglia-web Makefile

##########################################################
# User configurables:
##########################################################
# Location where gweb should be installed to (excluding conf, dwoo dirs).
#GDESTDIR = /usr/share/ganglia-webfrontend
GDESTDIR = /var/www/html
# Location where default apache configuration should be installed to.
GCONFDIR = /etc/ganglia-web

# Gweb statedir (where conf dir and Dwoo templates dir are stored)
GWEB_STATEDIR = /var/lib/ganglia-web

# Gmetad rootdir (parent location of rrd folder)
GMETAD_ROOTDIR = /var/lib/ganglia

APACHE_USER = apache
#APACHE_USER = www-data
##########################################################

注意:GDESTDIR 和 APACHE_USER 要与APACHE的配置文件(/etc/httpd/conf/httpd.conf)中的 DocumentRoot 、 apache保持一致
之后直接make install
修改配置:
vi /var/www/html/conf_default.php
看看各个路径有没有不对的地方,修改了makefile应该是没有问题
这时候ganglia-web就可以用了,可以通过浏览器打开(IP地址)
这时候如果遇到这样的问题

fsockopen error: Permission denied

说明,是防火墙的问题
需要关闭SELinux
查看SELinux状态:sestatus
关闭SELinux:setenforce 0
etenforce 这个指令可以即时切换 Enforcing 及 Permissive 这两个模式,但这些改动在系统重新开机时不会被保留。
要想在下次开机后生效,需要在 /etc/selinux/config 内修改 SELINUX= 这一行为 enforcing。
这样就可以打开ganglia监控主页啦

客户端-gmond

wget http://downloads.sourceforge.net/project/ganglia/ganglia%20monitoring%20core/3.7.1/ganglia-3.7.1.tar.gz
tar -zxvf ganglia-3.7.1.tar.gz
cd ganglia-3.7.1
./configure --enable-gexec 
make  && make install
cp ./gmond/gmond.init /etc/init.d/gmond
ip route add 239.2.11.71 dev em1
vi  /etc/init.d/gmond

根据安装路径修改/etc/init.d/gmond
METAD=/usr/ganglia/sbin/gmond
改为
METAD=/usr/local/sbin/gmond
因为编译的时候没用前缀,所以跟上面有些不一样
之后修改service
vim /usr/lib/systemd/system/gmond.service

[Unit]
Description=Ganglia Monitor Daemon
After=network.target
[Service]
Type=forking
PIDFile=/var/run/gmond.pid
ExecStart=/usr/local/sbin/gmond -c /etc/gmond.conf --pid-file=/var/run/gmond.pid
[Install]
WantedBy=multi-user.target

由于安装过程中没有配置文件 gmond.conf
所以需要用gmond生成一个配置文件
/usr/local/sbin/gmond -t |tee /etc/gmond.conf
修改配置文件中的

cluster {
  name = "hadoop"
  owner = "nobody"
  latlong = "unspecified"
  url = "unspecified"
}

主要需要注意的是name需要和gmetad中的data_source中一致
还有就是文件中的端口号需要gmetad中的data_source中一致

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
# host= 10.24.84.200
  port = 8649    //look here
  ttl = 1
}

/* You can specify as many udp_recv_channels as you like as well. */
udp_recv_channel {
  mcast_join = 239.2.11.71
 # host=10.24.84.200
  port = 8649   //look here
  bind = 239.2.11.71
  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
}

/* You can specify as many tcp_accept_channels as you like to share
   an xml description of the state of the cluster */
tcp_accept_channel {
  port = 8649  //look here
  # If you want to gzip XML output
  gzip_output = no
}

这样就配置好了
P.S.附一些调试方法
telnet IP 端口
tcpdump port 8649 -i em1 -n
tail /var/log/messages

最后

以上就是真实黄豆为你收集整理的配置ganglia 监控 hadoop 节点的全部内容,希望文章能够帮你解决配置ganglia 监控 hadoop 节点所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部