第3章 安装配置
3.1 软件列表
3.2 Nagios安装配置
Nagios采用c编写,各类监控对像遵循c语言特性,监控对像的属性有可继承。
3.2.1 Nagios基本概念
3.2.1.1 主机检测
什么时候做主机检测?
由Nagios守护进程来做主机检测,一般是:
- 在规格化的间隔内,这个由主机对象定义里的check_interval和retry_interval选项确定;
- 当主机状态变换后对应的服务做按需检测;
- 在主机可达性逻辑中需要做按需检测;
- 在主机依赖检测的前处理中需要做按需检测;
主机状态判定
主机检测由插件来做,插件会返回结果,结果是运行、告警、未知和紧急四个状态之一。那么Nagios将把插件的返回值转换成主机的运行、宕机或不可达。
主机状态变换
当Nagios检测出主机状态时,它总是要感知到主机从四种状态之间做了变换并要采取对应的行动。这些在不同的状态类型(硬态或软态)下的状态变换将会触发事件处理的运行和发送出通知。发现与处置这些状态变换是Nagios该做的全部。
3.2.1.2 服务检测
什么时候会做服务检测?
由Nagios守护进行的服务检测执行于:
- 在规划的间隔到了时;间隔由服务对象定义里的check_interval和retry_interval选项确定。
- 因服务依赖检测的前处理需要而发出的按需检测;
- 因服务依赖检测的前处理逻辑而做的按需检测可以保证得到的依赖逻辑关系尽可能准确。如果不使用使用依赖,Nagios将不做任何按需服务检测。
服务状态判定
由插件来做的服务检测将返回一个状态,是正常(OK)、告警(WARNING)、未知(UNKNOWN)或紧急(CRITICAL)四种之一。插件直接将转换为服务状态,如插件返回一个告警状态将使一个服务处于告警态。
服务状态变换
当Nagios对服务进行状态检测,将会感知到服务在四种状态之间进行变化并采取合适行动。
这些状态有不同的状态类型(硬态或软态)将会触发事件处理运行和发出通知。
服务状态变换同样可以触发按需的主机检测。
感知与处理状态变换是Nagios该做的全部
3.2.1.3 检测状态类型: 软态、硬态
被监控的主机和服务的当前状态由如下两个要素决定:
- 主机与服务的状况(如正常、警告、运行和宕机等)
- 服务与主机将要从属的状态类型
Nagios状态类型: 软态和硬态
这两种状态取决于监控逻辑,当执行过事件处理或是当通知被初始送出时将会给出决定。
对像 宏 软态值 硬态值
--------------------------------------------------
主机状态 $HOSTSTATETYPE$ SOFT HARD
服务状态 $SERVICESTATETYPE$ SOFT HARD
3.2.1.4 服务与主机的检测重试
为防止因瞬态故障而引发错误报警,Nagio需要定义主机与服务经过多少次的重试检测后再认为故障是“真正”发生。这个次数是由主机与服务中的max_check_attempts选项决定。如果真正故障发生时主机与服务进行检测重试的做法在理解状态类型机制很重要。
3.2.1.5 定义基本对像
根对像或父对像定义
************************************************
define class_type{
name base_class_name ;Root class name
alias alise_string
type [vlaue]
_type [vlaue]
}
其中:
define是定义命令字符
class_type:nagios的对像类,nagios常用的类有:
名称 识别字符
-------------------------
主机 host
主机组 hostgroup
服务 service
服务组 servicegroup
联系人 contact
联系人组 contactgroup
时间周期 timeperiod
命令 command
服务依赖 servicedependency
服务扩展 serviceescalation
主机依赖 hostdependency
主机扩展 hostescalation
额外主机信息 hostextinfo
额外服务信息 serviceextinfo
nagios不支持自定义对像类,必须采用上面nagios预定义的类。
type value 定义属性类型与属性值
type是类的属性,它是用来描述类的某方面的特征
value是类的属性值
同一个类,有多种属性来描述类的各方面的特征。
不同的类,有不同的属性。
在nagios中各种预定义的类中,nagios为每个预定义类定义了各类详细的属性,这些属性称为预定义属性。
nagios支持用户为类自定义属性值,格式如下:
_type [vlaue]
使用用户自定制变量需要注意如下几个要点:
1.必须以下划线(_)开头来定义变量名称以防止与标准域名称混淆;
2.自定制变量名是大小写敏感的;
3.自定制变量是可以象一般的变量那样被继承传递的;
4.自定制变量名是可以被脚本里引用的,在宏和环境变量中有说明。
自定义属性值与预定义属性一样使用,都具有继承性。
提示: a.可以引用其它类作为当前类的一个属性。
如服务类中,常用联系人属性,命令属性,其实它们同样是类对像。
例:contact_groups admins
b.在定义对像时,父类必须有“name”属性,用于子类使用。
在子类定义中,建议使用“name”属性,以便供其子类使用,若它没有子类,则也可以没有该属性。
3.2.1.6 定义子对像
************************************************
define class_type{
name sub_class_name #子对像名称,不可重复。该选项主要是用于后续为它建立子对像而设,若当前对像 以后不需要子对像,可以省略该项,由系统自动指定。
use base_class_name #子对像的父对像。
alias alise_string #当为服务对像时,采用service_descpription参数。
type [vlaue]
_type [vlaue]
}
其中:
define是定义命令字符
class_type:nagios的对像类,它必须与父对像的class_type值相同。
name 子类名称。若只是配置一个具体的对像,则不使用“name”,而使用相应的对像名称属性,常用的具体对像定义时使用的属性值如下:
主机类:host_name(定义具体的主机)
hostgroup_name(定义具体的主机组)
服务类:service_description(定义具体的服务)
servicegroup_name(定义具体的服务组)
联系人:contact_name(定义具体的联系人)
contactgroup_name(定义具体的联系人组)
use base_class_name 表示引用父对像,其中base_class_name是父对像的名称,该名称是父类的name属性的值。
在子类定义中必须有“use”用于指定父类。
子类可以有多个父类,如:use Parent_Class_1,Parent_Class_2,...,Parent_Class_N
type [vlaue] 表示子对像的属性值。
3.2.2 安装
- 建立nagios用户和组
useradd nagios
groupmems -a apache -g nagios
- 下载源代码包及安装
# wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.5.tar.gz
# tar zxvf nagios-4.4.5.tar.gz
# cd nagios-4.4.5
# ./configure \
--enable-event-broker \
--with-nagios-user=nagios \
--with-nagios-group=nagios \
--with-command-user=nagios \
--with-command-group=nagios
# make all
# make install
# make install-init
# make install-daemoninit
# make install-commandmode
# make install-config
# make install-webconf
# make install-exfoliation
# cp -fr contrib/eventhandlers /usr/local/nagios/
# chown -R nagios:nagios /usr/local/nagios/eventhandlers