0x01 Nagios配置文件

Nagios配置文件

Nagios有多个不一样的配置文件,用于不一样的配置目的。要搞懂和配置Nagios设置,是一个比较花费时间的事情。做为初学者的你,一旦弄懂了这些配置是怎样工做的,那么你后面将会更加高效和值得。
Note: 若是你是按照个人安装文档中的快速安装指导安装的nagios,那么样例配置文件都被存放在路径/usr/local/nagios/etc/目录下。
大体有四类配置文件:1. Main config 2. cgi config 3. resource file 4. object definition file.html

配置文件介绍

配置文件和程序之间的关系图

引用来自官方文档,能够记在心中,至关于有了一层组织架构。
关系图ios

图内容说明:Nagios Daemon就是Nagios核心服务,CGI能够说是可执行程序,能够读取http请求的内容并响应给请求方。4个配置文件将在下面进行介绍。web

Main Config File

主配置文件,里面有不少指令,指示不一样的配置信息。
Nagios Daemon和CGI程序都会读取,不过CGI程序是经过读取CGI Config file中的引用来知道Main Config的路径的。
从图中也看出,从Main Config 能够知道REsource file和 object Definition file。
这也是咱们学习配置Nagios的配置的起始地。
详细文档main config file doc数据库

文件一般名字是nagios.cfg 位于/usr/local/nagios/etc/目录下安全

CGI Config File

这是CGI相关的配置文件,里面配置的指令,是用于指导CGI程序的。其中包含了一个指令用于指示引用Main Config File的位置,同时也间接知道了object 定义。网络

详细文档cgi config file doc架构

Resource Config File

存储了用户自定义的宏。该文件的一个主要用途就是存储用户的敏感信息,包括密码。该文件不须要给CGI看到或访问到。
在main中经过resource_file指令进行指定。oop

Object Definition File

该文件首先是定义了:学习

  • hosts
  • services
  • hostgroups
  • contacts
  • contactgroups
  • commands
    等等

这里就是定义了你全部要监控的东西的定义,和怎么监控他们。是否是有点像定义使用类初始化对象。设计

在main中经过cfg_file or cfg_dir 指定

详细介绍object definition file doc

配置文件语法说明

  1. '#' 开头的是备注
  2. 指令变量名必须是行首开始,空格是不予许的
  3. 大小写敏感
  4. 对于指令变量值是路径的,分为绝对路径和相对路径,相对路径是相对当前main文件做为参照路径。
  5. 分号;后的字符也是注释

核心配置详解

Object相关配置

咱们都知道,一套系统要管理控制不少东西,首先是要对控制的东西进行抽象再按照格式定义落地下来。相似oop中的封装。同时为了更好的管理这些封装的对象,产生继承关系是必要的,经过继承不只可让子类继承一些东西,还能够经过继承这种关系控制其某些行为。定义好不少类型后,类型之间还有一些类似的共通的特色,将这些共通的特色也要表现出来,这样使用方就能够经过这些共通的特色来统一访问使用这些对象,多个种共通特色,使用方就能够在多个共同点维度来管理访问这些对象。这就是oop中的多态,具体表现就是接口的定义。实现了接口,就表现出一种共通特性。从而将异构的对象进行在必要的维度上统一管理了。

还有不要忘记了定义好的东西存储持久化到哪里呢?核心定义确定是在代码文件里落地,可是怎么要让在咱们核心代码基础上用户自定义东西,咱们代码再从中读取来扩展,那么就能够用配置文件或者结构化数据(数据库数据)来存储。这也体现了oop很是重要的序列化和反序列化来保存或读取对象状态了。

高谈阔论后,思想指导后,咱们就按照这个思想指导,看看nagios是怎样对应思想指导中的一些东西的

  1. object在配置文件中的定义语法是
define host{
    host_name nagios_server_001
    check_command  check-host-alive
}

这里定义了一个host类型的子类。应该说host至关于一个抽象类,会约束定义的这个子类必须定义必要的属性。

  1. 固然object能够继承自定义的其它host类,能够看作是多层继承
define host {
    host_name host1
    check_command check-host-alive
    name host1template  # name代表该子类能够做为一个可继承的类
}

define host {
    host_name host2
    check_command check-host-alive
    use host1  # 这里能够看作是host2继承了抽象类host,又继承了host1这个。可是他两个都是继承了host这个抽象类才行。这样理解比较好。
}
  1. object的本地变量会覆盖同名的继承变量
    则很好理解,如题意。

  2. 固然继承也是链式的
    也就是说,父亲的父亲的变量也会继承下来

  3. 把共通的默认变量放到父类中,来统一管理共通属性。

  4. group 组的概念,不管host仍是contact仍是service都有一个对应的gourp,像host group/contact group
    这些组里面,有个列表类型的变量,存储了host的引用。这里面的host都是都会被统一访问,说明host都有相同的接口,体现了部分多态特性。

  5. 自定义变量属性
    能够自定义变量属性,就是在定义的属性前加上_开头

define host {
    _customvar1  10  ; 自定义一个属性
    _snmp_community  pulic ; 自定义的第二个属性
    name  custometemplate1
    register 0  ; 注意这里是不会被加载到内存中使用的。
}

define host {
    host_name bighost1
    address 10.10.1.1
    use customertemplate1 ; 这里就继承了自定义类,也有了自定义类的自定义属性。

8.若是有不想继承某个属性,本身本地又用不上,那么本地对应设置为null值

9.若是要继承和本地的属性的值都要使用能够在本地值前使用+好来合并一个列表

  1. nagios特有的跳出传统继承关系的继承规则。
    将关联组合的对象中的属性变量值拿来用。而不须要显示的引用组合对象名。若是services 类型关联了host类型,那么service可能就会使用host中的变量。从需求上这样设计很好理解,好比说服务所要用的contact,能够从host中拿去。

  2. 在use 后能够设置多个继承,使用,号间隔,若是多个继承有相同属性,那么靠前的优先级高。且继承是深度优先的。

CGI 的配置

CGI是nagios操做的入口,大多数时候咱们经过cgi程序来调用命令。
主要介绍里面几个关键的配置

  1. use_authentication 用于配置cgi调用时,是否进行用户身份认证,强力建议设置认证。否则,肯定删除了命令性CGI,避免没有被认证用户触发命令的执行。虽然当关闭认证后cgi是不会触发命令的,可是为了安全仍是按照说的作。

cgi的安全设置是很是重要的,毕竟cgi经过web是对外暴露的,若是不进行认证等安全限制,那么网络均可以执行相关cgi,是很是危险的。

验证Nagios Core 配置可用性

修改了配置文件,不知道配置文件是否格式或语法或配置是否正确,能够经过ngios -V path_of_nagios_config 来验证。 命令你能够检测出错误,或者警告。

相关文章
相关标签/搜索