Nagios配置文件详解 1. 概述 2. 配置文件 2. 配置文件 3. 主配置文件nagios.cfg详解 官方配置文件详解:https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/configmain.html 4. 对象配置文件 4.1 对象配置文件概述

Nagios配置文件官方说明文档:https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/toc.html
Nagios配置文件分为四部分:

  • Main Configuration File 主配置文件
  • Resource File(s) 资源配置文件
  • Object Definition Files 对象定义文件
  • CGI Configuration File CGI配置文件

Main Configure File
主配置文件包含了一些列用于nagios core daemon工作的指令。该配置文件需要对nagios core daemon和CGI 有可读权限。
配置文件说明:
1. 行首以#开始的为注释
2. 变量名必须在行首开始处,并且之前不能拥有空格
3. 变量名区分大小写
4. 主配置文件中的路径可能是相对的或绝对的。相对路径相对于主配置文件的位置。

本系列博客中,Main Configure File位于:/usr/local/globle/softs/monitor/nagios/4.4.1/etc/nagios.cfg

3. 主配置文件nagios.cfg详解

官方配置文件详解:https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/configmain.html

nagios.cfg是Nagios监控系统的主要配置文件,是Nagios基本功能的实现。
下面表格中的配置及参数,是本系列博客部署Nagios(版本4.4.1)时的参数,仅供参考。

3.1 Log File

log_file:/usr/local/globle/softs/monitor/nagios/4.4.1/var/nagios.log
nagios运行时的总日志文件。必须是配置文件的第一个选项。默认开启。

3.2 Object Configuration File

主要有cfg_fileh和cfg_dir两部分组成

cfg_fie:/usr/local/globle/softs/monitor/nagios/4.4.1/etc/objects/commands.cfg   
命令模板配置文件。默认开启
cfg_file:/usr/local/globle/softs/monitor/nagios/4.4.1/etc/objects/contacts.cfg   
联系人模板配置文件。默认开启
cfg_file:/usr/local/globle/softs/monitor/nagios/4.4.1/etc/objects/timeperiods.cfg
报警时间模板配置文件。默认开启
cfg_file:/usr/local/globle/softs/monitor/nagios/4.4.1/etc/objects/templates.cfg
监控模板配置文件。默认开启
cfg_file:/usr/local/globle/softs/monitor/nagios/4.4.1/etc/objects/localhost.cfg
本机(监控主机)配置文件。默认开启
cfg_file:/usr/local/globle/softs/monitor/nagios/4.4.1/etc/objects/windows.cfg
windows监控配置。默认关闭
cfg_file:/usr/local/globle/softs/monitor/nagios/4.4.1/etc/objects/switch.cfg
交换机监控配置。默认关闭
cfg_file:/usr/local/globle/softs/monitor/nagios/4.4.1/etc/objects/printer.cfg
打印机监控配置。默认关闭
cfg_dir:/usr/local/globle/softs/monitor/nagios/4.4.1/etc/servers
服务监控目录。启用时,位于该目录下的xxx.cfg文件全部生效,方便用户自定义配置管理。默认关闭

3.3 Object Configuration Directory

object_cache_file:/usr/local/globle/softs/monitor/nagios/4.4.1/var/objects.cache
对象缓存文件。在Nagios启动或者重启时,被CGI读取使用,避免CGI从配置文件读取对象配置时,因Nagios对象配置文件修改造成的冲突。

3.4 Precached Object File

precached_object_file:/usr/local/globle/softs/monitor/nagios/4.4.1/var/objects.precache
>此选项确定预缓存对象文件的位置。如果使用-p 命令行选项运行 Nagios, 它将预处理对象配置文件, 并将缓存的配置写入此文件。 然后, 您可以使用-u 选项启动 Nagios 以使其读取此预缓存文件中的对象定义, 而不是标准对象配置文件 (请参见上面的 cfg_file 和 cfg_dir 选项)。使用预缓存对象文件可以加快 (重新) 启动所需的时间。如果您有一个大的和/或复杂的配置, Nagios 过程。阅读有关优化 Nagios 的文档部分, 以找到更有关此功能的工作原理。

3.5 Resource File

resource_file=/usr/local/globle/softs/monitor/nagios/4.4.1/etc/resource.cfg
这是一个可选的资源文件,包含了USERx的宏定义。通过配置多个resource_file可以设置多个资源文件。
CGI不会读取资源文件,因此敏感的用户密码等信息可以定义为此文件中的宏,并且可以将文件权限设置文件600

3.6 Status FIle and Update Interval

status_file=/usr/local/globle/softs/monitor/nagios/4.4.1/var/status.dat
存储当前所有被监控的服务和主机状态的文件。它的值被CGI读取和执行。在nagios重启时这些内容会被删除。
status_update_internal=10
该选项确定nagios周期性转存program,host,servicie的频率值

3.7 Nagios User and Group

nagios_user=nagios
运行nagios的系统用户
nagios_group=nagios
运行nagios的用户组

3.8 Temp File and Path

temp_file=/usr/local/globle/softs/monitor/nagios/4.4.1/var/nagios.tmp
这是nagios更新状态日志,清除内容文件等划出的临时目录。该目录在nagios启动时创建,使用和删除
temp_path=/tmp
nagios为service和host检查结果创建的临时目录

External Command Check Option

check_external_commands=1

该选项允许用户指定nagios是否检查外部指令(在下面定义的command file选项)。默认情况下,nagios将会检查外部命令。如果用户想启用CGI命令接口,可以开启该项。0表示不开启,1表示开启。默认开启。

command_file=/usr/local/globle/softs/monitor/nagios/4.4.1/var/rw/nagios.cmd

