部署Nagios监控系统

Nagios简介

  • Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
  • nagios自己并无监控的功能,全部的监控是由插件完成的,插件将监控的结果返回给nagios,nagios分析这些结果以web的方式展示给咱们,同时提供相应的报警功能(这个报警的功能也是由相应的插件完成的。

Nagios工做原理

Nagios的主动模式和被动模式php

  • 被动模式:就如同上图所显示的那样,客户端起nrpe进程,服务端经过check_nrpe插件向客户端发送命令,客户端根据服务端的指示来调用相应的插件,插件能够获取到本机的相关信息,并把获取到的结果发送给服务端。由于须要调用客户端的插件去等带客户端返回的信息,因此叫作被动模式
  • 主动模式:主动模式不须要调用客户端的插件,而是经过本身的插件主动去探测客户端的相关信息。
    主动模式和被动模式的区别这两种模式所擅长监控的服务也是不一样的。
  • 主动模式:主机死活,端口,http服务,MySQL服务......
  • 被动模式:客户端主机的负载,硬盘空间,内存......

Nagios能够识别4种状态返回信息,即 0(OK)表示状态正常/绿色、1(WARNING)表示出现警告/×××、2(CRITICAL)表示出现很是严重的错误/红色、3(UNKNOWN)表示未知错误/深×××。Nagios根据插件返回来的值,来判断监控对象的状态,并经过web显示出来,以供管理员及时发现故障。html

操做步骤

  • 案例环境
主机 IP 主要软件
Nagios监控端 192.168.200.131 httpd、php、nagios、nagios-plugins、nrpe、
被监控端 192.168.200.132 .

  • 下载安装包环境linux

    # wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.1.tar.gz 
    # wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
    # wget https://sourceforge.net/projects/nagios/files/nrpe-3.x/nrpe-3.1.0.tar.gz
    # yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
    # yum intall httpd php
  • 安装 ios

    # useradd -s /sbin/nologin nagios
    # mkdir /usr/local/nagios
    # chown -R nagios.nagios /usr/local/nagios
    # tar -zxvf nagios-4.3.1.tar.gz -C /opt
    # cd /opt/nagios-4.3.1
    # ./configure --prefix=/usr/local/nagios
    # make all
    # make install
    # make install-init
    # make install-commandmode
    # make install-config
    # make install-webconf      //生成apache配置文件
    # chkconfig --add /etc/rc.d/init.d/nagios
    # chkconfig --level 35 nagios on
    # chkconfig --list nagios
    # ls /usr/local/nagios    检查 是否存在etc、bin、sbin、share、var 这五个目录
  • 安装插件web

    # tar xvzf nagios-plugins-2.2.1.tar.gz -C /opt
    # cd /opt/nagios-plugins-2.2.1/
    # ./configure --prefix=/usr/local/nagios
    # make && make install
  • 修改httpd配置文件apache

    # vim /etc/httpd/conf/httpd.conf 
    User nagios        //修改
    Group nagios       //修改
    <IfModule dir_module> 
        DirectoryIndex index.html index.php       //修改
    </IfModule> 
    ........
    AddType application/x-httpd-php .php    //添加
  • 为了安全起见,通常状况下要让nagios 的web 监控页面必须通过受权才能访问,
  • 这须要增长验证配置,即在httpd.conf 文件最后添加以下信息:vim

    #setting for nagios 
    ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" 
    <Directory "/usr/local/nagios/sbin"> 
             AuthType Basic 
             Options ExecCGI 
             AllowOverride None 
             Order allow,deny 
             Allow from all 
             AuthName "Nagios Access" 
             AuthUserFile /usr/local/nagios/etc/htpasswd              
             Require valid-user 
    </Directory> 
    Alias /nagios "/usr/local/nagios/share" 
    <Directory "/usr/local/nagios/share"> 
             AuthType Basic 
             Options None 
             AllowOverride None 
             Order allow,deny 
             Allow from all 
             AuthName "nagios Access" 
             AuthUserFile /usr/local/nagios/etc/htpasswd 
             Require valid-user 
    </Directory> 
    
    # systemctl restart httpd.service  //重启服务
  • 建立认证访问文件 c#

    # htpasswd -c /usr/local/nagios/etc/htpasswd zkc    //接着输入密码
  • 配置Nagois

    配置文件通常在目录/usr/local/nagios/etc/ 下windows

  • resource.cfg : 是nagios的变量定义文件 通常无需更改 $USER1$=/usr/local/nagios/libexec
  • commands.cfg : 此文件默认是存在的,无需修改便可使用,固然若是有新的命令须要加入时,在此文件进行添加便可
  • localhost.cfg : 用来监控本机 通常无需更改
  • windows.cfg : 用来监控windows
  • templates.cfi
    主要用于监控主机资源以及服务,在nagios配置中称为对象,为了避免必重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于屡次引用。浏览器

    # vim templates.cfi
    contact_groups       ts        //联系组属性改为 ts(5个) 将在后面的contacts.cfg文件中定义
  • hosts.cfg
    此文件默认不存在,须要手动建立,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息(不能有任何空格)

    # vim /usr/local/nagios/etc/objects/hosts.cfg
    define host{
                    use                           linux-server#引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。
                    host_name               Nagios-Linux#主机名
                    alias                          Nagios-Linux#主机别名
                    address                    192.168.200.131 #被监控的主机地址,这个地址能够是ip,也能够是域名。
                    }
    define host{
                    use                           linux-server
                    host_name               Nagios-Linux1
                    alias                          Nagios-Linux1
                    address                    192.168.200.132 
                    }
    #定义一个主机组   
    define hostgroup{      
                    hostgroup_name          bsmart-servers#主机组名称,能够随意指定。
                    alias                   bsmart servers#主机组别名
                    members                 Nagios-Linux#主机组成员,其中“Nagios-Linux”就是上面定义的主机。     
                    }

部署Nagios监控系统

  • services.cfg
    此文件默认也不存在,须要手动建立,主要用于定义监控的服务和主机资源

    # vim /usr/local/nagios/etc/objects/services.cfg
    define service{  
                    use                     local-service#引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。
                    host_name               Nagios-Linux#指定要监控哪一个主机上的服务,“Nagios-Server”在hosts.cfg文件中进行了定义。
                    service_description     check-host-alive#对监控服务内容的描述,以供维护人员参考。
                    check_command           check-host-alive#指定检查的命令。
                    }

    部署Nagios监控系统

  • contacts.cfg
    contacts.cfg是一个定义联系人和联系人组的配置文件(不能有空格)

    # vim /usr/local/nagios/etc/objects/contacts.cfg
    define contact{
                    contact_name                    zkc#联系人的名称,这个地方不要有空格
                    use                             generic-contact#引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义
                    alias                           Nagios Admin
                    email                           651373897@qq.com
                    }
    define contactgroup{
                    contactgroup_name       ts#联系人组的名称,一样不能空格
                    alias                   Technical Support#联系人组描述
                    members                 zkc#联系人组成员,其中“zkc”就是上面定义的联系人,若是有多个联系人则以逗号相隔
                    }

部署Nagios监控系统

  • cgi.cfg
    此文件用来控制相关cgi脚本
    因为nagios的web监控界面验证用户为zkc,因此只需在cgi.cfg文件中添加此用户的执行权限
    在最后加入

    # vim /usr/local/nagios/etc/cgi.cfg 
    default_user_name=zkc
    authorized_for_system_information=nagiosadmin,zkc  
    authorized_for_configuration_information=nagiosadmin,zkc  
    authorized_for_system_commands=zkc
    authorized_for_all_services=nagiosadmin,zkc  
    authorized_for_all_hosts=nagiosadmin,zkc
    authorized_for_all_service_commands=nagiosadmin,zkc  
    authorized_for_all_host_commands=nagiosadmin,zkc

  • nagios.cfg

    # vim /usr/local/nagios/etc/nagios.cfg
    将对象配置文件在Nagios.cfg文件中进行引用
    cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
    cfg_file=/usr/local/nagios/etc/objects/services.cfg
    command_check_interval=10s  //添加   该变量用于设置nagios对外部命令检测的时间间隔
  • 测试监控

    # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 验证配置文件
    # systemctl restart nagios.service 
    # systemctl restart httpd

    部署Nagios监控系统

  • 验证:打开浏览器输入

    http://192.168.200.131/nagios/

部署Nagios监控系统
部署Nagios监控系统