我是靠谱客的博主 漂亮小甜瓜,最近开发中收集的这篇文章主要介绍centos7安装ganglia监控,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目标: 安装配置ganglia监控系统, 对集群中的节点状态信息进行监控,特别是flume日志采集程序的运行情况进行汇总. 

集群安装拓扑结构规划: 

  flume在node1-node4上运行,所以ganglia的客户端程序gmond也要安装配置到四个节点. 

-----------------------------------------------------------------------------------------------------------------------

一. ganglia简介

    ganglia是一款为HPC(高性能计算) 集群设计的可扩展性 的分布式监控系统,它可以监视和显示集群中节点的各种状态信息,他由运行在各个节点上的gmond守护进程来采集 CPU、内存、磁盘利用率、I/O负载、网络流量情况等方面的数据。然后汇总到gmetad守护进程下,使用rrdtool存储数据,然后将历史数据以曲线方式通过PHP页面呈现。

   它由UC Berkeley创建并开源。Ganglia的中文意思是神经中枢,现在支持多部分操作系统(包括linux、unix、windows),可支持2000个节点的网络监控

  ganglia的官网:http://ganglia.info  下载链接:http://ganglia.info/?page_id=66

二. ganglia中的组件介绍: 

   

 gmetad: 服务器, 用于轮询gmond节点存储的信息

 gmond: 数据采集客户端, 用于节点信息的收集和存储

 rrdtool: 一个数据存储模块,用于存储数据和画图

 gweb: 一个web前端站点,用于可视化收集到的数据,一般与gmetad安装在同一个节点. 

 Apache+php: 一个Web服务器,作为gweb的运行环境。

三. Ganglia管理节点的层次化结构: 

 

     Ganglia的层次化结构做的非常好,由小到大可以分为node -> cluster -> grid,这三个层次。

1、一个node就是一个需要监控的节点,一般是个主机,用IP表示。每个node上运行一个gmond进程用来采集数据,并提交给gmetad。
2、一个cluster由多个node组成,就是一个集群,我们可以给集群定义名字。一个集群可以选一个node运行gmetad进程,汇总/拉取gmond提交的数据,并部署web front,将gmetad采集的数据用图表展示出来。
3、一个grid由多个cluster组成,是一个更高层面的概念,我们可以给grid定义名字。grid中可以定义一个顶级的gmetad进程,汇总/拉取多个gmond、子gmetad提交的数据,部署web front,将顶级gmetad采集的数据用图表展示出来。

四. ganglia工作模式: 

  • 单播/unicast:发送自己收集到的监控数据到特定的一台或几台机器上,可以跨网段。
  • 多播/multicast:发送自己收集到的监控数据到同一网段内所有的机器上,同时收集同一网段内的所有机器发送过来的监控数据。因为是以广播包的形式发送,因此需要同一网段内。但同一网段内,又可以定义不同的发送通道。

五。安装准备:  

 我边里因为四个节点都要做数据采集,所以全部执行了以下操作: 

设置或停止防火墙:
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service

关闭selinux:
临时关闭:
[root@localhost ~]# setenforce 0

永久关闭(修改配置文件):
[root@localhost ~]# vi /etc/selinux/config
改成SELINUX=disabled

卸载系统默认安装的Apache软件包:
[root@localhost ~]# rpm -qa httpd*
[root@localhost ~]# rpm -e --nodeps 包名

有多个httpd*,用脚本删除for name in `rpm -qa httpd*`;do rpm -e --nodeps $name;done
安装依赖包:
[root@localhost ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@localhost ~]# yum install wget lrzsz vim lynx lsof netstat-tools unzip -y

时区设置:
[root@localhost ~]timedatectl
[root@localhost ~]timedatectl list-timezones  #该命令列出了所有的时区
[root@localhost ~]timedatectl set-timezone Asia/Shanghai #该命令把时区设置为上海

时间同步:  yum安装此命令ntpdate命令, 再设置定时器定时同步时间
[root@localhost ~]# crontab -e
* */1 * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

六. Gmetad服务端安装: 

我这里的服务器都是centos7 ,它不能使用rpm方式安装ganglia, 只能以手工编译源码的方式来安装. 

下面的安装在node1节点上进行,此节点为Gmetad服务所在节点. 