该选项是nagios检查外部命令请求的文件。它也是用户通过CGI提交的命令的地方。因此对于web server的用户必须是可写权限的。权限设置需要在目录级别而非文件,并且该文件在执行完其内容后总被删除。默认开启

Query Socket

query_socket=/usr/local/globle/softs/monitor/nagios/4.4.1/var/rw/nagios.qh
该选项是Query Handler interface创建的socker套接字

Check Workers?

check_worker=10
该项设置指定当nagios core 开始时,有多少worker process应该启动。worker process 用于执行主机和服务的检查。
如果未指定,默认的值为每个计算核心1.5个worker process,最小4个worker process

Disable Service Checks When Host Down?

host_down_disable_service_checks=0/1
该项设置将会关闭服务检查当其所在主机宕机时。虽然在某些环境中是可取的, 但启用此值可能会扭曲报表值, 因为预期的检查数量不会执行

Notificatioins Option?

enable_notification=0/1
该项设置决定了当nagios启动或者重启时是否发送警告信息。如果禁用,nagios不会发送任何主机或者服务的报警。
注意:如果用户开启了【state retention】,nagios将会忽略此项配置,并在(重新)启动时使用最后一次该选项的配置(存储在state retention file中),除非禁用掉【use_retained_program_state】选项。
如果用户在【state retention】启用时想要改变此项配置(use_retained_program_state开启),用户将不得不通过web interface来实现。

lock_file=/var/run/nagios.lock
程序运行时pid的锁文件

event_broker_options=-1
控制那些数据发送到事件中断器。0表示不发送,-1表示发送所有。其他值参照文档。

EVENT BROKER MODULES
该选项指令主要用于指定一个在nagios启动时被加载的事件中断模块。通过定义多个指定来加载多个模块。
启动时传递给模块的参数通过空格隔开。
例如:

    broker_module=<modulepath>    [moduleargs]
    breoker_module=/somewhere/module1.0
    breoker_module=/somewhere/module2.0    arg1    arg2=3    debud=0

Log Rotation Method

日志轮换方式主要争对nagios的主日志文件。其值包括:

  • n 不进行日志轮换
  • h 以小时为单位进行日志轮换
  • d 以天为单位进行日志轮换
  • w 以周为单位进行日志轮换(每周最后一天)
  • m 以月为单位进行日志轮换(每月最后一天)
log_rotation_method=d 
默认以天为单位进行日志轮换

Log Archive Path

log_archive_path=/usr/local/globle/softs/monitor/nagios/4.4.1/var/archives**    
该选项定义日志轮换归档目录

use_syslog=1
该现象表示是否记录到syslog中。1表示记录,0表示不记录。
log_notification=1
日志notifications级别是否被记录。1表示记录,0表示不记录。
log_service_retries=1
服务检查重启记录是否记录到日志。1表示记录,0表示不记录。
log_host_retries=1
主机检查重试记录是否记录到日志。1表示记录,0表示不记录。
log_event_handlers=1
如果不希望host和service事件句柄被记录到日志,设置为0,反之设置为1。
log_initial_states=0
如果用户希望记录所有的主机和服务的开始状态到日志文件中。如果用户不使用具有长期状态的外部应用程序统计报告, 您不需要启用此选项。 在此情况下, 将值设置为0
log_current_states=1
如果不希望 Nagios 在将日志存储到主日志文件之后记录所有当前主机和服务状态, 可以通过将此值设置为0来禁用此选项。默认值为1。
log_external_commands=1
如果不希望 Nagios 记录外部命令, 请将此值设置为0。 如果外部指令应该被记录, 请将此值设置为 1
注意: 此选项不包括对被动服务检查的日志记录(请参阅以下选项以控制是否记录被动检查)
log_passive_checks=1
如果用户不希望nagios记录主动检查日志,设置为0。反之为1
GLOBAL HOST AND SERVICE EVENT HANDLERS
这些选项允许您指定要为每个主机或服务状态更改运行的主机和服务事件处理程序命令。
全局事件处理程序在您在每个主机或服务定义中有选择地指定的事件处理程序之前立即执行。
命令参数是您在主机配置文件中定义的命令定义的简称。
有关详细信息, 请阅读 HTML 文档。

4. 对象配置文件

4.1 对象配置文件概述

Nagios的对象包括:服务,服务组,主机,主机组,联系人,联系人组,命令集,时间段,通知方式,通知和执行依赖。
Nagios的Object 在主配置文件中的cfg_file和cfg_dir两个参数定义文件和目录。
主机和主机组
主机一般是物理设备,如服务器,工作站,路由器,交换机,打印机等;主机一般有IP地址或者MAC地址;主机上有一个或者多个服务运行;主机之间存在父子关系,通常能够反映真实的网络连接
主机组是一个或者更多的主机
服务和服务组
服务主要包括:主机资源如CPU负载,磁盘使用,系统负载等;网络服务,如HTTP,POP3,FTP,SSH等;
服务组是一个或者更多的服务
联系人和联系人组
联系方式定义,报警应答。
时刻和时间段
主机或者服务监控的时间段,通知联系人的时间段
命令集
包括:主机和服务的检查,报警,事件处理,其他命令

不难发现:
Nagios实际上不监控行为量化,然后采用宏定义的方式实现批量处理。
比如监控对象颗粒化:主机,主机组,服务,服务组;
时间颗粒化:监控时刻或者时间段,报警时刻或者时间段,通知时刻或者时间段
行为颗粒化:主机(组)检查行为,服务(组)检查行为,报警和通知行为,事件处理(控制)行为等