zoukankan      html  css  js  c++  java
  • 2.监控利器nagios手把手企业级实战第一部

     1.   什么是Nagios? 

              Nagios是一款开源的网络及服务的监控工具,功能强大,灵活性强,需要注意的是,其服务端只能在linux上面安装。

               Nagios可以进行分布式监控。

               这里主要解释一下什么叫分布式?什么是集群?什么是分布式计算?

              分布式:不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题。
               集群:同一个业务部署在多台机器上,提高系统可用性。    

              所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。

              打个比方,一个任务由5个子任务组成,暂且五个子任务都是独立的,异步的。一个子任务如果需要1个小时完成,那么我只需要将5个子任务分配到5个机器上,那么就是一小时完成了这个任务,这就是分布式,解决的是高并发。

              那么集群,就是将一群机器集合起来,完成一个任务。如果一个任务的机器跨了,可以通过其他机器替代,讲究的是可用性。

              在网上看到,现在讲的各种云计算,说白了就是集群和分布式的一些应用。

               分布式是指将不同的业务分布在不同的地方。 而集群指的是将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。(也可以是分布式,比如你布置多个集群咯!)

             举个例子:

               饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群

         nagios本身只做核心监控,其他功能通过插件(模块)完成,从感官上来说,给人的感觉很碎,不完整。

              常用组件功能作用:

               Nagios组成一个主程序Nagios和插件程序Nagios-plugins和一些可插的附加程序(NRPE、NSClient++、NSCA和NDOUtils)等。

               Nagios本身是一个监控平台而已,其具体的监控工作都是通过插件Nagios-plugins来实现的,Nagios-plugins也要安装于被监控端。

              这里解释下插件的概念?

              插件是一种遵循一定规范的应用程序接口编写出来的程序。其只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台单独运行。因为插件需要调用原纯净系统提供的函数库或者数据。很多软件都有插件,插件有无数种。

              好了,现在说一下几个附件插件功能:

              1.NRPE:只能存在于linux不能存在windows系统中,安装于被监控端,执行脚本插件后,就会获取相关本地资源回传给服务端,实现对本地的监控。在本地中,它的存在是守护进程(agent)模式,开启端口是5666。是通过服务端调用,才会回传数据。

                在linux或者unix操作系统中在系统引导的时候会开启很多服务,这些服务就叫做守护进程。

              2.NSClients++:和NRPE一样,不同之处就是被监控端是windows系统。

              3.NDoUtils:存在于Nagios服务端,用于将Nagios的配置信息和各event,比如agent端cpu实时状态等产生的数据存入数据库以实现对这些数据的检索处理;说白了就是一个Nagis的数据库接口。(不推荐,因为直接放到磁盘比数据库好,但数据库可检索)

              4.NSCA:NSCA需要同时安装在客户端和服务器端。在分布式监控集群模式下会用到。是一种主动报告模式,不需要服务器请求的。(上千个服务器会用到)

    监控的模式分为:

    主动模式:服务器主动监控客户端

    半被动模式:服务器发出请求后,客户端在进行汇报,例如nrpe

    被动模式:客户端主动上报的

     2.   NRPE运行原理图(化繁为简是一个优秀运维师的能力)

         

     

      3. Nagios服务端安装

    管理IP地址   角色        备注
    CentOS 64 位 nagios监控服务器  
     JHRZ-CentOS-20(2) LAMP服务器 被监控的客户端服务器 
     JHRZ-CentOS-21 LNMP服务器 被监控的客户端服务器

        

    1)
    cd /etc/yum.repos.d/
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
    2)
    echo 'export LC_ALL=C'>> /etc/profile
    source /etc/profile
    3)
    /etc/init.d/iptables stop
    /etc/init.d/iptables stop
    chkconfig iptables off
    setenforce 0
     if [ -f /etc/selinux/config ]; then
      sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
      setenforce 0
     fi
    4)
    /usr/sbin/ntpdate pool.ntp.org
    echo '#time sync by oldboy at 2010-2-1'>>/var/spool/cron/root
    echo '*/10 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1'>>/var/spool/cron/root
    crontab -l
    5)
    yum install gcc glibc glibc-common -y
    yum install gd gd-devel -y
    yum install httpd php php-gd -y
    yum install mysql* -y
     
    6)创建目录文件
    /usr/sbin/useradd -m nagios
    #/usr/sbin/useradd apache
    /usr/sbin/groupadd nagcmd
    /usr/sbin/usermod -a -G nagcmd nagios
    /usr/sbin/usermod -a -G nagcmd apache
    7)上传解压安装软件
    [ ! -f oldboy_training_nagios_soft.zip ] && exit 1
    unzip oldboy_training_nagios_soft.zip
    tar xzf nagios-3.5.1.tar.gz
    cd nagios
    ./configure --with-command-group=nagcmd
    make all
    make install
    make install-init
    make install-config
    make install-commandmode
    make install-webconf
    8)登陆web nagios 的用户
    htpasswd -cb /usr/local/nagios/etc/htpasswd.users oldboy 123456 
    9)安装插件 nagios-plugins
    yum -y install perl-devel
    tar zxf nagios-plugins-1.4.16.tar.gz
    cd nagios-plugins-1.4.16
    ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-perl-modules
    make && make install
    cd ../
    ls /usr/local/nagios/libexec/|wc -l
    10)安装nrpe:两个原因1.监控本地的用nrpe 2.nagios-plugins中没有check_nrpe,如果不安装nrpe,就没有check_nrpe
    echo "------ step 10: install nrpe------"   
    tar zxvf nrpe-2.12.tar.gz
    cd nrpe-2.12
    ./configure
    make all
    make install-plugin
    make install-daemon
    make install-daemon-config
    cd ..
    11)服务检查
    /etc/init.d/nagios start
    /etc/init.d/httpd start
    echo -----------
    lsof -i tcp:80
    echo ----------
    ps -ef|grep nagios
    echo "NAGIOS is successfully installed."
    echo ok
     登陆测试:htt://ip/nagios

     4.客户端安装配置

    1)
    cd /etc/yum.repos.d/
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
    2)
    echo 'export LC_ALL=C'>> /etc/profile
    source /etc/profile
    3)
    /etc/init.d/iptables stop
    /etc/init.d/iptables stop
    chkconfig iptables off
    setenforce 0
     if [ -f /etc/selinux/config ]; then
      sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
      setenforce 0
     fi
    4)
    /usr/sbin/ntpdate pool.ntp.org
    echo '#time sync by oldboy at 2010-2-1'>>/var/spool/cron/root
    echo '*/10 * * * * /usr/sbin/ntpdate pool.ntporg >/dev/null 2>&1'>>/var/spool/cron/root
    crontab -l
    5)add nagios user
    /usr/sbin/useradd -m nagios -s /sbin/nologin
    6)unzip nagios soft

     mkdir -p /home/oldboy/tools/
    cd /home/oldboy/tools/
    [  ! -f ./oldboy_training_nagios_soft.zip ] &&{
    echo "nagios soft is not exist."
    exit 1
    }
    /bin/cp oldboy_training_nagios_soft.zip /home/oldboy/tools/
    cd /home/oldboy/tools/

    7)install nagios-plugins

    yum -y install perl-devel
    tar zxf nagios-plugins-1.4.16.tar.gz
    cd nagios-plugins-1.4.16
    ./configure --prefix=/usr/local/nagios --enable-perl-modules --enable-redhat-pthread-workaround
    make && make install
    cd ../
    ls /usr/local/nagios/libexec/|wc -l

    8)install nrpe

    cd /home/oldboy/tools/
    tar zxf nrpe-2.12.tar.gz
    cd nrpe-2.12
    ./configure
    make all
    make install-plugin
    make install-daemon
    make install-daemon-config
    cd ..

    9)install soft for iostat------" --监控磁盘io需要

     cd /home/oldboy/tools/
    tar zxvf Params-Validate-0.91.tar.gz
    cd Params-Validate-0.91
    perl Makefile.PL
    make 
    make install
    cd ..
    #----------------------------------------
    cd /home/oldboy/tools/
    tar zxvf Class-Accessor-0.31.tar.gz
    cd Class-Accessor-0.31
    perl Makefile.PL
    make
    make install
    cd ..
    #----------------------------------------
    cd /home/oldboy/tools/
    tar zxvf Config-Tiny-2.12.tar.gz
    cd Config-Tiny-2.12
    perl Makefile.PL
    make
    make install
    cd ..
    #----------------------------------------
    cd /home/oldboy/tools/
    tar zxvf Math-Calc-Units-1.07.tar.gz
    cd Math-Calc-Units-1.07
    perl Makefile.PL
    make
    make install
    cd ..
    #----------------------------------------
    cd /home/oldboy/tools/
    tar zxvf Regexp-Common-2010010201.tar.gz
    cd Regexp-Common-2010010201
    perl Makefile.PL
    make
    make install
    cd ..
    #----------------------------------------
    cd /home/oldboy/tools/
    tar zxvf Nagios-Plugin-0.34.tar.gz
    cd Nagios-Plugin-0.34
    perl Makefile.PL
    make
    make install
    cd ..

    #for monitor iostat
    yum install sysstat -y --性能监控的监控工具
    /bin/cp /home/oldboy/tools/check_memory.pl /usr/local/nagios/libexec
    /bin/cp /home/oldboy/tools/check_iostat /usr/local/nagios/libexec
    chmod 755 /usr/local/nagios/libexec/check_memory.pl
    chmod 755 /usr/local/nagios/libexec/check_iostat
    dos2unix /usr/local/nagios/libexec/check_memory.pl
    dos2unix /usr/local/nagios/libexec/check_iostat

     9)修改nrpe.cfg

     vim /usr/local/nagios/etc/nrpe.cfg

     allowed_hosts=127.0.0.1 修改添加服务端主机

    删除系统定义的变量名:

     #delete 199--203
    cp /usr/local/nagios/etc/nrpe.cfg /usr/local/nagios/etc/nrpe.cfg.ori
    sed -i '199,203d' /usr/local/nagios/etc/nrpe.cfg

    添加变量

    echo "command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,6 -c 30,25,20">>/usr/local/nagios/etc/nrpe.cfg
    echo "command[check_mem]=/usr/local/nagios/libexec/check_memory.pl -w 6% -c 3%">>/usr/local/nagios/etc/nrpe.cfg
    echo "command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 8% -p /">>/usr/local/nagios/etc/nrpe.cfg
    echo "command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%">>/usr/local/nagios/etc/nrpe.cfg
    echo "command[check_iostat]=/usr/local/nagios/libexec/check_iostat -w 6 -c 10">>/usr/local/nagios/etc/nrpe.cfg

    10)启动客户端

    pkill nrpe
    sleep 2
    /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
    echo  "#nagios nrpe process cmd by oldboy 2012-6-7" >> /etc/rc.local
    echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d">>/etc/rc.local
    netstat -lnt|grep 5666 && echo "nagios client is ok"     

     5.Nagios服务端目录及配置文件介绍及安装初步   

     bin/sbin : nagios中存在的命令

     etc :配置文件

     include:包含文件

     share:web的程序,站点目录

      var:nagios的数据,日志都在这里面

      libexec:一些插件文件

     nagios.cfg是主配置文件;其中resource.cfg、objects下文件、cgi.cfg都是包含在主配置文件中的

     nrpe.cfg如果服务器不当成客户端,没必要配置

      htpasswd.users:web的密码验证文件

       

       localhost.cfg对本机的监控(当成模板)、switch.cfg、windows.cfg、printer.cfg(我们监控服务器,不用这个)

     配置主配置文件 nagios.cfg 

     [root@djw etc]# vi nagios.cfg +34

    1) vi /usr/local/nagios/etc/nagios.cfg增加如下内容
    cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
    cfg_file=/usr/local/nagios/etc/objects/service.cfg
     
    2)生成hosts.cfg
    head -50 localhost.cfg >hosts.cfg
    chown nagios.nagios /usr/local/nagios/etc/objects/hosts.cfg 
    touch services.cfg
    chown nagios.nagios /usr/local/nagios/etc/objects/services.cfg
  • 相关阅读:
    驯服 Tiger: 并发集合 超越 Map、Collection、List 和 Set
    模块化Java:声明式模块化
    模块化Java:静态模块化
    用 Apache Tika 理解信息内容
    Refactoring: Encapsulate Collection
    新型的几乎万能的数据结构CDO
    CDO数据结构基础(1) 转载
    模块化Java简介(转载infoq)
    模块化Java:动态模块化
    责任链模式(C++)
  • 原文地址:https://www.cnblogs.com/dangjingwei/p/10468729.html
Copyright © 2011-2022 走看看