热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

0x01Nagios配置文件

0x01Nagios配置文件,Go语言社区,Golang程序员人脉社


Nagios配置文件

目录
  • Nagios配置文件
    • 配置文件介绍
      • 配置文件和程序之间的关系图
      • Main Config File
      • CGI Config File
      • Resource Config File
      • Object Definition File
    • 配置文件语法说明
    • 核心配置详解
      • Object相关配置
      • CGI 的配置
      • 验证Nagios Core 配置可用性


Nagios有多个不同的配置文件,用于不同的配置目的。要搞懂和配置Nagios设置,是一个比较花费时间的事情。作为初学者的你,一旦弄懂了这些配置是怎样工作的,那么你后面将会更加高效和值得。

Note: 如果你是按照我的安装文档中的快速安装指导安装的nagios,那么样例配置文件都被存放在路径/usr/local/nagios/etc/目录下。

大致有四类配置文件:1. Main config 2. cgi config 3. resource file 4. object definition file.



配置文件介绍


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

引用来自官方文档,可以记在心中,相当于有了一层组织架构。
关系图


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



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指令进行指定。


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 来验证。

命令你可以检测出错误,或者警告。



推荐阅读
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • SpringMVC RestTemplate的几种请求调用(转)
    SpringMVCRestTemplate的几种请求调用(转),Go语言社区,Golang程序员人脉社 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 离线安装Grafana Cloudera Manager插件并监控CDH集群
    本文详细介绍如何离线安装Cloudera Manager (CM) 插件,并通过Grafana监控CDH集群的健康状况和资源使用情况。该插件利用CM提供的API接口进行数据获取和展示。 ... [详细]
  • 探讨在PHP开发中,如何选择使用Cookie或数据库来优化网站性能,特别是在处理用户保存的搜索结果时。 ... [详细]
  • HTML基础入门指南
    本文将深入浅出地介绍HTML的基础知识,包括其定义、开发工具、制定机构、特性、基本标签及更多实用内容。 ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • 设计模式在软件开发中被广泛应用,但如果不当使用,可能会导致系统复杂性增加。例如,过度添加类可能导致类图难以理解,代码跟踪变得复杂。本文探讨如何在使用设计模式时保持系统的简洁和高效。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • 本文探讨了C++编程中理解代码执行期间复杂度的挑战,特别是编译器在程序运行时生成额外指令以确保对象构造、内存管理、类型转换及临时对象创建的安全性。 ... [详细]
  • 程序员版情书:王思聪的编程式告白
    当程序员用代码表达爱意,会产生怎样的化学反应?一起来看看这封充满技术感的情书,网友笑称这才是真爱! ... [详细]
  • Vue 开发与调试工具指南
    本文介绍了如何使用 Vue 调试工具,包括克隆仓库、安装依赖包、构建项目以及在 Chrome 浏览器中加载扩展的详细步骤。 ... [详细]
author-avatar
多米音乐_34084632
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有