• CentOS 6.7 安装配置 nagios-server


    作者博文地址:https://www.cnblogs.com/liu-shuai/

    一、简介
        Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警,第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
        Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。
        Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。

        Nagios 可以监控的功能有:

            监控网络服务(SMTP、POP3、HTTP、PING等);
            监控主机资源(处理器负荷、磁盘利用率等);
            简单地插件设计使得用户可以方便地扩展自己服务的检测方法;
            当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);
            可以定义一些处理程序,使之能够在服务或者主机发生故障时起到预防作用;
            自动的日志滚动功能;
            可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;

        Nagios-plugins

            nagios-plugins是nagios官方提供的一套插件程序,nagios监控主机的功能其实都是通过执行插件程序来实现的。
            nagios本身并没有监控的功能,所有的监控是由插件完成的,插件将监控的结果返回给nagios,nagios分析这些结果以web的方式展现给我们,同时提供相应的报警功能。
            所有的这些插件是一些实现特定功能的可执行程序,默认安装的路径是/usr/local/nagios/libexec,可以自己查看。

    二、工作流程

        NRPE

        NRPE是一款用来监控被控端主机资源的工具,没有它,nagios将无法对被控端服务器的主机资源进行监控!
        NRPE总共由两部分组成:

            check_nrpe 插件,位于在监控主机上
            NRPE daemon,运行在远程的linux主机上(通常就是被监控机)

        nagios监控远程linux主机的服务或者资源的一般过程:

            1.nagios 会运行 check_nrpe 这个插件,告诉它要检查什么;
            2.check_nrpe 插件会连接到远程的 NRPE daemon ,所用的方式是SSL;
            3.NRPE daemon 会运行相应的 nagios 插件来执行检查;
            4.NRPE daemon 将检查的结果返回给 check_nrpe 插件,插件将其递交给 nagios 做处理。
            Nagios 根据插件返回来的值,来判断监控对象的状态,并通过 web 显示出来,以供管理员及时发现故障。

            Nagios可以识别4种状态返回信息:
                0    (OK)        表示状态正常/绿色;
                1    (WARNING)    表示出现警告/黄色;
                2    (CRITICAL)    表示出现非常严重的错误/红色;
                3    (UNKNOWN)    表示未知错误/深黄色。

    三、准备环境

        Nagios      版本               主机名               IP                      运行服务        
        Server      CentOS 6.7      CenttOS-01      192.168.0.41      Nginx + Php + Nagios + Nagios-plugins + Nrpe
        Client       CentOS 6.7       CenttOS-02      192.168.0.42      Nagios-plugins + Nrpe

    四、开始安装
        
        软件版本
            nagios-4.1.1.tar.gz
            nagios-plugins-2.0.3.tar.gz
            nrpe-2.15.tar.gz

        Nagios 服务端

        1、创建用户
            [root@CentOS-01 ~]# useradd nagios -s /sbin/nologin    

        2、安装依赖
            [root@CentOS-01 ~]# yum install -y gcc-* glibc glibc-common gd gd-devel openssl-devel httpd-tools unzip
            perl perl-devel perl-Params-Validate perl-Math-Calc-Units perl-Regexp-Common perl-Class-Accessor perl-Config-Tiny
            perl-Nagios-Plugin.noarch perl-FCGI* perl-IO*

        3、编译安装NAGIOS
            [root@CentOS-01 ~]# cd /usr/local/src/nagios/soft/
            [root@CentOS-01 soft]# tar fx nagios-4.1.1.tar.gz
            [root@CentOS-01 soft]# cd nagios-4.1.1
            [root@CentOS-01 nagios-4.1.1]# ./configure --prefix=/usr/local/nagios
            [root@CentOS-01 nagios-4.1.1]# make all
            [root@CentOS-01 nagios-4.1.1]# make install
            [root@CentOS-01 nagios-4.1.1]# make install-init                     ## 安装NAGIOS启动管理脚本
            [root@CentOS-01 nagios-4.1.1]# make install-commandmode            ## NAGIOS 目录赋权
            [root@CentOS-01 nagios-4.1.1]# make install-config                   ## 生成 NAGIOS 所有配置文件
            [root@CentOS-01 nagios]# ls /usr/local/nagios/
            bin  etc  libexec  sbin  share  var

                bin            可执行程序目录
                etc            配置文件目录
                libexec      插件所在目录
                sbin          CGI文件所在目录(执行外部命令所需文件)
                share       web 页面文件目录
                var           日志文件、锁文件目录

        4、安装插件 nagios-plugins
            [root@CentOS-01 ~]# cd /usr/local/src/nagios/soft/
            [root@CentOS-01 soft]# tar fx nagios-plugins-2.0.3.tar.gz
            [root@CentOS-01 soft]# cd nagios-plugins-2.0.3
            [root@CentOS-01 nagios-plugins-2.0.3]# ./configure --prefix=/usr/local/nagios
            [root@CentOS-01 nagios-plugins-2.0.3]# make && make install
            [root@CentOS-01 nagios]# ls /usr/local/nagios/libexec

        5、安装组件 NRPE
            [root@CentOS-01 ~]# cd /usr/local/src/nagios/soft/
            [root@CentOS-01 soft]# tar fx nrpe-2.15.tar.gz
            [root@CentOS-01 soft]# cd nrpe-2.15
            [root@CentOS-01 nrpe-2.15]# ./configure --prefix=/usr/local/nagios
            [root@CentOS-01 nrpe-2.15]# make && make install
            [root@CentOS-01 nrpe-2.15]# ls /usr/local/nagios/libexec/check_nrpe
            /usr/local/nagios/libexec/check_nrpe

        6、配置 NAGIOS WEB 界面
            [root@CentOS-01 nagios]# cd /usr/local/nginx/conf/
            [root@CentOS-01 conf]# mkdir conf.d
            [root@CentOS-01 conf]# cd conf.d/
            [root@CentOS-01 conf.d]# htpasswd -bc /usr/local/nagios/etc/htpasswd.pwd nagios nagios_test
            [root@CentOS-01 conf.d]# cat nagios.conf
            
            server {
                listen              80;
                server_name     nagios.test.com;
                root            /usr/local/nagios/share/;
                index            index.php index.html;
                access_log          logs/nagios_access.log;
                error_log            logs/nagios_error.log;
                
                ## WEB 访问限制
                auth_basic    "Nagios Access";
                auth_basic_user_file    /usr/local/nagios/etc/htpasswd.pwd;

                ## 用户访问限制
                location / {
                    allow *.*.*.*/24;
                    allow *.*.*.0/24;
                    deny all;
                }
                
                location ~ .php$ {
                    fastcgi_pass    127.0.0.1:9000;
                    fastcgi_index    index.php;
                    fastcgi_param  SCRIPT_FILENAME /usr/local/nagios/share$fastcgi_script_name;
                    include            fastcgi_params;
                }
                location /nagios {
                    alias /usr/local/nagios/share/;
                }
                location /cgi-bin/ {
                    alias /usr/local/nagios/sbin/;
                }
                location /stylesheets {
                    gzip    off;
                    alias   /usr/local/nagios/share/stylesheets;
                }
                location /pub {
                    gzip    off;
                    alias   /usr/local/nagios/share/docs;
                }
                location ~ .*.(cgi|pl)?$ {
                    gzip            off;
                    root            /usr/local/nagios/sbin;
                    rewrite            ^/nagios/cgi-bin/(.*).cgi /$1.cgi break;
                    fastcgi_pass    unix:/usr/local/nagios/perl-fcgi/perl-fcgi.sock;
                    fastcgi_param    SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    fastcgi_index    index.cgi;
                    fastcgi_param    REMOTE_USER    $remote_user;
                    fastcgi_param    HTTP_ACCEPT_LANGUAGE    zh_CN;
                    include            fastcgi_params;
                    fastcgi_read_timeout    60;
                }
            }

            [root@CentOS-01 conf.d]# service nginxd restart
            [root@CentOS-01 conf.d]# service php-fpm restart

        7、更改 NAGIOS WEB 页面布局
            [root@CentOS-01 nagios]# cd /usr/local/src/nagios/soft/
            [root@CentOS-01 soft]# cp vautour_style.zip /usr/local/nagios/share/
            [root@CentOS-01 soft]# cp -r perl-fcgi /usr/local/nagios/
            [root@CentOS-01 soft]# cd /usr/local/nagios/
            [root@CentOS-01 nagios]# mkdir ./sbin/cgi-bin && cp ./sbin/*.cgi ./sbin/cgi-bin/
            [root@CentOS-01 nagios]# cd share/
            [root@CentOS-01 share]# unzip vautour_style.zip
            [root@CentOS-01 share]# service nginxd restart

    五、配置监控本机资源
        
        1、NAGIOS 配置文件说明
            [root@CentOS-01 soft]# cd /usr/local/nagios/etc/
            [root@CentOS-01 etc]# ls
            cgi.cfg  htpasswd.pwd  nagios.cfg  objects  resource.cfg

                cgi.cfg              控制CGI访问的配置文件
                nagios.cfg        NAGIOS主配置文件
                resource.cfg     NAGIOS资源配置文件,又称变量文件.在该文件中定义变量,以便于其他配置文件调用。
                objects            模板配置文件目录

            [root@CentOS-01 etc]# ls objects
            commands.cfg  contacts.cfg  localhost.cfg  printer.cfg  switch.cfg  templates.cfg  timeperiods.cfg  windows.cfg

                commands.cfg           命令定义配置文件,其中定义的命令可以被其他配置文件引用
                contacts.cfg              定义联系人和联系人组的配置文件
                localhost.cfg             定义监控本地主机的配置文件
                printer.cfg                定义监控打印机的一个配置文件模板,默认没有启用此文件
                switch.cfg                 定义监控交换机的一个配置文件模板,默认没有启用此文件
                templates.cfg            定义主机和服务的一个模板配置文件,可以在其他配置文件中引用
                timeperiods.cfg         定义Nagios 监控时间段的配置文件
                windows.cfg             监控Windows 主机的一个配置文件模板,默认没有启用此文件

        2、配置文件之间的关系
            在nagios的配置过程中涉及到的几个定义有:主机、主机组,服务、服务组,联系人、联系人组,监控时间,监控命令等,从这些定义可以看出,nagios各个配置文件之间是互为关联,彼此引用的。

            成功配置出一台nagios监控系统,必须要弄清楚每个配置文件之间依赖与被依赖的关系,最重要的有四点:

                a: 定义监控哪些主机、主机组、服务和服务组;
                b: 定义这个监控要用什么命令实现;
                c: 定义监控的时间段;
                d: 定义主机或服务出现问题时要通知的联系人和联系人组.

            为了能更清楚的说明问题,同时也为了维护方便,建议将nagios各个定义对象创建独立的配置文件:

                创建hosts.cfg文件来定义主机和主机组
                创建services.cfg文件来定义服务
                用默认的contacts.cfg文件来定义联系人和联系人组
                用默认的commands.cfg文件来定义命令
                用默认的timeperiods.cfg来定义监控时间段
                用默认的templates.cfg文件作为资源引用文件

        3、配置监控本机
            [root@CentOS-01 nagios]# cd /usr/local/nagios/etc/objects/
            [root@CentOS-01 objects]# vim templates.cfg
                ###################### 定义邮件联系人 #####################
                ### 定义默认邮件联系人模板
                define contact{
                        name                                generic-contact
                        service_notification_period          24x7
                        host_notification_period             24x7
                        service_notification_options        w,u,c,r
                        host_notification_options           d,u,r
                        service_notification_commands   notify-service-by-email
                        host_notification_commands      notify-host-by-email
                        register                        0
                }
                #########################################################
                # 定义主机模板
                #########################################################
                define host{
                        name                                  generic-host
                        notifications_enabled               1            
                        event_handler_enabled                1            
                        flap_detection_enabled              1            
                        process_perf_data                    1            
                        retain_status_information           1            
                        retain_nonstatus_information         1            
                        check_interval                            1            # 检查时间间隔
                        retry_interval                          2            # 重试检查时间间隔
                        max_check_attempts                  2            # 最大检查次数(发现主机故障时,检查多少次才会通知联系人异常)
                        notification_interval                 30           # 再次发出通知的时间间隔
                        notification_period                  24x7        # 通知时间段
                        notification_options                d,u,r        # 通知选项(d:宕机;u:未知;r:恢复)
                        contact_groups                      admins    # 通知的联系人
                        register                                 0             # DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
                }
                define host{
                        name                                  linux-server
                        use                                 generic-host        ## 引用上边定义的 generic-host 模板
                        check_command                   check-host-alive
                        process_perf_data               1
                        register                               0
                }
                #########################################################
                # 定义服务模板
                #########################################################
                define service{
                        name                                   generic-service
                        active_checks_enabled           1
                        passive_checks_enabled         1
                        parallelize_check                    1
                        obsess_over_service              1
                        check_freshness                   0
                        notifications_enabled             1
                        event_handler_enabled           1
                        flap_detection_enabled           1
                        process_perf_data                 1
                        retain_status_information       1
                        retain_nonstatus_information   1
                        is_volatile                               0
                        check_period                         24x7
                        max_check_attempts              2
                        normal_check_interval            1
                        retry_check_interval               2
                        contact_groups                     admins
                        notification_options               w,u,c,r
                        notification_interval               360
                        notification_period                 24x7
                        register                                0
                }
                ####################################################
                ## 针对不同部门制定不同模板策略
                ####################################################

                ### 定义'DSP'组监控策略
                define service {
                        name                        generic-service-dsp
                        use                           generic-service         ## 引用上边定义的 generic-service 模板
                        contact_groups          admins,adminsdsp
                        process_perf_data      1
                        register                      0
                }

                ####################################################
                # 定义本机资源模板
                ####################################################
                define service {
                        name                                 generic-load-service
                        use                                   generic-service
                        service_description             Current Load
                        check_command                 check_nrpe!check_load
                        register                             0
                }
                define service {
                        name                                generic-mem-service
                        use                                   generic-service
                        service_description             MEM Useage
                        check_command                 check_nrpe!check_mem
                        register                             0
                }
                define service {
                        name                                generic-swap-service
                        use                                   generic-service
                        service_description             Swap Useage
                        check_command                 check_nrpe!check_swap
                        register                             0
                }
                define service {
                        name                                generic-disk-service
                        use                                   generic-service
                        service_description             Disk Partition
                        check_command                 check_nrpe!check_disk
                        register                             0
                }

                define service {
                        name                                generic-iostat-service
                        use                                   generic-service
                        service_description             Disk Iostat
                        check_command                 check_nrpe!check_iostat
                        register                             0
                }

            [root@CentOS-01 objects]# vim contacts.cfg
                ##################################################
                ###                          ******* 定义联系人 ******* 
                ##################################################

                ### Default
                define contact{
                        contact_name            nagiosadmin
                        use                           generic-contact        ## 引用 templates.cfg 中定义的 generic-contact 模板
                        alias                          Nagios Admin
                        email                         yw@test.com
                        }
                ##################################################
                ### 定义不同组邮件联系人
                ##################################################
                ### OPS
                define contact{
                        contact_name            nagios-ops
                        use                           generic-contact
                        alias                          Ops
                        email                         yw@test.com         ## 定义联系人邮箱,多个逗号分隔.
                        }

                #############################################
                ###               ******* 定义联系人组 *******
                #############################################

                ############### 定义默认邮件联系人组 ################

                ### Defalut Contactgroup ###
                define contactgroup{
                        contactgroup_name       admins
                        alias                             Nagios Administrators
                        members                      nagiosadmin
                        }

                ############### 定义不同组邮件联系人组 ###############

                ### OPS
                define contactgroup{
                        contactgroup_name       adminsops
                        alias                        OpsGroups
                        members                       nagios-ops
                        }

            [root@CentOS-01 objects]# vim hosts.cfg
                #########################################
                # HOST DEFINITION
                #########################################
                ###定义本机策略

                #host:CentOS-01 |ip:192.168.101.181 |group:localhost
                define host {
                        use                 linux-server                  ## 引用 templates.cfg 中定义的 linux-server 模板
                        host_name         CentOS-01                    ## 主机名(随意)
                        alias               192.168.101.181           ## 别名(随意)
                        address             192.168.101.181           ## IP地址
                        contact_groups  admins                          ## 联系人组名. 引用 contacts.cfg 中定义的默认联系人组
                }

                define hostgroup {
                        hostgroup_name  localhost
                        alias                 localhost
                        members         CentOS-01                    ## 要跟 host_name 一致
                }

            [root@CentOS-01 objects]# mkdir /usr/local/nagios/services/192.168.101.181 -p
            [root@CentOS-01 objects]# cd /usr/local/nagios/services/192.168.101.181
            [root@CentOS-01 192.168.101.181]# ls
            disk.cfg  iostat.cfg  load.cfg  mem.cfg  swap.cfg

            [root@CentOS-01 192.168.101.181]# cat disk.cfg
                ####################################
                # SERVICE DEFINITION
                ####################################

                define service {
                    use               generic-disk-service        ## 引用 templates.cfg 中定义的 generic-disk-service 模板
                    host_name    CentOS-01                    ## 要跟 hosts.cfg 中定义的 host_name 一致
                }
            [root@CentOS-01 192.168.101.181]# cat iostat.cfg
                ####################################
                # SERVICE DEFINITION
                ####################################

                define service {
                    use               generic-iostat-service      ## 引用 templates.cfg 中定义的 generic-iostat-service 模板
                    host_name    CentOS-01                    ## 要跟 hosts.cfg 中定义的 host_name 一致
                }
            [root@CentOS-01 192.168.101.181]# cat load.cfg
                ####################################
                # SERVICE DEFINITION
                ####################################

                define service {
                    use               generic-load-service       ## 引用 templates.cfg 中定义的 generic-load-service 模板
                    host_name    CentOS-01                    ## 要跟 hosts.cfg 中定义的 host_name 一致
                }
            [root@CentOS-01 192.168.101.181]# cat mem.cfg
                ###################################
                # SERVICE DEFINITION
                ###################################

                define service {
                    use               generic-mem-service       ## 引用 templates.cfg 中定义的 generic-mem-service 模板
                    host_name    CentOS-01                    ## 要跟 hosts.cfg 中定义的 host_name 一致
                }
            [root@CentOS-01 192.168.101.181]# cat swap.cfg
                ##################################
                # SERVICE DEFINITION
                ##################################
                define service {
                    use               generic-swap-service      ## 引用 templates.cfg 中定义的 generic-swap-service 模板
                    host_name    CentOS-01                    ## 要跟 hosts.cfg 中定义的 host_name 一致
                }
            [root@CentOS-01 192.168.101.181]# cd /usr/local/nagios/etc/objects
            [root@CentOS-01 objects]# vim ../nagios.cfg
                .......
                cfg_file=/usr/local/nagios/etc/objects/commands.cfg
                cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
                cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
                cfg_file=/usr/local/nagios/etc/objects/templates.cfg
                cfg_file=/usr/local/nagios/etc/objects/hosts.cfg             
                cfg_dir=/usr/local/nagios/services/192.168.101.181
                .......

            vim /usr/local/nagios/etc/nrpe.cfg
                log_facility=daemon
                pid_file=/var/run/nrpe.pid
                server_port=5666
                nrpe_user=nagios
                nrpe_group=nagios
                allowed_hosts=192.168.101.181
                dont_blame_nrpe=0
                debug=0
                command_timeout=60
                connection_timeout=300
                command[check_load]=/usr/local/nagios/libexec/check_load -w 12,8,5 -c 25,20,15
                command[check_mem]=/usr/local/nagios/libexec/check_memory -w 10% -c 3%
                command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
                command[check_iostat]=/usr/local/nagios/libexec/check_iostat -w 10 -c 15
                command[check_disk]=/usr/local/nagios/libexec/check_disk.sh

            [root@CentOS-01 nagios]# cp check_disk.sh check_memory check_iostat /usr/local/nagios/libexec/
            [root@CentOS-01 nagios]# chmod 755 /usr/local/nagios/libexec/{check_disk.sh,check_memory,check_iostat}
            [root@CentOS-01 nagios]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
            [root@CentOS-01 nagios]# service nagios restart

  • 相关阅读:
    C++STL——vector
    大数常用计算模板及例题
    在线算法&离线算法
    线段树——hdu1166敌兵布阵
    C++STL——堆栈
    C++STL——优先队列
    C++STL——队列
    图的建立——图的两种存储结构
    Manacher算法——最长回文子串
    HttpClient的几个实现类
  • 原文地址:https://www.cnblogs.com/liu-shuai/p/6098335.html
Copyright © 2020-2023  润新知