gaohan 发表于 2019-1-14 10:04:37

Nagios安装配置教程(四)配置使用

  

  

Nagios安装配置教程(四)配置使用
  

  

  我是一只小菜鸟,老鸟直接飞过,有什么错误,还请谅解,谢谢
  当您可以在web页面打开nagios的页面,就可以配置以下文件了

  

  

  默认配置文件介绍
  Nagios 安装完毕后,默认的配置文件在/usr/local/nagios/etc目录下。
  每个文件或目录含义如下表所示:
  文件名或目录名用途
  

  
文件名或目录名
用途
cgi.cfg
控制CGI访问的配置文件
nagios.cfg
Nagios 主配置文件
resource.cfg
变量定义文件,又称为资源文件,在些文件中定义变量,以便由其他配置文件引用,如$USER1$
objects
objects 是一个目录,在此目录下有很多配置文件模板,用于定义Nagios 对象
objects/commands.cfg
命令定义配置文件,其中定义的命令可以被其他配置文件引用
objects/contacts.cfg
定义联系人和联系人组的配置文件
objects/localhost.cfg
定义监控本地主机的配置文件
objects/printer.cfg
定义监控打印机的一个配置文件模板,默认没有启用此文件
objects/switch.cfg
定义监控路由器的一个配置文件模板,默认没有启用此文件
objects/templates.cfg
定义主机和服务的一个模板配置文件,可以在其他配置文件中引用
objects/timeperiods.cfg
定义Nagios 监控时间段的配置文件
objects/windows.cfg
监控Windows 主机的一个配置文件模板,默认没有启用此文件
  

  

  进行监控文件配置的流程大概是这样,每增加一台被监控的机器(linux、window)都需要安装下面的配置文件一一做出相应的修改
  

  修改主配置文件nagios.cfg             启用以下文件的配置、或者不启用以下的配置等
  配置时间模板timeperiods.cfg          定义报警的时间,监视的时间等
  配置联系人模板contacts.cfg         出现问题联系人,邮箱信息等
  配置联系组模板contactgroups.cfg      联系组,网络问题的网络管理组,系统问题的系统组等
  配置主机模板hosts.cfg                监控的主机信息,ip地址、主机名等
  配置主机组模板hostgroups.cfg         像linux系统组、window系统组,web服务器组等
  配置检测服务模板services.cfg       监控主机的服务,像监控ping 、snmp、磁盘空间、web服务等
  

  注:如果文件夹下没有此文件,请在安装包中找,或者新建
  

  

  

  (一) 修改主配置文件nagios.cfg
  

  Nagios的主配置文件是nagios.cfg,我们就从这个文件开始修改。用vi编辑nagios.cfg,注释行,然后把下面几行的注释去掉:
  

  cfg_file=/usr/local/nagios/etc/contactgroups.cfg    //联系组配置文件路径
  cfg_file=/usr/local/nagios/etc/contacts.cfg         //联系人配置文件路径

  cfg_file=/usr/local/nagios/etc/hostgroups.cfg       //主机组配置文件路径

  cfg_file=/usr/local/nagios/etc/hosts.cfg            //主机配置文件路径            上面已经介绍过文件配置的作用
  cfg_file=/usr/local/nagios/etc/services.cfg         //服务配置文件路径

  cfg_file=/usr/local/nagios/etc/timeperiods.cfg      //监视时段配置文件路径

  

  去掉前面的 # 号,保持启用,我们编辑的配置文件有没有效果,全部都是在这个地方进行应用的
  

  还要修改以下地方
  check_external_commands=0为check_external_commands=1
  这行的作用是允许在web界面下执行重启nagios、停止主机/服务检查等操作
  command_check_interval=115s为command_check_interval=10s
  根据自己的情况定这个命令检查时间间隔,不要太长也不要太短
  

  

  

  

  (二) 配置时间模板timeperiods.cfg
  

  此文件只要用于定义监控的时间段,下面是一个配置好的实例:
  

  
  #下面是定义一个名为24x7的时间段,即监控所有时间段
  define timeperiod{

  timeperiod_name   24x7//时间段的名称,这个地方不要有空格
  alias         24 Hours A Day, 7 Days A Week
  sunday          00:00-24:00
  monday          00:00-24:00
  tuesday         00:00-24:00
  wednesday       00:00-24:00
  thursday      00:00-24:00
  friday          00:00-24:00
  saturday      00:00-24:00
  }
  #下面是定义一个名为workhours的时间段,即工作时间段。
  define timeperiod{
  timeperiod_name workhours
  alias         Normal Work Hours
  monday          09:00-17:00
  tuesday         09:00-17:00
  wednesday       09:00-17:00
  thursday      09:00-17:00
  friday          09:00-17:00
  }
  

  