[root@localhost ~]# yum -y install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpm-build glib2-devel dbus-devel freetype-devel fontconfig-devel gcc gcc-c++ expat-devel python-devel libXrender-devel
[root@localhost ~]# yum install -y libart_lgpl-devel pcre-devel libtool
[root@localhost ~]# yum install  -y rrdtool rrdtool-devel
[root@localhost ~]# mkdir /tools
[root@localhost ~]# cd  /tools/
[root@localhost ~]# wget http://www.mirrorservice.org/sites/download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
[root@localhost ~]# tar zxvf confuse-2.7.tar.gz
[root@localhost ~]# cd confuse-2.7
[root@localhost ~]# ./configure  --prefix=/usr/local/ganglia-tools/confuse CFLAGS=-fPIC --disable-nls --libdir=/usr/local/ganglia-tools/confuse/lib64
[root@localhost ~]# make && make install
[root@localhost ~]# cd /tools/
[root@localhost ~]# wget https://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/3.7.2/ganglia-3.7.2.tar.gz
[root@localhost ~]# tar zxf ganglia-3.7.2.tar.gz
[root@localhost ~]# cd ganglia-3.7.2
[root@localhost ~]# ./configure --prefix=/usr/local/ganglia --enable-gexec --enable-status --with-gmetad --with-libconfuse=/usr/local/ganglia-tools/confuse  #enable-gexec是gmond节点
[root@localhost ~]# make && make install
[root@localhost ~]# cp gmetad/gmetad.init /etc/init.d/gmetad
[root@localhost ~]# ln -s /usr/local/ganglia/sbin/gmetad /usr/sbin/gmetad

七. gweb服务安装

 我这里Gweb服务器安装到node1上。 

[root@localhost x86_64]# yum install httpd httpd-devel php -y
[root@localhost x86_64]# yum -y install rsync
[root@localhost x86_64]# cd /tools/
[root@localhost tools]# wget https://sourceforge.net/projects/ganglia/files/ganglia-web/3.7.2/ganglia-web-3.7.2.tar.gz
[root@localhost tools]# tar zxvf /tools/ganglia-web-3.7.2.tar.gz -C /var/www/html/
[root@localhost tools]# cd /var/www/html/
[root@localhost html]# mv ganglia-web-3.7.2 ganglia
[root@localhost html]# cd /var/www/html/ganglia/
[root@localhost ganglia]# useradd -M -s /sbin/nologin www-data
[root@localhost ganglia]# make install  #执行这步,会创建相关的目录
[root@localhost ganglia]# chown root:root -R /var/lib/ganglia-web/
修改配置
修改启动脚本
[root@localhost ganglia]# vi /etc/init.d/gmetad
GMETAD=/usr/sbin/gmetad  #这句话可以自行更改gmetad的命令,当然也能向我们前面做了软连接
start() {
    [ -f /usr/local/ganglia/etc/gmetad.conf  ] || exit 6  #这里将配置文件改成现在的位置,不然启动没反应
    
创建rrds目录, 这个目录里面保存集群节点信息
[root@localhost ganglia]# mkdir /var/lib/ganglia/rrds -p
[root@localhost ganglia]# chown -R nobody:nobody  /var/lib/ganglia/rrds

修改gmetad配置文件
因为我们这里就先让它当一个单纯的gweb节点和gmetad节点,不给其启动gmond服务,假设它没有再哪个多播集群里。
[root@localhost ganglia]# vi /usr/local/ganglia/etc/gmetad.conf
data_source "ycganglia" 192.168.76.200 192.168.76.201  192.168.76.202 192.168.76.203   #这也是我们以后经常修改的地方,""里面是组名称  后面是去哪个IP的那个端口去采集gmond数据  这里的四个ip正好是我的node1,node2,node3,node4 的ip

修改配置文件/etc/httpd/conf.d/ganglia.conf
[root@localhost ganglia]# vi /etc/httpd/conf.d/ganglia.conf
Alias /ganglia /var/www/html/ganglia/
<Location /ganglia>
           Require all granted
           Allow from all
        #  Order deny,allow
        #  Deny from all
        #  Allow from ::1
   # Allow from .example.com
</Location>

八. 服务端及web程序启动


[root@localhost ganglia]# mkdir -p /usr/local/ganglia/var/run
[root@localhost ganglia]# /etc/init.d/gmetad restart
[root@localhost ganglia]# systemctl restart httpd
[root@localhost tools]# netstat -luntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:8651            0.0.0.0:*               LISTEN      16547/gmetad        
tcp        0      0 0.0.0.0:8652            0.0.0.0:*               LISTEN      16547/gmetad        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1433/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1741/master         
tcp6       0      0 :::80                   :::*                    LISTEN      16344/httpd         
tcp6       0      0 :::22                   :::*                    LISTEN      1433/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1741/master         
udp        0      0 0.0.0.0:47154           0.0.0.0:*                           1242/dhclient       
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1242/dhclient       
udp6       0      0 :::2514                 :::*                                1242/dhclient

能观察到httpd及gmetad服务. 

九. gmond数据采集客户端安装: 

我这里须要分别在node1,node2,node3,node4上完成,但因为node1有一部依赖已经安装好了,所以可以不用重复安装. 

[root@localhost ~]# yum -y install apr-devel apr-util check-devel cairo-devel pango-devel libxml2-devel rpm-build glib2-devel dbus-devel freetype-devel fontconfig-devel gcc gcc-c++ expat-devel python-devel libXrender-devel
[root@localhost ~]# yum install -y libart_lgpl-devel pcre-devel libtool
[root@localhost ~]# mkdir /tools
[root@localhost ~]# cd  /tools/
[root@localhost tools]# wget http://www.mirrorservice.org/sites/download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
[root@localhost tools]# tar zxvf confuse-2.7.tar.gz
[root@localhost tools]# cd confuse-2.7
[root@localhost confuse-2.7]# ./configure  --prefix=/usr/local/ganglia-tools/confuse CFLAGS=-fPIC --disable-nls --libdir=/usr/local/ganglia-tools/confuse/lib64
[root@localhost confuse-2.7]# make && make install
[root@localhost confuse-2.7]# cd /tools/
[root@localhost tools]# wget https://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/3.7.2/ganglia-3.7.2.tar.gz
[root@localhost tools]# tar zxvf ganglia-3.7.2.tar.gz
[root@localhost tools]# cd ganglia-3.7.2
[root@localhost ganglia-3.7.2]# ./configure --prefix=/usr/local/ganglia --enable-gexec --enable-status  --with-libconfuse=/usr/local/ganglia-tools/confuse  #enable-gexec是gmond节点
[root@localhost ganglia-3.7.2]# make && make install

#以上在node1中不用重复操作,其它三个节点全部要操作

[root@localhost ganglia-3.7.2]# /usr/local/ganglia/sbin/gmond -t >/usr/local/ganglia/etc/gmond.conf  #生成gmond配置文件
[root@localhost ganglia-3.7.2]# cp /tools/ganglia-3.7.2/gmond/gmond.init /etc/init.d/gmond
[root@localhost ganglia-3.7.2]# mkdir -p /usr/local/ganglia/var/run
[root@localhost ganglia-3.7.2]# vi /usr/local/ganglia/etc/gmond.conf   #此文件较大,改以下部分
cluster {
  name = "ycganglia"         #与前面在gmetad.con中配置的集群名一样
  owner = "unspecified"
  latlong = "unspecified"
  url = "unspecified"
}
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=192.168.76.200     #此处代表gmetad服务器地址,它用于收集此集群各节点信息
  port = 8649             
  ttl = 1
}
udp_recv_channel {
  #mcast_join = 239.2.11.71
  bind=0.0.0.0           #此处代表将gmond与本机绑定,通过8649发送udp数据包,写0.0.0.0的话,所有的客户端都不用改了.
  port = 8649
  #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
}



