概述
操作系统: 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 节点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复