• nagios的原理及server端跟client端安装配置全部过程


    nagios的主动模式:和client的nrpe daemon无关了,就是利用服务端本地插件直接获取的信息就叫主动模式

    nagios的被动模式 : 主程序通过check_nrpe插件,和客户端nrpe进程通信,调用客户端本地插件获取数据

    如何选择主动模式和被动模式

    1 .  对于客户端的本地资源性能等的监控,一般用被动模式。例如: 对负载,内存,硬盘,虚拟内存,磁盘IO,温度,风扇等的监控,当然也可以用另一个软件来是实现就是smnp。不过没有用过snmp,这里先提及吧

    2 .  对于WEB服务,数据库服务这种对外提供服务的监控,一般用主动模式。 例如:   http,ssh,mysql,rsync,ftp等的服务

    3 .  主动模式和被动模式是相对的,并且是可以互相转换的,也就是说主动模式可以改成被动模式

    4 .  如果要查看nagios的报错信息的话,就查看/usr/local/nagios/var/

     

                                                                 nagios的服务端的安装   主机IP  192.168.0.11

      
    yum clean all ;yum repolist
      sed -i 's/enforcing/disabled/g' /etc/selinux/config ; nl /etc/selinux/config
      setenforce 0
      service iptables stop
      chkconfig iptables off
    id apache || yum -y install httpd
      useradd  -m nagios -s /sbin/nologin
      groupadd nagcmd
      usermod -a -G nagcmd nagios
      usermod -a -G nagcmd apache
      yum -y install gcc glibc glibc-comon gd  gd-devel httpd php php-gd mysql*
      mkdir /home/fangyy;cd  /home/fangyy
      rz
      oldboy_training_nagios_soft.zip
      unzip oldboy_training_nagios_soft.zip
      tar -xf nagios-3.5.1.tar.gz
      cd  nagios
      ./configure --with-command-group=nagcmd
      make all
      make install
      make install-init
      make install-commandmode
      make install-config
      make install-webconf
      htpasswd -cb /usr/local/nagios/etc/htpasswd.users yonghu mima
      yum -y install perl perl-devel
      ls
      cd ..

      tar -xf nagios-plugins-1.4.16.tar.gz
      cd nagios-plugins-1.4.16
      ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-perl-module

      make && make install
      cd ..
      ls /usr/local/nagios/libexec/ | wc -l
      tar -xf nrpe-2.12.tar.gz
      cd nrpe-2.12
      ls
      ./configure
      make all
      make install-plugin
      make install-daemon
      make install-daemon-config
      cd ..
      service httpd start
      lsof -i :80
      /etc/init.d/nagios restart
    Fireox http://192.168.0.12/nagios
     输入这条命令的用户名  密码

    htpasswd -cb/usr/local/nagios/etc/htpasswd.users    yonghu    123456
                                    用户名     密码
    进去之后点击host,如果出现下面这样的字样就是我没有权限查看

    Last Check Sort by last check time (ascending)Sort by last check time (descending)

    Duration Sort by state duration (ascending)Sort by state duration time (descending)

    Status Information

    It appears as though you do not have permission to view information for any of the hosts you requested...

    If you believe this is an error, check the HTTP server authentication requirements for accessing this CGI
    and check the authorization options in your CGI configuration file.
    那么执行这条命令并重启apache服务
    sed -i 's/nagiosadmin/yonghu/g' /usr/local/nagios/etc/cgi.cfg  然后ctrl +F5刷新浏览器 出现下面的画面就是正常的页面
    nagios被动模式服务端的配置文件


    这是/usr/local/nagios/etc/nagios.cfg的配置
    /usr/local/nagios/etc/nagios.cfg的主配置文件,就相当于nginx.conf是一样的

    第一步
    [root@nagios-server ~]#  grep -v '#' /usr/local/nagios/etc/nagios.cfg > jj
    [root@nagios-server ~]# sed -i '/^$/d' jj
    [root@nagios-server ~]# cat jj 这是所有的有效配置,经过筛选之后,其中要包含的文件有cfg_file是包含文件就相当于nginx的include,cfg_dir是包含目录的意思,注意权限问题

    log_file=/usr/local/nagios/var/nagios.log
    cfg_file=/usr/local/nagios/etc/objects/commands.cfg                 定义命令配置文件,被动模式只要添加check_nrpe ...        
    cfg_file=/usr/local/nagios/etc/objects/contacts.cfg          定义联系人
    cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
    cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
    cfg_file=/usr/local/nagios/etc/objects/services.cfg
    cfg_file=/usr/local/nagios/etc/objects/templates.cfg        模板

    #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg      默认的配置文件这行是没有注释的,所以有标注颜色的都是修改过的
    cfg_dir=/usr/local/nagios/etc/services      默认也是没有的,只想想加个目录,以便更好地管理业务,不同的业务可以用不同的目录名字   下面的这些参数以后有空在慢慢研究
    object_cache_file=/usr/local/nagios/var/objects.cache
    precached_object_file=/usr/local/nagios/var/objects.precache
    resource_file=/usr/local/nagios/etc/resource.cfg
    status_file=/usr/local/nagios/var/status.dat
    status_update_interval=10
    nagios_user=nagios
    nagios_group=nagios
    check_external_commands=1
    command_check_interval=-1
    command_file=/usr/local/nagios/var/rw/nagios.cmd
    external_command_buffer_slots=4096
    lock_file=/usr/local/nagios/var/nagios.lock
    temp_file=/usr/local/nagios/var/nagios.tmp
    temp_path=/tmp
    event_broker_options=-1
    log_rotation_method=d
    log_archive_path=/usr/local/nagios/var/archives
    use_syslog=1
    log_notifications=1
    log_service_retries=1
    log_host_retries=1
    log_event_handlers=1
    log_initial_states=0
    log_external_commands=1
    log_passive_checks=1
    service_inter_check_delay_method=s
    max_service_check_spread=30
    service_interleave_factor=s
    host_inter_check_delay_method=s
    max_host_check_spread=30
    max_concurrent_checks=0
    check_result_reaper_frequency=10
    max_check_result_reaper_time=30
    check_result_path=/usr/local/nagios/var/spool/checkresults
    max_check_result_file_age=3600
    cached_host_check_horizon=15
    cached_service_check_horizon=15
    enable_predictive_host_dependency_checks=1
    enable_predictive_service_dependency_checks=1
    soft_state_dependencies=0
    auto_reschedule_checks=0
    auto_rescheduling_interval=30
    auto_rescheduling_window=180
    sleep_time=0.25
    service_check_timeout=60
    host_check_timeout=30
    event_handler_timeout=30
    notification_timeout=30
    ocsp_timeout=5
    perfdata_timeout=5
    retain_state_information=1
    state_retention_file=/usr/local/nagios/var/retention.dat
    retention_update_interval=60
    use_retained_program_state=1
    use_retained_scheduling_info=1
    retained_host_attribute_mask=0
    retained_service_attribute_mask=0
    retained_process_host_attribute_mask=0
    retained_process_service_attribute_mask=0
    retained_contact_host_attribute_mask=0
    retained_contact_service_attribute_mask=0
    interval_length=60
    check_for_updates=1
    bare_update_check=0
    use_aggressive_host_checking=0
    execute_service_checks=1
    accept_passive_service_checks=1
    execute_host_checks=1
    accept_passive_host_checks=1
    enable_notifications=1
    enable_event_handlers=1
    process_performance_data=0
    obsess_over_services=0
    obsess_over_hosts=0
    translate_passive_host_checks=0
    passive_host_checks_are_soft=0
    check_for_orphaned_services=1
    check_for_orphaned_hosts=1
    check_service_freshness=1
    service_freshness_check_interval=60
    service_check_timeout_state=c
    check_host_freshness=0
    host_freshness_check_interval=60
    additional_freshness_latency=15
    enable_flap_detection=1
    low_service_flap_threshold=5.0
    high_service_flap_threshold=20.0
    low_host_flap_threshold=5.0
    high_host_flap_threshold=20.0
    date_format=us
    p1_file=/usr/local/nagios/bin/p1.pl
    enable_embedded_perl=1
    use_embedded_perl_implicitly=1
    illegal_object_name_chars=`~!$%^&*|'"<>?,()=
    illegal_macro_output_chars=`~$&|'"<>
    use_regexp_matching=0
    use_true_regexp_matching=0
    admin_email=nagios@localhost
    admin_pager=pagenagios@localhost
    daemon_dumps_core=0
    use_large_installation_tweaks=0
    enable_environment_macros=1
    debug_level=0
    debug_verbosity=1
    debug_file=/usr/local/nagios/var/nagios.debug
    max_debug_file_size=1000000

    既然在配置文件里面包含了文件,又包含了目录,所以至少首先得创建文件跟目录吧,这里把/usr/local/nagios/etc/object/localhost.cfg来当模板了,所以hosts.cfg的文件要借用它的前51行

    [root@nagios-server ~]#  mkdir  /usr/local/nagios/etc/services

    [root@nagios-server ~]#  head -51  /usr/local/nagios/etc/object/localhost.cfg > /usr/local/nagios/etc/objects/hosts.cfg     监控主机的配置文件

    [root@nagios-server ~]#  chown nagios.nagios /usr/local/nagios/etc/objects/hosts.cfg

    [root@nagios-server ~]#  chown -R nagios.nagios  /usr/local/nagios/etc/services

    [root@nagios-server ~]#  sed -i '/^$/d' /etc/init.d/nagios      我这是为了方便查看,在实际中这个操作是不用做的

    下面是修改的nagios启动文件

    [root@lvs2 ~]# cat /etc/init.d/nagios 
    #!/bin/sh

    # chkconfig: 345 99 01
    # description: Nagios network monitor
    #
    # File : nagios
    #
    # Author : Jorge Sanchez Aymar (jsanchez@lanchile.cl)

    # Changelog :
    #
    # 1999-07-09 Karl DeBisschop <kdebisschop@infoplease.com>
    # - setup for autoconf
    # - add reload function
    # 1999-08-06 Ethan Galstad <egalstad@nagios.org>
    # - Added configuration info for use with RedHat's chkconfig tool
    # per Fran Boon's suggestion
    # 1999-08-13 Jim Popovitch <jimpop@rocketship.com>
    # - added variable for nagios/var directory
    # - cd into nagios/var directory before creating tmp files on startup
    # 1999-08-16 Ethan Galstad <egalstad@nagios.org>
    # - Added test for rc.d directory as suggested by Karl DeBisschop
    # 2000-07-23 Karl DeBisschop <kdebisschop@users.sourceforge.net>
    # - Clean out redhat macros and other dependencies
    # 2003-01-11 Ethan Galstad <egalstad@nagios.org>
    # - Updated su syntax (Gary Miller)
    #
    # Description: Starts and stops the Nagios monitor
    # used to provide network services status.
    #
    # Load any extra environment variables for Nagios and its plugins
    if test -f /etc/sysconfig/nagios; then
    . /etc/sysconfig/nagios
    fi
    status_nagios ()
    {
    if test -x $NagiosCGI/daemonchk.cgi; then
    if $NagiosCGI/daemonchk.cgi -l $NagiosRunFile; then
    return 0
    else
    return 1
    fi
    else
    if ps -p $NagiosPID > /dev/null 2>&1; then
    return 0
    else
    return 1
    fi
    fi
    return 1
    }
    printstatus_nagios()
    {
    if status_nagios $1 $2; then
    echo "nagios (pid $NagiosPID) is running..."
    else
    echo "nagios is not running"
    fi
    }
    killproc_nagios ()
    {
    kill $2 $NagiosPID
    }
    pid_nagios ()
    {
    if test ! -f $NagiosRunFile; then
    echo "No lock file found in $NagiosRunFile"
    exit 1
    fi
    NagiosPID=`head -n 1 $NagiosRunFile`
    }
    # Source function library
    # Solaris doesn't have an rc.d directory, so do a test first
    if [ -f /etc/rc.d/init.d/functions ]; then
    . /etc/rc.d/init.d/functions
    elif [ -f /etc/init.d/functions ]; then
    . /etc/init.d/functions
    fi
    prefix=/usr/local/nagios
    exec_prefix=${prefix}
    NagiosBin=${exec_prefix}/bin/nagios
    NagiosCfgFile=${prefix}/etc/nagios.cfg
    NagiosStatusFile=${prefix}/var/status.dat
    NagiosRetentionFile=${prefix}/var/retention.dat
    NagiosCommandFile=${prefix}/var/rw/nagios.cmd
    NagiosVarDir=${prefix}/var
    NagiosRunFile=${prefix}/var/nagios.lock
    NagiosLockDir=/var/lock/subsys
    NagiosLockFile=nagios
    NagiosCGIDir=${exec_prefix}/sbin
    NagiosUser=nagios
    NagiosGroup=nagios

    # Check that nagios exists.
    if [ ! -f $NagiosBin ]; then
    echo "Executable file $NagiosBin not found. Exiting."
    exit 1
    fi
    # Check that nagios.cfg exists.
    if [ ! -f $NagiosCfgFile ]; then
    echo "Configuration file $NagiosCfgFile not found. Exiting."
    exit 1
    fi

    # See how we were called.
    case "$1" in
    start)
    echo -n "Starting nagios:"
    $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
    if [ $? -eq 0 ]; then
    su - $NagiosUser -c "touch $NagiosVarDir/nagios.log $NagiosRetentionFile"
    rm -f $NagiosCommandFile
    touch $NagiosRunFile
    chown $NagiosUser:$NagiosGroup $NagiosRunFile
    $NagiosBin -d $NagiosCfgFile
    if [ -d $NagiosLockDir ]; then touch $NagiosLockDir/$NagiosLockFile; fi
    echo " done."
    exit 0
    else
    echo "CONFIG ERROR! Start aborted. Check your Nagios configuration."
    exit 1
    fi
    ;;
    stop)
    echo -n "Stopping nagios: "
    pid_nagios
    killproc_nagios nagios
    # now we have to wait for nagios to exit and remove its
    # own NagiosRunFile, otherwise a following "start" could
    # happen, and then the exiting nagios will remove the
    # new NagiosRunFile, allowing multiple nagios daemons
    # to (sooner or later) run - John Sellens
    #echo -n 'Waiting for nagios to exit .'
    for i in 1 2 3 4 5 6 7 8 9 10 ; do
    if status_nagios > /dev/null; then
    echo -n '.'
    sleep 1
    else
    break
    fi
    done
    if status_nagios > /dev/null; then
    echo ''
    echo 'Warning - nagios did not exit in a timely manner'
    else
    echo 'done.'
    fi
    rm -f $NagiosStatusFile $NagiosRunFile $NagiosLockDir/$NagiosLockFile $NagiosCommandFile
    ;;
    status)
    pid_nagios
    printstatus_nagios nagios
    ;;
    checkconfig)
    printf "Running configuration check..."
    $NagiosBin -v $NagiosCfgFile      修改这个地方就是为了方便可以执行这个命令   /etc/init.d/nagios checkconfig  检查语法
    if [ $? -eq 0 ]; then
    echo " OK."
    else
    echo " CONFIG ERROR! Check your Nagios configuration."
    exit 1
    fi
    ;;
    restart)
    printf "Running configuration check..."
    $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
    if [ $? -eq 0 ]; then
    echo "done."
    $0 stop
    $0 start
    else
    echo " CONFIG ERROR! Restart aborted. Check your Nagios configuration."
    exit 1
    fi
    ;;
    reload|force-reload)
    printf "Running configuration check..."
    $NagiosBin -v $NagiosCfgFile > /dev/null 2>&1;
    if [ $? -eq 0 ]; then
    echo "done."
    if test ! -f $NagiosRunFile; then
    $0 start
    else
    pid_nagios
    if status_nagios > /dev/null; then
    printf "Reloading nagios configuration..."
    killproc_nagios nagios -HUP
    echo "done"
    else
    $0 stop
    $0 start
    fi
    fi
    else
    echo " CONFIG ERROR! Reload aborted. Check your Nagios configuration."
    exit 1
    fi
    ;;
    *)
    echo "Usage: nagios {start|stop|restart|reload|force-reload|status|checkconfig}"
    exit 1
    ;;
    esac

    # End of this script

    [root@nagios-server ~]#  vim  /usr/local/nagios/etc/objects/commands.cfg 把下面这几行加到配置文件里面去,被动模式就是只加这几行,因为被动模式都是用check_nrpe去跟客户端的nrpe来通信的

    define command{    所有的这些都是为了service.cfg这个配置文件准备的,除了hosts.cfg文件是要用来监控主机的
    command_name check_nrpe
    command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
    }

    [root@nagios-server ~]#   cat /usr/local/nagios/etc/objects/hosts.cfg  监控主机的配置文件     下面的内容算是hosts.cfg的内容了

    里面的几个重要字段

    define host {            监控多个主机就弄多个define

    use    linux-server模板

    host_name  lvs1监控的主机名字

    alias   lvs1监控的主机别名  一般跟host_name是一样的

    address   192.168.0.10监控的IP地址

    check_command check-host-alive       下面这些是模板上的参数,但是要写在这里这里的优先级就比模板模板的优先级要高,但是一般用模板么。方便。

    max_check_attempts 3

    normal_check_interval 2

    retry_check_interval 2

    check_period 24x7

    notification_interval 300

    notification_period 24x7

    notification_options d,u,r

    contact_groups admins

    process_perf_data 1

    }

    define hostgroup{

    hostgroup_name linux-servers ; The name of the hostgroup 最好默认就可以了

    alias Linux Servers ; Long name of the group   这里的字不用管它起什么,最好默认就可以了

    members lvs1,lvs2   要添加主机组,反正要把主机加到主机组就可以了

    }

    service.cfg是定义nagios命令跟系统命令的关系 ,反正就是通过check_nrpe去执行客户端的nrpe.cfg里面command字段定义里面中括号的名字,这个名字就是对应了系统命令

    [root@nagios-server ~]#   cat  /usr/local/nagios/etc/objects/services.cfg

    define service {                被动模式

    use generic-service

    host_name lvs1

    service_description   Disk Iostat

    check_command   check_nrpe!check_iostat!5!11  调用了客户端的nrpe.cfg里面定义的插件  反正就是通过check_nrpe去执行客户端的nrpe.cfg里面command字段定义里面中括号的名字,这个名字就是对应了系统命令

    max_check_attempts 2

    normal_check_interval 4

    retry_check_interval 4

    check_period 24x7

    notification_interval 1440

    notification_period 24x7

    notification_options w,u,c,r

    contact_groups admins

    process_perf_data 1

    }

    define service {

    use generic-service

    host_name lvs2

    service_description Disk Partition

    check_command check_nrpe!check_disk

    max_check_attempts 8

    normal_check_interval 3

    retry_check_interval 2

    check_period 24x7

    notification_interval 360

    notification_period 24x7

    notification_options w,u,c,r

    contact_groups admins

    process_perf_data 1

     }

                                                        nagios-client的安装  192.168.0.1



    yum clean all; yum repolist
    yum -y install gcc glibc glibc-comon mysql*
    mkdir /home/fangyy
    cd /home/fangyy
    rz
    oldboy_training_nagios_soft.zip
    unzip oldboy_training_nagios_soft.zip
    tar -xf 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(是redhat的系统才需要加上这个参数)
    make && make install
    cd ..
    ls /usr/local/nagios/libexec | wc -l
    tar -xf nrpe-2.12.tar.gz
    cd nrpe-2.12
    ls
    ./configure
    make all
    make install-plugin
    make install-daemon
    make install-daemon-config
    cd ..
    tar -xf Params-Validate-0.91.tar.gz
    cd Pa rams-Validate-0.91
    ls
    perl Makefile.PL
    make
    make test
    make install
    cd ..
    tar -xf Class-Accessor-0.31.tar.gz
    cd Class-Accessor-0.31
    perl Makefile.PL
    make && make install
    cd ..
    perl M tar -xf Config-Ti y-2.12.tar.gz
    cd Config-Tiny-2.12
    perl Makefile.PL
    make
    make test
    make install
    cd ..
    tar -xf Math-Calc-Units-1.07.tar.gz
    cd Math-Calc-Units-1.07
    perl Makefile.PL
    make
    make test
    make install
    cd ..
    tar -xf Regexp-Common-2010010201.tar.gz
    cd Regexp-Common-2010010201
    ls
    perl Makefile.PL
    make
    make install
    cd ..
    tar -xf Na s-Plugin-0.34.tar.gz
    cd Nagios-Plugin-0.34
    perl Makefile.PL
    make
    make install
    cd ..
    cp check_memory.pl check_iostat /usr/local/nagios/libexec/
    ll /usr/local/nagios/libexec/check_iostat
    chmod 755 /usr/local/nagios/libexec/check_iostat
    chmod 755 /usr/local/nagios/libexec/check_memory.pl
    rpm -ivh ftp://ftp.pbone.net/mirror/ftp.centos.org/6.9/os/x86_64/Packages/dos2unix-3.1-37.el6.x86_64.rpm
    dos2unix /usr/local/nagios/libexec/check_memory.pl
    dos2unix /usr/local/nagios/libexec/check_iostat
  • 相关阅读:
    理解区块链之前,先上手体验一把数字货币(2018-04-06 陈浩 第6讲)
    约瑟夫·卢宾《以太坊:从底层揭秘区块链应用和机会》2018-04-21
    以太坊智能合约介绍,Solidity介绍
    新浪微博 [异常问题] 414 Request-URL Too Large
    Google自动广告,将广告代码放置在 HTML 中的什么位置?
    囤币一族,被中国市场遗忘的价值币ADA
    基于EOS开发的Dapp大全
    朴素贝叶斯算法,贝叶斯分类算法,贝叶斯定理原理
    区块链3.0 ada Cardano卡尔达诺如何获得一致好评?
    拜占庭将军问题(Byzantine Generals Problem),一个关于分布式系统容错问题故事
  • 原文地址:https://www.cnblogs.com/fyy-hhzzj/p/7995222.html
Copyright © 2020-2023  润新知