[root@localhost ganglia-3.7.2]# /etc/init.d/gmond restart
[root@localhost ganglia-3.7.2]# netstat -luntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1056/php-fpm: maste
tcp        0      0 0.0.0.0:8649            0.0.0.0:*               LISTEN      15476/gmond         
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      1061/sshd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1061/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1683/master         
tcp6       0      0 :::50088                :::*                    LISTEN      1375/httpd          
tcp6       0      0 :::3306                 :::*                    LISTEN      1410/mysqld         
tcp6       0      0 :::2222                 :::*                    LISTEN      1061/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      1061/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1683/master         
tcp6       0      0 :::50080                :::*                    LISTEN      1375/httpd          
udp        0      0 0.0.0.0:50614           0.0.0.0:*                           855/dhclient        
udp        0      0 239.2.11.71:8649        0.0.0.0:*                           15476/gmond         
udp        0      0 0.0.0.0:68              0.0.0.0:*                           855/dhclient        
udp6       0      0 :::6727                 :::*                                855/dhclient

以后启动和关闭服务,查看服务状态,可以使用以下命令:

service httpd restart
service gmetad restart
service gmond restart

service httpd status
service gmetad status
service gmond status


十. web访问

http://node1/ganglia/

十一. 监控信息解读: 

柴少鹏的官方网站-Centos7.2 ganglia(二)之web界面介绍

柴少鹏的官方网站-Centos7.2 ganglia(三)之详解和扩展

 备注:   gmond.conf客户端配置文件的配置项详解:

各字段解释如下:
  globals字段:
    daemonize:
      是否后台运行,默认值为yes。
     setuid:
      是否设置运行用户的UID,在windows操作系统下建议设置为no。
    user:
      设置运行ganglia服务的用户名称,若不设置默认为nobody,官方已经显式帮我们设置为ganglia用户,该用户必须在当前操作系统中存在,而在安装gmod服务时,会自动帮咱们创建出该用户哟。
    debug_level:
      设置调试级别,默认值为0,表示不输出任何日志。 
    max_udp_msg_len:
      最大UDP消息长度,默认值为1472。
    mute:
      是否发送监控数据到其他节点,设置为yes则表示本节点不再发送自己的监控数据到其他节点,默认值为no。
    deaf:
      表示是否接受其他节点发送过来的监控数据,设置为yes则表示本节点不再接受其他节点发送来的监控数据,默认值为no。
    allow_extra_data:
      是否接受额外的数据信息,默认值为yes,当设置为no时可以有效的节省带宽,但也意味着不再接受额外的数据。
    host_dmax:
      默认值是86400秒,即主机在1天内过期(从web界面删除)。若设置为0,则永不删除主机信息。
    host_tmax:
      指定TMAX的时间长度,默认值是20秒,TMAX的属性我也不是很清楚,但我发现在"/etc/ganglia/gmetad.conf"配置文件中关于"data_source"关键字的注释信息中有提到了它。
    cleanup_threshold:
      设置gmod清理过期数据的时间,默认300秒。
    gexec: 
      当设置为yes时,运行执行gexec Job,默认值为no。
    send_metadata_interval:
      默认值为0秒,如果不使用多播,则应将此值设置为0以外的值。否则,如果重新启动aggregator gmond,将得到空的图。60秒是合理的。
      换句话说,在单播环境中,如果将该值设置为0,当某个节点的gmod重启后,gmod的获取节点(即gmetad)将不再接受该节点的数据,如果设置大于0,可以保证gmod节点关闭或重启后,在设定的阈值时间内gmetad节点可以重新获取gmod发送的数据。


  cluster字段:
    name:
      定义集群的名称,该名称必须和"/etc/ganglia/gmetad.conf"配置文件中的"data_source"关键字指定的唯一标识符同名,默认值为"unspecified"
    owner :
      默认值为"unspecified",无需修改,
    latlong:
      默认值为"unspecified",无需修改。
    url:
      默认值为"unspecified",无需修改。 


  host 字段:
    location:
      默认值为 "unspecified",无需修改。
  
  udp_send_channel字段:
    mcast_join :
      默认值是一个D类地址,即239.2.11.71。在网络环境比较复杂的情况下建议使用单播模式,即使用host来定义。
    host:
      指定单播地址。该地址指定的是gmetad服务器的地址。
    port:
      指定gmod的UDP监听端口,默认值为8649
    ttl:
        指定UDP发送通道的ttl,默认值为1,无需修改。

  udp_recv_channel字段
    mcast_join:
      默认值是一个D类地址,即239.2.11.71,如果udp_send_channle字段使用的是单播地址(即host字段),则建议注释该字段。
    port:
      指定本机端口,默认值为8649
    bind:
      指定绑定本机的地址,hadoop101.yinzhengjie.com。
    retry_bind:
      尝试重试绑定,默认值为true,无需修改。
    buffer:
      指定UDP的buffer大小,默认是10485760字节(即10MB),无需修改。
      tcp_accept_channel 字段
    port :
      指定TCP的监听端口,默认值为 8649
    gzip_output :
      是否启用gzip压缩,默认值为no。

 后记:

Ganglia的仅能起到监控作用,无法发出警报功能,若想要发出警报信息可以借助Nagios发出警报信息哟~

  Nagios是一个开源监控系统,可以帮助我们检验系统的运行状况,是一个非常好的警报和监视工具。可以使用Nagios来监测家禽资源和应用程序的状态以及CPU,磁盘和内存等系统资源。

  虽然Ganglia主要用来收集和跟踪指标,但Nagios可以依靠其内置的通知系统发警报。

  Nagios支持以下功能:
    (1)获取关于集群基础设施的最新信息;
    (2)生成故障报警;
    (3)检测潜在问题;
    (4)监控资源可用性;

  博主推荐使用监控,警报功能一体的开源监控系统,比如国外的zabbix服务,如果您的集群在10000台以内的话,分布式zabbix监控系统应该是hold住的。如果集群规模较大可以考虑使用Open Falcon。

最后

以上就是漂亮小甜瓜为你收集整理的centos7安装ganglia监控的全部内容,希望文章能够帮你解决centos7安装ganglia监控所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部