注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制
  

  

  

  

  (三) 配置联系人模板contacts.cfg
  

  # vi contacts.cfg
  

  define contact{
        contact_name                  test
  //联系人的名称,这个地方不要有空格
        alias                           sys admin   
  // 随便填,不意义
  
        service_notification_period   24x7
  //时间段就是上面在timeperiods.cfg中定义的timeperiod_name要对应
        host_notification_period      24x7
  //时间段就是上面在timeperiods.cfg中定义的timeperiod_name要对应
        service_notification_options    w,u,c,r
  //当服务出现w—报警(warning),u—未知(unkown),c—严重(critical),或者r—从异常情况恢复正常,在这四种情况下通知联系人.
        host_notification_options       d,u,r   
  //当主机出现d—当机(down),u—返回不可达(unreachable),r—从异常情况恢复正常,在这3种情况下通知联系人
        service_notification_commands   notify-by-email
  //服务出问题通知采用的命令notify-by-email,这个命令是在commands.cfg中定义的,作用是给联系人发邮件.至于commands.cfg之后将专门介绍
        host_notification_commands      host-notify-by-email   
  //同上,主机出问题时采用的也是发邮件的方式通知联系人
        email                         test@test.com
  //邮箱通知
        pager                           1338757xxxx
  //短信通知
        address1                      xxxxx.xyyy@test.com
  //随便填,不意义
        address2                        555-555-5555
  //随便填,不意义
        }
  

  注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制
  

  

  (四) 配置联系组模板contactgroups.cfg
  

  # vi contactgroups.cfg
  

  define contactgroup{
        contactgroup_name       sagroup
  //联系人组的名称,同样不能空格
        alias                   System Administrators      
  //别名
        members                test
  //组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔,切记对应上面的配置
        }
  

  

  

  (五) 配置主机模板hosts.cfg
  

  # vi hosts.cfg
  

  define host{
        host_name                     nagios-server
  //被监控主机的名称,最好别带空格,自定义
        alias                           nagios server
  //别名
        address                         125.222.31.20
  //被监控主机的IP地址,我现在暂时先填本机的IP
        check_command                   check-host-alive
  //监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活
        max_check_attempts            5
  //检查失败后重试的次数
        check_period                   24x7
  //检查的时间段24x7,同样来自于我们之前在timeperiods.cfg中定义的,切记对应
        contact_groups                  sagroup
  //联系人组,上面在contactgroups.cfg中定义的sagroup,切记对应
        notification_interval         10
  //提醒的间隔,每隔10秒提醒一次
        notification_period             24x7
  //提醒的周期, 24x7,同样来自于我们之前在timeperiods.cfg中定义的,切记对应
        notification_options            d,u,r
  //指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍
        }
  

  

  注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制
  

  

  (六) 配置主机组模板hostgroups.cfg
  

  与联系人可以组成联系人组一样,多个主机也可以组成主机组.创建文件hostgrops.cfg
  

  # vi hostgroups.cfg
  define hostgroup{
        hostgroup_name          sa-servers
  //主机组名称,自定义
        alias                   sa Servers
  //别名
        members               nagios-server
  //组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的,切记对应
        }
  

  

  

  (七) 配置检测服务模板services.cfg
  

  # vi services.cfg
  

  #service definition
  define service{
        host_name               nagios-server
  //被监控的主机,hosts.cfg中定义的,自定义
        service_description   check-host-alive
  //这个监控项目的描述(也可以说是这个项目的名称),可以空格,我们这里定义的是监控这个主机是不是存活
        check_command         check-host-alive
  //所用的命令,是commands.cfg中定义的
        max_check_attempts      5
        normal_check_interval   3
        retry_check_interval    2
        check_period          24x7
  //监控的时间段,是timeperiods.cfg中定义的,切记对应
        notification_interval   10
        notification_period   24x7
  //通知的时间段, ,是timeperiods.cfg中定义的,切记对应
        notification_options    w,u,c,r
  //在监控的结果是wucr时通知联系人,具体含义看前文.
        contact_groups          sagroup
  //联系人组,是contactgroups.cfg中定义的,切记对应
        }
  

  注:蓝色标注为自定义,根据自己的系统机器进行相应的修改,前后对应,切记直接复制
  

  

  

  插入针对配置检测服务模板services.cfg中的
  check_command         check-host-alive
  这一命令,是检查服务器得服务状态,监控主机的服务,像监控ping 、snmp、磁盘空间、web服务等,具体的命令已经命令的书写可以查看commands.cfg详细的说明
  

  check_command                   check_ping!100.0,20%!500.0,60%
  //查看ping
  check_command                   check_local_disk!20%!10%!/
  //查看本机磁盘使用情况
  check_command                   check_local_users!20!50
  //查看本机用户
  check_command                   check_local_procs!250!400!RSZDT
  //查看本机程序
  check_command               check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
  //查看本机负载
  check_command                   check_local_swap!20!10
  //查看swap 使用空间
  

  其中的一些参数说明
  check_local_disk定义如下
  

  # 'check_local_disk' command definition
  define command{
  command_name    check_local_disk
  command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
  }
  

  check_local_disk实际上是执行的check_disk插件.这里的$ARG1$, $ARG2$, $ARG3$是什么意思呢?在之前我们已经提到了这个check_disk这个插件的用法,-w的参数指定磁盘剩了多少是警告状态,-c的参数指定剩多少是严重状态,-p用来指定路径.
  在使用check-host-alive的时候,只需要在services.cfg中直接写上这个命令名check-host-alive.后面没任何的参数.而使用check_local_disk则不同,在services.cfg中这要这么写
  check_local_disk!10%!5%!/
  在命令名后面用!分隔出了3个参数,10%是$ARG1$的值,5%是$ARG2$的值,/ 是$ARG3$的值,
  

  

  在以上是监控命令中分为两种对于像磁盘容量,cpu负载这样的”本地信息”,nagios只能监测自己所在的主机,而对其他的机器则显得有点无能为力.毕竟没得到被控主机的适当权限是不可能得到这些信息的.为了解决这个问题,nagios有这样一个附加组件----NRPE.用它就可以完成对linux类型主机”本地信息”的监控.
  

  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做处理.
  注意:NRPE daemon需要nagios插件安装在远程的linux主机上,否则,daemon不能做任何的监控.
  监控内部信息,需要通过客户端的NRPE 插件收集内部信息,服务器通过check_nrpe 接收客户端的信息。
  配置被监控机器
  # groupadd nagios
  # useradd -g nagios -s /sbin/nologin nagios
  # chown nagios.nagios /usr/local/nagios
  # chown -R nagios.nagios /usr/local/nagios/libexec
  

  1. 安装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
  

  2. 安装nagios 补丁
  # tar zxvf nagios-plugins-1.4.14.tar.gz
  # cd nagios-plugins-1.4.14
  # ./configure --with-nagios-user=nagios --with-
  nagios-group=nagios
  # make
  # make install
  

  3. 配置nrpe.cfg
  # vim /usr/local/nagios/etc/nrpe.cfg
  allowed_hosts=127.0.0.1,192.168.30.100# 添加监控主机的IP
  

  4. 启动nrpe守护进程
  /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
  检查nrpe是否已经启动
  # netstat -nultp |grep 5666
  tcp00 0.0.0.0:5666   0.0.0.0:*      LISTEN      18929/nrpe
  

  5. 测试nrpe功能
  # /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
  NRPE v2.12
  正常的返回值为被监控服务器上安装的NRPE的版本信息,如果能看到这些,表示NRPE已经正常工作了
  

  6. 定义监控服务器内容
  

  服务端上的配置
  1. 安装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
  检测nrpe是否能正常和客户端通信
  # /usr/local/nagios/libexec/check_nrpe-H 192.168.30.110
  CHECK_NRPE: Error - Could not complete SSL handshake.
  注意:这里有一个报错。
  

  解决办法:
  1).检查是否安装了openssl和openssl-devel包
  # rpm -qa |grep ssl
  openssl-devel-1.0.0-20.el6_2.5.x86_64
  openssl-1.0.0-20.el6_2.5.x86_64
  2). 检查/usr/local/nagios/etc/nrpe.cfg 此配置文件是否配置正确
  allowed_hosts=127.0.0.1,192.168.30.100
  3).重启系统
  

  若check_nrpe 的返回值是其版本号,则表示已正常通信
  # /usr/local/nagios/libexec/check_nrpe-H 192.168.30.110
  NRPE v2.12
  

  

  在运行nagios之前首先做测试
  /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  看到下面这些信息就说明没问题了
  Total Warnings: 0
  Total Errors:   0
  Things look okay - No serious problems were detected during the pre-flight check
  如果有问题的话就可以按照输出信息来排查
  

  作为守护进程后台启动nagios
  /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
  

  登陆http://your ip address /nagios/来查看吧.点左边的Host Detail
  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  




页: [1]
查看完整版本: Nagios安装配置教程(四)配置使用