zoukankan      html  css  js  c++  java
  • Nagios安装部署

    Nagios工作原理

    Nagios主要配置文件

    Nagios软件包

    链接:http://pan.baidu.com/s/1skGSBIP 密码:6fwr

    Nagios服务端环境及依赖

    cat /etc/redhat-release
    CentOS release 6.6 (Final)
    uname -rm
    2.6.32-504.el6.x86_64 x86_64
    echo "export LC_ALL=C" >> /etc/profile  # 恢复默认语言环境
    tail -1 /etc/profile
    source /etc/profile
    echo $LC_ALL
    yum install gcc glibc glibc-common gd-devel mysql-server httpd php php-gd -y
    rpm -qa mysql httpd php
    useradd nagios
    groupadd nagcmd
    usermod -a -G nagcmd nagios
    usermod -a -G nagcmd apache
    groups nagios
    groups apache
    

     Nagios服务端主程序安装

    mkdir -p /server/tools/nagios
    cd /server/tools/nagios
    rz -y   #上传软件包
    tree /server/tools/nagios
    /etc/init.d/httpd start
    lsof -i :80
    tar xf 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
    cd ..
    htpasswd -bc /usr/local/nagios/etc/htpasswd.users peter 123456
    cat /usr/local/nagios/etc/htpasswd.users
    /etc/init.d/httpd reload
    sed -i 's#nagios@localhost#asdftttt@163.com#g' /usr/local/nagios/etc/objects/contacts.cfg
    sed -n '35p' /usr/local/nagios/etc/objects/contacts.cfg
    echo -e "set from=asdftttt@163.com
    set smtp=smtp.163.com smtp-auth-user=asdftttt smtp-auth-password=xxxxx smtp-auto=login" >> /etc/mail.rc
    echo "#time sync by peter at 2017-9-14" >> /var/spool/cron/root      #时间同步
    echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1" >> /var/spool/cron/root
    crontab -l
    /etc/init.d/httpd restart
    chkconfig httpd on
    netstat -nutlp | grep httpd
    #网页
    172.16.1.53/nagios
    

     Nagios插件包安装

    yum install perl-devel perl-CPAN openssl-devel -y
    cd /server/tools/nagios
    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-modules --with-mysql
    make
    make install
    cd ..
    ls /usr/local/nagios/libexec/ | wc -l
    59 #也可能61
    

    Nrpe软件安装

    tar xf nrpe-2.12.tar.gz
    cd nrpe-2.12
    ./configure
    make all
    make install-plugin
    make install-daemon
    make install-daemon-config
    cd ..
    ls /usr/local/nagios/libexec/check_nrpe  #服务端安装nrpe是为了获得check_nrpe插件
    

    Nagios服务端配置和启动

    chkconfig nagios on
    chkconfig --list nagios
    /etc/init.d/nagios checkconfig
    Running configuration check... OK.
    /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
    vim /etc/init.d/nagios +183
    $NagiosBin -v $NagiosCfgFile
    /etc/init.d/nagios checkconfig
    /etc/init.d/nagios start
    Starting nagios: done.
    ps -ef | grep nagios
    nagios    47748      1  0 15:22 ?        00:00:00 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
    

     Nagios客户端环境准备(web01 web02)

    yum install gcc glibc glibc-common mysql-server perl-devel perl-CPAN openssl-devel -y
    mkdir -p /server/tools/nagios
    cd /server/tools/nagios
    rz -y
    useradd nagios -M -s /sbin/nologin
    

     Nagios插件包安装

    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-modules --with-mysql
    make
    make install
    cd ..
    ls /usr/local/nagios/libexec/ | wc -l
    

    Nrpe服务安装

    tar xf nrpe-2.12.tar.gz
    cd nrpe-2.12
    ./configure
    make all
    make install-plugin
    make install-daemon
    make install-daemon-config
    cd ..
    

     安装check_iostat插件依赖包

    for n in Params-Validate-0.91 Class-Accessor-0.31 Config-Tiny-2.12 Math-Calc-Units-1.07 Regexp-Common-2010010201 Nagios-Plugin-0.34
    do 
    tar xf ${n}.tar.gz
    cd $n
    perl Makefile.PL
    make 
    make install 
    cd ..
    done
    

     配置监控内存、磁盘I/O脚本插件

    yum install -y sysstat dos2unix 
    cp /server/tools/nagios/check_memory.pl /usr/local/nagios/libexec
    cp /server/tools/nagios/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
    

    客户端Nrpe服务配置

    cd /usr/local/nagios/etc
    sed -i 's#allowed_hosts=127.0.0.1#allowed_hosts=127.0.0.1,172.16.1.53#g' nrpe.cfg
    vim nrpe.cfg +199
    #删掉原来的
    command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
    command[check_mem]=/usr/local/nagios/libexec/check_memory.pl -w 10% -c 3%
    command[check_disk]=/usr/local/nagios/libexec/check_disk -w 15% -c 7% -p /
    command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
    command[check_iostat]=/usr/local/nagios/libexec/check_iostat -w 6 -c 10
    
    /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
    netstat -nutlp | grep nrpe
    tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      39042/nrpe         
    
    #重启nrpe
    pkill nrpe
    /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
    
    #加入开机启动
    echo "#nagios nrpe process cmd by peter 2017-08-31" >> /etc/rc.local
    echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d" >> /etc/rc.local
    tail -2 /etc/rc.local
    

    Nagios服务端配置文件设置

    vim /usr/local/nagios/etc/nagios.cfg +34
    
    cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
    cfg_file=/usr/local/nagios/etc/objects/services.cfg
    cfg_dir=/usr/local/nagios/etc/objects/services             #该目录下只要以.cfg结尾都会被加载
    # Definitions for monitoring the local (Linux) host
    #cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
    
    cd /usr/local/nagios/etc/objects/
    head -51 localhost.cfg > hosts.cfg
    chown nagios.nagios /usr/local/nagios/etc/objects/hosts.cfg
    touch services.cfg
    chown nagios.nagios services.cfg
    mkdir services
    chown -R nagios.nagios services
    
    vim hosts.cfg
    
    # Define a host for the local machine
    
    define host{
            use                     linux-server            ; Name of host template to use
                                                            ; This host definition will inherit all variables that are defined
                                                            ; in (or inherited by) the linux-server host template definition.
            host_name               13-web01
            alias                   13-web01
            address                 172.16.1.13
            }
    
    define host{
            use                     linux-server            ; Name of host template to use
                                                            ; This host definition will inherit all variables that are defined
                                                            ; in (or inherited by) the linux-server host template definition.
            host_name               14-web02
            alias                   14-web02
            address                 172.16.1.14
            }
    
    
    
    # Define an optional hostgroup for Linux machines
    
    define hostgroup{
            hostgroup_name  linux-servers ; The name of the hostgroup
            alias           Linux Servers ; Long name of the group
            members         13-web01,14-web02     ; Comma separated list of hosts that belong to this group
            }
    
    vim services.cfg
    
    define service {
            use                     generic-service
            host_name               13-web01,14-web02
            service_description     Disk Partition
            check_command           check_nrpe!check_disk
    }
    define service {
            use                     generic-service
            host_name               13-web01,14-web02
            service_description     Swap Usage
            check_command           check_nrpe!check_swap
    }
    define service {
            use                     generic-service
            host_name               13-web01,14-web02
            service_description     Mem Usage
            check_command           check_nrpe!check_mem
    }
    define service {
            use                     generic-service
            host_name               13-web01,14-web02
            service_description     Current Load
            check_command           check_nrpe!check_load
    }
    define service {
            use                     generic-service
            host_name               13-web01,14-web02
            service_description     Disk IOstat
            check_command           check_nrpe!check_iostat
    }
    define service {
            use                     generic-service
            host_name               13-web01,14-web02
            service_description     PING
            check_command           check_ping!100.0,20%!500.0,60%
    }
    
    
    vim commands.cfg
    
    define command{
            command_name    check_nrpe
            command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
            }
    
    /etc/init.d/nagios checkconfig
    /etc/init.d/nagios start
    /etc/init.d/nagios reload
    
    cd /usr/local/nagios/etc
    sed -i 's#nagiosadmin#peter#g' cgi.cfg
    grep "^authorized_for" cgi.cfg 
    /etc/init.d/nagios reload
    
    #监控URL
    vim objects/services.cfg
    
    define service {
            use                     generic-service
            host_name               13-web01
            service_description     blog_url
            check_command           check_http!-H 172.16.1.13
    }
    define service {
            use                     generic-service
            host_name               14-web02
            service_description     blog_url
            check_command           check_http!-H 172.16.1.14
    }
    
    /etc/init.d/nagios checkconfig
    /etc/init.d/nagios reload
    
    #监控TCP端口
    vim objects/services.cfg
    
    define service {
            use                     generic-service
            host_name               13-web01,14-web02
            service_description     http_80
            check_command           check_tcp!80
    }
    define service {
            use                     generic-service
            host_name               13-web01,14-web02
            service_description     ssh_22
            check_command           check_tcp!22
    }
    
    /etc/init.d/nagios checkconfig
    /etc/init.d/nagios reload
    

    Nagios配置出图

    yum install cairo pango zlib-devel freetype-devel  gd-devel libart_lgpl-devel rrdtool-devel perl-Time-HiRes -y
    rpm -qa cairo pango zlib zlib-devel freetype freetype-devel gd gd-devel libart_lgpl libart_lgpl-devel rrdtool rrdtool-devel  perl-Time-HiRes
    cd /server/tools/nagios/
    tar xf pnp-0.4.14.tar.gz
    cd pnp-0.4.14
    ./configure --with-rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata/
    make all
    make install
    make install-config
    make install-init
    ll /usr/local/nagios/libexec/ | grep process
    
    vim /usr/local/nagios/etc/nagios.cfg +835
    
    process_performance_data=1
    ...
    host_perfdata_command=process-host-perfdata
    service_perfdata_command=process-service-perfdata
    
    vim /usr/local/nagios/etc/objects/commands.cfg +227
    
    # 'process-host-perfdata' command definition
    define command{
            command_name    process-host-perfdata
            command_line    /usr/local/nagios/libexec/process_perfdata.pl
            }
    
    # 'process-service-perfdata' command definition
    define command{
            command_name    process-service-perfdata
            command_line    /usr/local/nagios/libexec/process_perfdata.pl
            }
    
    /etc/init.d/nagios checkconfig
    /etc/init.d/nagios reload
    
    #网页
    172.16.1.53/nagios/pnp
    
    vim /usr/local/nagios/etc/objects/hosts.cfg
    
    # Define a host for the local machine
    
    define host{
            use                     linux-server            ; Name of host template to use
                                                            ; This host definition will inherit all variables that are defined
                                                            ; in (or inherited by) the linux-server host template definition.
            host_name               13-web01
            alias                   13-web01
            address                 172.16.1.13
            process_perf_data       1
            }
    
    define host{
            use                     linux-server            ; Name of host template to use
                                                            ; This host definition will inherit all variables that are defined
                                                            ; in (or inherited by) the linux-server host template definition.
            host_name               14-web02
            alias                   14-web02
            address                 172.16.1.14
            process_perf_data       1
            }
    
    #service.cfg中每个服务下也要添加,但generic-service模板中已经定义好了
    
    /etc/init.d/nagios checkconfig
    /etc/init.d/nagios reload
    
    #网页
    172.16.1.53/nagios/pnp
    

     

    整合PNP URL到Nagios Web界面

    vim objects/hosts.cfg
    
    # Define a host for the local machine
    
    define host{
            use                     linux-server            ; Name of host template to use
                                                            ; This host definition will inherit all variables that are defined
                                                            ; in (or inherited by) the linux-server host template definition.
            host_name               13-web01
            alias                   13-web01
            address                 172.16.1.13
            process_perf_data       1
            action_url              /nagios/pnp/index.php?host=$HOSTNAME$
            }
    
    define host{
            use                     linux-server            ; Name of host template to use
                                                            ; This host definition will inherit all variables that are defined
                                                            ; in (or inherited by) the linux-server host template definition.
            host_name               14-web02
            alias                   14-web02
            address                 172.16.1.14
            process_perf_data       1
            action_url              /nagios/pnp/index.php?host=$HOSTNAME$
            }
    
    vim objects/templates.cfg
    #直接配置services.cfg中使用的模板文件
    define service{
            name                            generic-service         ; The 'name' of this service template
            active_checks_enabled           1                       ; Active service checks are enabled
            passive_checks_enabled          1                       ; Passive service checks are enabled/accepted
            parallelize_check               1                       ; Active service checks should be parallelized (disabling this can lead to major performance problems)
            obsess_over_service             1                       ; We should obsess over this service (if necessary)
            check_freshness                 0                       ; Default is to NOT check service 'freshness'
            notifications_enabled           1                       ; Service notifications are enabled
            event_handler_enabled           1                       ; Service event handler is enabled
            flap_detection_enabled          1                       ; Flap detection is enabled
            failure_prediction_enabled      1                       ; Failure prediction is enabled
            process_perf_data               1                       ; Process performance data
            retain_status_information       1                       ; Retain status information across program restarts
            retain_nonstatus_information    1                       ; Retain non-status information across program restarts
            is_volatile                     0                       ; The service is not volatile
            check_period                    24x7                    ; The service can be checked at any time of the day
            max_check_attempts              3                       ; Re-check the service up to 3 times in order to determine its final (hard) state
            normal_check_interval           10                      ; Check the service every 10 minutes under normal conditions
            retry_check_interval            2                       ; Re-check the service every two minutes until a hard state can be determined
            contact_groups                  admins                  ; Notifications get sent out to everyone in the 'admins' group
            notification_options            w,u,c,r                 ; Send notifications about warning, unknown, critical, and recovery events
            notification_interval           60                      ; Re-notify about service problems every hour
            notification_period             24x7                    ; Notifications can be sent out at any time
             register                        0                      ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
            action_url                      /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
            }
    
    /etc/init.d/nagios checkconfig
    /etc/init.d/nagios reload
    
    #网页
    172.16.1.53/nagios
    
    #服务状态数据存放目录,注意备份
    tree /usr/local/nagios/share/perfdata
    /usr/local/nagios/share/perfdata
    |-- 13-web01
    |   |-- Current_Load.rrd
    |   |-- Current_Load.xml
    |   |-- Disk_IOstat.rrd
    |   |-- Disk_IOstat.xml
    |   |-- Disk_Partition.rrd
    |   |-- Disk_Partition.xml
    |   |-- Mem_Usage.rrd
    |   |-- Mem_Usage.xml
    |   |-- PING.rrd
    |   |-- PING.xml
    |   |-- Swap_Usage.rrd
    |   |-- Swap_Usage.xml
    |   |-- blog_url.rrd
    |   |-- blog_url.xml
    |   |-- http_80.rrd
    |   |-- http_80.xml
    |   |-- ssh_22.rrd
    |   `-- ssh_22.xml
    `-- 14-web02
        |-- Current_Load.rrd
        |-- Current_Load.xml
        |-- Disk_IOstat.rrd
        |-- Disk_IOstat.xml
        |-- Disk_Partition.rrd
        |-- Disk_Partition.xml
        |-- Mem_Usage.rrd
        |-- Mem_Usage.xml
        |-- PING.rrd
        |-- PING.xml
        |-- Swap_Usage.rrd
        |-- Swap_Usage.xml
        |-- blog_url.rrd
        |-- blog_url.xml
        |-- http_80.rrd
        |-- http_80.xml
        |-- ssh_22.rrd
        `-- ssh_22.xml
    

     

    Nagios故障报警(邮件)

    vim objects/contacts.cfg
            email                           asdftttt@163.com    
     
    vim objects/commands.cfg
    #优化一下报警信息
    # 'notify-host-by-email' command definition
    define command{
            command_name    notify-host-by-email
            command_line    /usr/bin/printf "%b" "***** Nagios *****
    
    Notification Type: $NOTIFICATIONTYPE$
    Host: $HOSTNAME$
    State: $HOSTSTATE$
    Address: $HOSTADDRESS$
    Info: $HOSTOUTPUT$
    
    Date/Time: $LONGDATETIME$
    " | /bin/mail -s "Host $HOSTSTATE$ alert for $HOSTNAME$!" $CONTACTEMAIL$
            }
    
    # 'notify-service-by-email' command definition
    define command{
            command_name    notify-service-by-email
            command_line    /usr/bin/printf "%b" "***** Nagios *****
    
    Notification Type: $NOTIFICATIONTYPE$
    
    Service: $SERVICEDESC$
    Host: $HOSTALIAS$
    Address: $HOSTADDRESS$
    State: $SERVICESTATE$
    
    Date/Time: $LONGDATETIME$
    
    Additional Info:
    
    $SERVICEOUTPUT$
    " | /bin/mail -s " $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ " $CONTACTEMAIL$
            }
    
      
    

     Shell开发Nagios插件

    #Nagios为插件提供两个接口:退出状态码和控制台打印的第一行信息
    #主动模式:编写一个探测url的插件
    cd /usr/local/nagios/libexec
    vim check_url.sh
    #!/bin/bash
    PROGNAME=`basename $0`
    PROGPATH=`dirname $0`
    usage() {
         echo "Usage: /bin/sh $PROGNAME url"
         exit 1
    }
    [ $# -ne 1 ]&&usage
    . $PROGPATH/utils.sh
    if wget -T 20 --spider $1 > /dev/null 2>&1;then
         echo 'url $1 OK'
         exit $STATE_OK
    else
         echo 'url $1 NO'
         exit $STATE_CRITICAL
    fi
    
    #[root@mage-monitor-01 libexec]# cat ./utils.sh
    #! /bin/sh
    #
    #STATE_OK=0
    #STATE_WARNING=1
    #STATE_CRITICAL=2
    #STATE_UNKNOWN=3
    #STATE_DEPENDENT=4
    
    sh /usr/local/nagios/libexec/check_url 172.16.1.14
    chmod +x check_url.sh
    cd  /usr/local/nagios/etc/objects/
    
    vim commands.cfg
    
    #'check_url' command defined by peter
    define command{
            command_name    check_url
            command_line    $USER1$/check_url.sh 172.16.1.14
    }
    
    vim services.cfg
    
    define service {
            use                     generic-service
            host_name               14-web02
            service_description     check_url
            check_command           check_url
    } E
    
    /etc/init.d/nagios checkconfig
    /etc/init.d/nagios reload
    
    #被动模式:监控/etc/passwd文件是否变化
    #web02
    md5sum /etc/passwd > /opt/ps.md5
    cat /opt/ps.md5
    70fe6e84988c7298fe6c5f108e02df39  /etc/passwd
    cd /usr/local/nagios/libexec/
    vim check_passwd.sh
    
    #!/bin/bash
    OriMd5="70fe6e84988c7298fe6c5f108e02df39"
    CurrMd5=`md5sum /etc/passwd|cut -c 1-32`
    if [ "$OriMd5" == "$CurrMd5" ];then
         echo "/etc/passwd:ok"
         exit 0
    else
         echo "/etc/passwd:failed"
         exit 2
    fi
    sh check_passwd.sh
    chmod +x check_passwd.sh
    
    cd /usr/local/nagios/etc/
    vim nrpe.cfg
    
    command[check_passwd]=/usr/local/nagios/libexec/check_passwd.sh
    
    netstat -nutlp | grep nrpe
    pkill nrpe
    /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
    netstat -nutlp | grep nrpe
    
    #nagios服务端
    
    vim services.cfg
    
    define service {
            use                     generic-service
            host_name               14-web02
            service_description     check_passwd
            check_command           check_nrpe!check_passwd
    }
    
    /etc/init.d/nagios checkconfig
    /etc/init.d/nagios reload
    

     

  • 相关阅读:
    Femap和NX Nastran简介 / Introduction of Femap and NX Nastran
    WINDOWS蓝屏错误对照表[z]
    Matlab 样条工具箱(Spline ToolBox)[z]
    NumPy 简介
    NX Nastran[z]
    UG后处理实例讲解
    NumPy for Matlab Users【z】
    PyMat An interface between Python and MATLAB
    ANSYS Workbench Products Installation and Configuration Guide
    NumPy使用手记[z]
  • 原文地址:https://www.cnblogs.com/Peter2014/p/7521465.html
Copyright © 2011-2022 走看看