• <ganglia+nagios>rhel6.5


    由于linux下的office和win下有所区别,我只能把linux下的.dot文件打包成pdf,粘贴发送标出来,但有些图片还是没办法发表,要是有朋友感兴趣的话,可加我qq 215687833具体的文档可供参考,皆来自本人整理,扯犊子的请绕行。

    ganglia 是分布式的监控系统,有两个 Daemon, 分别是:客户端 Ganglia Monitoring
    Daemon (gmond)和服务端 Ganglia Meta Daemon (gmetad),还有 Ganglia PHP Web
    Frontend(基于 web 的动态访问方式)组成
    是一个 Linux 下图形化监控系统运行性能的软件,界面美观、丰富,功能强大
    http://ganglia.sourceforge.net/ 软件下载
    环境:RHEL6 x86­64 disable selinux and iptables
    2 台主机的解析分别为
    192.168.2.79    node2.example.com
    192.168.2.81    node3.example.com
    ganglia 多播的配置。
    配置在 192.168.2.79    node2.example.com
    下载软件包:
    ganglia­3.6.0.tar.gz
    ganglia­web­3.5.10.tar.gz
    libconfuse­2.6­3.el6.x86_64.rpm
    libconfuse­devel­2.6­3.el6.x86_64.rpm
    rrdtool­devel­1.3.8­6.el6.x86_64.rpm
    yum install ­y rpm­build 将 tar 包打压成 rpm 包。
    [root@node2 ~]# rpmbuild ­tb ganglia­3.6.0.tar.gz  打压的过程中所需要的依赖包。
    error: Failed build dependencies:
    libart_lgpl­devel is needed by ganglia­3.6.0­1.x86_64
    gcc­c++ is needed by ganglia­3.6.0­1.x86_64
    python­devel is needed by ganglia­3.6.0­1.x86_64
    libconfuse­devel is needed by ganglia­3.6.0­1.x86_64
    pcre­devel is needed by ganglia­3.6.0­1.x86_64
    expat­devel is needed by ganglia­3.6.0­1.x86_64
    rrdtool­devel is needed by ganglia­3.6.0­1.x86_64
    apr­devel > 1 is needed by ganglia­3.6.0­1.x86_64
    安装依赖关系。
    # yum install ­y libart_lgpl­devel gcc­c++ python­devel pcre­devel expat­devel rrdtool­devel apr­devel
    安装完成后再次打压。
    [root@node2 ~]# rpmbuild ­tb ganglia­3.6.0.tar.gz
     error: Failed build dependencies:
    libconfuse­devel is needed by ganglia­3.6.0­1.x86_64
    rrdtool­devel is needed by ganglia­3.6.0­1.x86_64
    发现还需要依赖关系,安装以下依赖包。
    [root@node2 ~]# yum localinstall libconfuse­devel­2.6­3.el6.x86_64.rpm rrdtool­devel­1.3.8­
    6.el6.x86_64.rpm
    发现安装 上面 2 个包,又产生一个依赖包,还需要安装依赖 包。
    [root@node2 ~]# yum localinstall libconfuse­devel­2.6­3.el6.x86_64.rpm rrdtool­devel­1.3.8­
    6.el6.x86_64.rpm libconfuse­2.6­3.el6.x86_64.rpm
    再次将 tar 包打压成 rpm 包,ok
    [root@node2 ~]# rpmbuild ­tb ganglia­3.6.0.tar.gz
    将 tar­web tar 包也打压成 rpm 包。
    [root@node2 ~]# rpmbuild ­tb ganglia­web­3.5.10.tar.gz
    切换到下面的目录,ganglia 打压的 包放在这下面。
    /root/rpmbuild/RPMS/x86_64
    [root@node2 x86_64]# ls
    ganglia­devel­3.6.0­1.x86_64.rpm
    ganglia­gmetad­3.6.0­1.x86_64.rpm
    ganglia­gmond­3.6.0­1.x86_64.rpm
    ganglia­gmond­modules­python­3.6.0­1.x86_64.rpm
    libganglia­3.6.0­1.x86_64.rpm
    [root@node2 x86_64]# rpm ­ivh *
    Preparing...                ########################################### [100%]
       1:libganglia             ########################################### [ 20%]
       2:ganglia­gmond          ########################################### [ 40%]
       3:ganglia­gmond­modules­p########################################### [ 60%]
       4:ganglia­devel          ########################################### [ 80%]
       5:ganglia­gmetad         ########################################### [100%]
    /root/rpmbuild/RPMS/noarch  ganglia­web 打压的包放在这下面。
    [root@node2 noarch]# yum localinstall ganglia­web­3.5.10­1.noarch.rpm ­y
    ganglia 的主配置文件都放在/etc/ganglia 目录下。
    [root@node2 ganglia]# vim gmetad.conf 修改服务的配置文件。
    data_source "my cluster" localhost 改个组名为 my cluster
    [root@node2 ganglia]# vim gmond.conf
    cluster {
      name = "my cluster"
      owner = "unspecified"
      latlong = "unspecified"
      url = "unspecified"
    启动 ganglia 的服务端/客户端:
    /etc/init.d/gmond start
    /etc/init.d/gmetad start
    在浏览器中输入: http://192.168.2.79/ganglia/
    这下面放的是通过广播监控到的 ganglia 服务的信息。
    /var/lib/ganglia/rrds/my cluster
    [root@node2 my cluster]# ls
    192.168.2.125  192.168.2.138  192.168.2.56  node2.example.com
    192.168.2.133  192.168.2.207  192.168.2.71  __SummaryInfo__
    192.168.2.134  192.168.2.220  192.168.2.85
    下面配置另一台主机的 ganglia 客户端服务。
    首先切换到当下目录,将 ganglia 包拷贝到远程主机。
    /root/rpmbuild/RPMS/x86_64
    scp ganglia­gmond­* libganglia­3.6.0­1.x86_64.rpm 192.168.2.81:/root/ 顺便也把 libconfuse­2.6­
    3.el6.x86_64.rpm 也拷贝过去,会用到依赖关系。
    安装客户端的软件包。
    配置在 192.168.2.81    node3.example.com
    [root@node3 ~]# yum localinstall ganglia­gmond­* libganglia­3.6.0­1.x86_64.rpm libconfuse­2.6­
    3.el6.x86_64.rpm
    一样 ganglia 的主配置文件也放在/etc/ganglia 目录下。
    [root@node3 ganglia]# vim  gmond.conf 编辑客户端的配置文件。
    cluster {
      name = "my cluster"
      owner = "unspecified"
      latlong = "unspecified"
      url = "unspecified"
    }
    要是有多台客户端的主机,组一样都使用
    cluster {
      name = "my cluster"
      owner = "unspecified"
      latlong = "unspecified"
      url = "unspecified"
    }
    重启服务:
    # /etc/init.d/gmond start
    在主配置的/var/lib/ganglia/rrds 目录下可以看到 ganglia 所监控到的主机信息。
    单播 ganglia 的配置:
    配置在 192.168.2.79 这台主机上。
    单播的原理就是各自监控各自的,大家的组/端口都不一样,每个人起得组名字,端口都不一样。
    首先把上面的 ganglia 服务给停了。
    [root@node2 ganglia]# vim gmetad.conf 编辑服务端的配置
    组名我改为 linux007  监控的主机为 192.168.2.79 和 192.168.2.81 端口为 8007
    data_source "linux007" 192.168.2.79:8007        192.168.2.81:8007
    [root@node2 ganglia]# vim gmond.conf 客户端主要修改以下几行
     send_metadata_interval = 30 /*secs */ 发送的更新为 30 秒
    cluster {
      name = "linux007"  客户端的组名也为 linux007
      owner = "unspecified"
      latlong = "unspecified"
      url = "unspecified"
    }
    mcast_join = 239.2.11.71
      port = 8007
      ttl = 1
    udp_recv_channel {
      mcast_join = 239.2.11.71
      port = 8007  端口也为 8007
      bind = 239.2.11.71
    retry_bind = true
    tcp_accept_channel {
      port = 8007  tcp 的端口为 8007
      # If you want to gzip XML output
      gzip_output = no
    }
    重启服务:
    /etc/init.d/gmond restart
    /etc/init.d/gmetad restart
    另一台客户端的配置;
    192.168.2.81 node3 这台主机:
    [root@node3 ganglia]# vim  gmond.conf  客户端的配置文件修改以下几行。
    send_metadata_interval = 30 /*secs */
    cluster {
      name = "linux007"
      owner = "unspecified"
      latlong = "unspecified"
      url = "unspecified"
    }
    mcast_join = 239.2.11.71
      port = 8007
      ttl = 1
    udp_recv_channel {
      mcast_join = 239.2.11.71
      port = 8007
      bind = 239.2.11.71
      retry_bind = true
    tcp_accept_channel {
      port = 8007
      # If you want to gzip XML output
      gzip_output = no
    }
    重启服务:
    # /etc/init.d/gmond restart
    在服务端的/var/lib/ganglia/rrds/linux007 目录下,会看到一下文件或目录。
    node2.example.com  node3.example.com  __SummaryInfo__
    在浏览器中会看到:linux007 的信息
    [root@node2 contrib]# cp check_ganglia.py /usr/local/nagios/libexec/
    [root@node2 contrib]# cd /usr/local/nagios/libexec/
    [root@node2 libexec]# ./check_ganglia.py
    Usage: check_ganglia ­h|­­host= ­m|­­metric= ­w|­­warning= ­c|­­critical= [­s|­­server=] [­p|­­port=]
    ­h 可以写主机名,也可以写 ip,这怎么写,你在/var/lib/ganglia/rrds/linux007/看到的信息是一样
    的。
    [root@node2 libexec]# vim check_ganglia.py
    ganglia_port = 8007
    这下面的明显是不对的,我们写的是 20%警告,10%危险,先面的输出是危险,磁盘剩余空间
    83.04,很明显是不对的。
    [root@node2 libexec]# ./check_ganglia.py ­h node3.example.com ­m disk_free_percent_rootfs ­w 20
    ­c 10
    CHECKGANGLIA CRITICAL: disk_free_percent_rootfs is 83.04
    修改脚本 check_ganglia.py,使其符合我们的要求输出。
    [root@node2 libexec]# vim check_ganglia.py
    if critical > warning:
      if value >= critical:
        print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value)
        sys.exit(2)
      elif value >= warning:
        print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value)
        sys.exit(1)
      else:
        print "CHECKGANGLIA OK: %s is %.2f" % (metric, value)
        sys.exit(0)
    else:
      if critical >= value:
        print "CHECKGANGLIA CRITICAL: %s is %.2f" % (metric, value)
        sys.exit(2)
      elif warning >= value:
        print "CHECKGANGLIA WARNING: %s is %.2f" % (metric, value)
        sys.exit(1)
      else:
        print "CHECKGANGLIA OK: %s is %.2f" % (metric, value)
        sys.exit(0)
      
    再次输出发现完全符合要求:
    [root@node2 libexec]# ./check_ganglia.py ­h node3.example.com ­m disk_free_percent_rootfs ­w 20
    ­c 10
    CHECKGANGLIA OK: disk_free_percent_rootfs is 83.04
    ganglia 擅长监控多台服务,nagios 擅长警告,现在把他们结合起来。
    首先 nagios 没有 ganglia 的命令,我们添加 nagios 命令。
    # cd /usr/local/nagios/etc/objects/
    [root@node2 objects]# vim commands.cfg 要是上面的验证是 ip 则 HOSTADDRESS,我是域
    名则
    define command{
            command_name    check_ganglia
            command_line    $USER1$/check_ganglia.py ­h $HOSTNAME$ ­m $ARG1$ ­w $ARG2$ ­c
    $ARG3$
            }
                              
    [root@node2 objects]# vim templates.cfg
    define service {
    use generic­service
    name ganglia­service
    hostgroup_name ganglia­servers
    service_groups ganglia­metrics
    register        0
    }
    [root@node2 objects]# vim hosts.cfg
    define hostgroup {
    hostgroup_name ganglia­servers
    alias ganglia­servers
    members node3.example.com
    }
    [root@node2 objects]# vim services.cfg
    define servicegroup {
    servicegroup_name       ganglia­metrics
    alias   Ganglia Metrics
    }
    define service {
    use     ganglia­service
    service_description     根分区
    check_command   check_ganglia!disk_free_percent_rootfs!20!10
    }
    define service {
    use     ganglia­service
    service_description     系统负载
    check_command   check_ganglia!load_one!4!5
    }
    重启服务后校验语发是否错误:
    [root@node2 etc]# /usr/local/nagios/bin/nagios ­v /usr/local/nagios/etc/nagios.cfg
    校验成后重启服务:
    # /etc/init.d/nagios restart
    在浏览器输入 http://192.168.2.79/nagios/  点击 servers 会看到下面:
    下面额外的添加一台客户端 node4 192.168.2.82,为其添加服务主机,使用 ganglia+nagios 监控:
    scp ganglia­gmond­* libconfuse­2.6­3.el6.x86_64.rpm libganglia­3.6.0­1.x86_64.rpm
    192.168.2.82:/root/
    安装这些软件包:
    rpm    ­ivh *
    把客户端的配置文件也给 node4 拷贝一份。
    # scp gmond.conf 192.168.2.82:/etc/ganglia/
    # /etc/init.d/gmond restart
    在 node2 也就是服务端的/var/lib/ganglia/rrds/linux007 的目录下回收到 node4 这台主机的信息.
    192.168.2.82  node2.example.com  node3.example.com  __SummaryInfo__
    切换到 node2 这台主机,也就是 ganglia 和 nagios 这台主机的目录下。
    /usr/local/nagios/etc/objects
    [root@node2 objects]# vim hosts.cfg 额外添加的主机只需以,隔开;添加主机名
    define host{
            use                     linux­server
            host_name               node4.example.com
            alias                   node4
            address                 192.168.2.82
            }
    define hostgroup {
    hostgroup_name ganglia­servers
    alias ganglia­servers
    members node3.example.com,node4.example.com
    }
    [root@node2 objects]# vim services.cfg 额外添加的服务,所有的主机都可以收到。
    define service {
    use     ganglia­service
    service_description     内存空间
    check_command   check_ganglia!mem_free!100!50
    }
    重启服务:
    # /etc/init.d/gmond restart
    # /etc/init.d/gmetad restart
    # /etc/init.d/nagios restart
    在浏览器中输入:http://192.168.2.79/nagios/    得到下图:

  • 相关阅读:
    SQL 2005的ROW_NUMBER()实现分页的功能
    UML建模工具集
    挽救崩溃的WinXP操作系统四招
    16个经典面试问题回答思路
    自动关闭弹出式窗口
    在winform中嵌入Flash(swf)的方法及常见问题的解决
    C#获取安装程序所在的路径
    转载:C#操作注册表
    C#实现Dll(OCX)控件自动注册的两种方法
    转载:C#创建和修改注册信息
  • 原文地址:https://www.cnblogs.com/linux-super-meng/p/3859221.html
Copyright © 2020-2023  润新知