• 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:发送自己收集到的监控数据到同一网段内所有的机器上,同时收集同一网段内的所有机器发送过来的监控数据。因为是以广播包的形式发送,因此需要同一网段内。但同一网段内,又可以定义不同的发送通道。

    五。安装准备:  

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

    1. 设置或停止防火墙:
    2. [root@localhost ~]# systemctl stop firewalld.service
    3. [root@localhost ~]# systemctl disable firewalld.service
    4. 关闭selinux:
    5. 临时关闭:
    6. [root@localhost ~]# setenforce 0
    7. 永久关闭(修改配置文件):
    8. [root@localhost ~]# vi /etc/selinux/config
    9. 改成SELINUX=disabled
    10. 卸载系统默认安装的Apache软件包:
    11. [root@localhost ~]# rpm -qa httpd*
    12. [root@localhost ~]# rpm -e --nodeps 包名
    13. 有多个httpd*,用脚本删除for name in `rpm -qa httpd*`;do rpm -e --nodeps $name;done
    14. 安装依赖包:
    15. [root@localhost ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    16. [root@localhost ~]# yum install wget lrzsz vim lynx lsof netstat-tools unzip -y
    17. 时区设置:
    18. [root@localhost ~]timedatectl
    19. [root@localhost ~]timedatectl list-timezones #该命令列出了所有的时区
    20. [root@localhost ~]timedatectl set-timezone Asia/Shanghai #该命令把时区设置为上海
    21. 时间同步: yum安装此命令ntpdate命令, 再设置定时器定时同步时间
    22. [root@localhost ~]# crontab -e
    23. * */1 * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

    六. Gmetad服务端安装: 

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

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

    1. [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
    2. [root@localhost ~]# yum install -y libart_lgpl-devel pcre-devel libtool
    3. [root@localhost ~]# yum install -y rrdtool rrdtool-devel
    4. [root@localhost ~]# mkdir /tools
    5. [root@localhost ~]# cd /tools/
    6. [root@localhost ~]# wget http://www.mirrorservice.org/sites/download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
    7. [root@localhost ~]# tar zxvf confuse-2.7.tar.gz
    8. [root@localhost ~]# cd confuse-2.7
    9. [root@localhost ~]# ./configure --prefix=/usr/local/ganglia-tools/confuse CFLAGS=-fPIC --disable-nls --libdir=/usr/local/ganglia-tools/confuse/lib64
    10. [root@localhost ~]# make && make install
    11. [root@localhost ~]# cd /tools/
    12. [root@localhost ~]# wget https://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/3.7.2/ganglia-3.7.2.tar.gz
    13. [root@localhost ~]# tar zxf ganglia-3.7.2.tar.gz
    14. [root@localhost ~]# cd ganglia-3.7.2
    15. [root@localhost ~]# ./configure --prefix=/usr/local/ganglia --enable-gexec --enable-status --with-gmetad --with-libconfuse=/usr/local/ganglia-tools/confuse #enable-gexec是gmond节点
    16. [root@localhost ~]# make && make install
    17. [root@localhost ~]# cp gmetad/gmetad.init /etc/init.d/gmetad
    18. [root@localhost ~]# ln -s /usr/local/ganglia/sbin/gmetad /usr/sbin/gmetad

    七. gweb服务安装

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

    1. [root@localhost x86_64]# yum install httpd httpd-devel php -y
    2. [root@localhost x86_64]# yum -y install rsync
    3. [root@localhost x86_64]# cd /tools/
    4. [root@localhost tools]# wget https://sourceforge.net/projects/ganglia/files/ganglia-web/3.7.2/ganglia-web-3.7.2.tar.gz
    5. [root@localhost tools]# tar zxvf /tools/ganglia-web-3.7.2.tar.gz -C /var/www/html/
    6. [root@localhost tools]# cd /var/www/html/
    7. [root@localhost html]# mv ganglia-web-3.7.2 ganglia
    8. [root@localhost html]# cd /var/www/html/ganglia/
    9. [root@localhost ganglia]# useradd -M -s /sbin/nologin www-data
    10. [root@localhost ganglia]# make install #执行这步,会创建相关的目录
    11. [root@localhost ganglia]# chown root:root -R /var/lib/ganglia-web/
    修改配置
    1. 修改启动脚本
    2. [root@localhost ganglia]# vi /etc/init.d/gmetad
    3. GMETAD=/usr/sbin/gmetad #这句话可以自行更改gmetad的命令,当然也能向我们前面做了软连接
    4. start() {
    5. [ -f /usr/local/ganglia/etc/gmetad.conf ] || exit 6 #这里将配置文件改成现在的位置,不然启动没反应
    6. 创建rrds目录, 这个目录里面保存集群节点信息
    7. [root@localhost ganglia]# mkdir /var/lib/ganglia/rrds -p
    8. [root@localhost ganglia]# chown -R nobody:nobody /var/lib/ganglia/rrds
    9. 修改gmetad配置文件
    10. 因为我们这里就先让它当一个单纯的gweb节点和gmetad节点,不给其启动gmond服务,假设它没有再哪个多播集群里。
    11. [root@localhost ganglia]# vi /usr/local/ganglia/etc/gmetad.conf
    12. 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
    13. 修改配置文件/etc/httpd/conf.d/ganglia.conf
    14. [root@localhost ganglia]# vi /etc/httpd/conf.d/ganglia.conf
    15. Alias /ganglia /var/www/html/ganglia/
    16. <Location /ganglia>
    17. Require all granted
    18. Allow from all
    19. # Order deny,allow
    20. # Deny from all
    21. # Allow from ::1
    22. # Allow from .example.com
    23. </Location>

    八. 服务端及web程序启动

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

    能观察到httpd及gmetad服务. 

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

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

    1. [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
    2. [root@localhost ~]# yum install -y libart_lgpl-devel pcre-devel libtool
    3. [root@localhost ~]# mkdir /tools
    4. [root@localhost ~]# cd /tools/
    5. [root@localhost tools]# wget http://www.mirrorservice.org/sites/download.savannah.gnu.org/releases/confuse/confuse-2.7.tar.gz
    6. [root@localhost tools]# tar zxvf confuse-2.7.tar.gz
    7. [root@localhost tools]# cd confuse-2.7
    8. [root@localhost confuse-2.7]# ./configure --prefix=/usr/local/ganglia-tools/confuse CFLAGS=-fPIC --disable-nls --libdir=/usr/local/ganglia-tools/confuse/lib64
    9. [root@localhost confuse-2.7]# make && make install
    10. [root@localhost confuse-2.7]# cd /tools/
    11. [root@localhost tools]# wget https://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/3.7.2/ganglia-3.7.2.tar.gz
    12. [root@localhost tools]# tar zxvf ganglia-3.7.2.tar.gz
    13. [root@localhost tools]# cd ganglia-3.7.2
    14. [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节点
    15. [root@localhost ganglia-3.7.2]# make && make install
    16. #以上在node1中不用重复操作,其它三个节点全部要操作
    17. [root@localhost ganglia-3.7.2]# /usr/local/ganglia/sbin/gmond -t >/usr/local/ganglia/etc/gmond.conf #生成gmond配置文件
    18. [root@localhost ganglia-3.7.2]# cp /tools/ganglia-3.7.2/gmond/gmond.init /etc/init.d/gmond
    19. [root@localhost ganglia-3.7.2]# mkdir -p /usr/local/ganglia/var/run
    20. [root@localhost ganglia-3.7.2]# vi /usr/local/ganglia/etc/gmond.conf #此文件较大,改以下部分
    21. cluster {
    22. name = "ycganglia" #与前面在gmetad.con中配置的集群名一样
    23. owner = "unspecified"
    24. latlong = "unspecified"
    25. url = "unspecified"
    26. }
    27. udp_send_channel {
    28. #bind_hostname = yes # Highly recommended, soon to be default.
    29. # This option tells gmond to use a source address
    30. # that resolves to the machine's hostname. Without
    31. # this, the metrics may appear to come from any
    32. # interface and the DNS names associated with
    33. # those IPs will be used to create the RRDs.
    34. #mcast_join = 239.2.11.71
    35. host=192.168.76.200 #此处代表gmetad服务器地址,它用于收集此集群各节点信息
    36. port = 8649
    37. ttl = 1
    38. }
    39. udp_recv_channel {
    40. #mcast_join = 239.2.11.71
    41. bind=0.0.0.0 #此处代表将gmond与本机绑定,通过8649发送udp数据包,写0.0.0.0的话,所有的客户端都不用改了.
    42. port = 8649
    43. #bind = 239.2.11.71
    44. retry_bind = true
    45. # Size of the UDP buffer. If you are handling lots of metrics you really
    46. # should bump it up to e.g. 10MB or even higher.
    47. # buffer = 10485760
    48. }
    49. [root@localhost ganglia-3.7.2]# /etc/init.d/gmond restart
    50. [root@localhost ganglia-3.7.2]# netstat -luntp
    51. Active Internet connections (only servers)
    52. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    53. tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1056/php-fpm: maste
    54. tcp 0 0 0.0.0.0:8649 0.0.0.0:* LISTEN 15476/gmond
    55. tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 1061/sshd
    56. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1061/sshd
    57. tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1683/master
    58. tcp6 0 0 :::50088 :::* LISTEN 1375/httpd
    59. tcp6 0 0 :::3306 :::* LISTEN 1410/mysqld
    60. tcp6 0 0 :::2222 :::* LISTEN 1061/sshd
    61. tcp6 0 0 :::22 :::* LISTEN 1061/sshd
    62. tcp6 0 0 ::1:25 :::* LISTEN 1683/master
    63. tcp6 0 0 :::50080 :::* LISTEN 1375/httpd
    64. udp 0 0 0.0.0.0:50614 0.0.0.0:* 855/dhclient
    65. udp 0 0 239.2.11.71:8649 0.0.0.0:* 15476/gmond
    66. udp 0 0 0.0.0.0:68 0.0.0.0:* 855/dhclient
    67. udp6 0 0 :::6727 :::* 855/dhclient

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

    1. service httpd restart
    2. service gmetad restart
    3. service gmond restart
    4. service httpd status
    5. service gmetad status
    6. 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。
  • 相关阅读:
    程序人生,中秋共享
    如何拆分PDF成单页?这三个方法分享给你
    键盘控制ROS车运动
    net Framework OAuth2.0
    java校验字符串只包含数字
    Spring 之 jwt,过滤器,拦截器,aop,监听器
    Centos 64位环境下编译32位C程序
    Ubuntu20.04安装c++版本的OpenCV
    HTML 知识扫盲
    商汤发布象棋机器人『元萝卜』;『南瓜书』西瓜书公式推导&解析;代码自动美化插件;Tock建立对话机器人的AI平台;前沿论文 | ShowMeAI资讯日报
  • 原文地址:https://blog.csdn.net/zhangyingchengqi/article/details/125555849