|
Nagios配置文件很多,有主配置文件,各种对象配置文件安装nagios默认路径下/usr/local/nagios/etc会有以下文件:
- cgi.cfg:cgi配置文件
- htpasswd.users:存放认证密码的文件
- nagios.cfg:主配置文件
- objects :该目录下有各种对象
- resource.cfg 资源配置文件
1、认识一下nagios的主配置文件nagios.cfg
- log_file=/usr/local/nagios/var/nagios.log
- ##定义nagios的日志文件路径
-
- cfg_file用来加载对象定义的相关文件的,下面就是objects中的
- 8个对象:
- cfg_file=/usr/local/nagios/etc/objects/commands.cfg
- cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
- cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
- cfg_file=/usr/local/nagios/etc/objects/templates.cfg
- cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
- #cfg_file=/usr/local/nagios/etc/objects/windows.cfg
- #cfg_file=/usr/local/nagios/etc/objects/switch.cfg
- #cfg_file=/usr/local/nagios/etc/objects/printer.cfg
- 默认windows主机、交换机和打印机是注释的,其实包含哪些对象
- 我们可以手动设置的
-
-
- 使用cfg_dir可以把一个目录下的文件全部包含进来
- #cfg_dir=/usr/local/nagios/etc/routers
-
- resource_file=/usr/local/nagios/etc/resource.cfg
- ##设定Nagios附加的宏定义的相关文件
-
- status_file:
- 设定Nagios存储所有主机和服务当前状态信息的文件;
- status_update_interval:
- 设定status_file指定的文件中状态信息的更新频率,默认10s
- nagiosnagios_user=nagios 用户
- nagiosnagios_froup=nagios 用户组
- command_check_interval=-1
- 命令检查间隔时间,-1尽可能多的检查
- command_file=/usr/local/nagios/var/rw/nagios.cmd
- 定义commands的执行权限和身份的
- lock_file=/usr/local/nagios/var/nagios.lock 定义锁文件
- temp_file=/usr/local/nagios/var/nagios.tmp 临时文件
- service_check_timeout 设定服务检测的超时时间,默认为60秒;
- host_check_timeout 设定主机检测的超时时间,默认为30秒;
- notification_timeout
- 设定通知信息发送尝试的超时时间,默认为30秒;
2、resource.cfg是定义宏的配置文件:
- $USER1$=/usr/local/nagios/libexec
- ##定义宏变量的,可以定义32个
-
- /usr/local/nagios/libexec目录下存放的是各种插件,
- nagios对主机或服务等的监控正是通过这些插件来完成的,
-
- 该文件中包含了重要的信息如用户密码等,一般是不允许通过前
- 端的web接口直接访问的
- $USER3$=someuser
- $USER4$=somepassword
-
- cgi要想访问某个用户的个人信息可以调用resource.cfg,但在we
- b接口中是不能访问的
3、objects目录 ##各种对象的配置文件
- commands.cfg 定义各种命令的配置文件
- localhost.cfg 本地主机的配置文件
- switch.cfg 交换机的配置文件
- timeperiods.cfg 时段的配置文件
- contacts.cfg 联系人的配置文件
- printer.cfg 打印机的配置文件
- templates.cfg 模板的配置文件
- windows.cfg Windows主机的配置文件
在实际应用中这些对象的配置文件我们可以自己命名,存放于任何位置,
只要在主配置文件中包含进来就可以了
3.1、定义命令:
“命令”用于描述如何对主机或服务进行状态检测
- define command{
- command_name check-host-alive
- ##command_name的名字必须全局唯一
- command_line $USER1$/check_ping -H
- $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
-
- }
- ##$USER1$/check_ping:引用宏$USER1$路径下的一个叫check_pi
- ng的插件
- ##-H $HOSTADDRESS$
- :-H后跟主机地址,应用到哪个对象上,就是那个主机的地址
- ##-w 3000.0,80%:如果是80%的丢包率,延迟3s,就为警告状态
- -w:警告,后跟达到警告的值,单位ms
- ##-c 5000.0,100%
- 如果有100%的丢包率,且延迟5s,就是危机状态
- ##-p:一共检测几个包
各状态及其表示符如下:
- w —— WARNING
- u —— UNKNOWN
- c —— CRITICAL
- r —— OK(recovery)
- f —— flapping
- s —— 调试宕机时间开始或结束
3.2、定义联系人:
“联系人”对象用于定义某主机设备的拥有者或某问题出现时接受通知者
- define contact{
- contact_name
- nagiosadmin ##这个名字也要全局唯一
- use
- alias Nagios
- Admin ##定义一个别名
-
- email
- nagios@localhost ##联系人的email
- }
-
- timeperiods.cfg用于定义时段的:
- 7x24小时:
- 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
- }
-
- 正常工作日:
- 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
- } generic-contact ##从哪个模板继承,引用模板
3.3、localhost.cfg 定义主机:
“主机”指的是被监控的机器,可是物理主机,也可以是虚拟设备。一个主机对象的定义至少应该包含一个简名(short name)、一个别名、一个IP地址和用到的检测命令
- define host{
- use linux-server ##引用模板
-
- host_name localhost
- ##主机名,全局唯一
- alias localhost ##别名
- address 127.0.0.1 ##ip地址
- }
3.4、定义服务:
“服务”即某“主机”所提供的功能或资源对象,如HTTP服务、存储空间资源或CPU负载等
- define service{
- use
- local-service
- host_name localhost
- ##先说明是在哪个主机上的服务
- service_description PING
- ##服务名不要求全局唯一的,只要在当前主机上唯一就可以了
- check_command
- check_ping!100.0,20%!500.0,60%
- ##说明使用的是check_ping命令
- }
服务不能脱离主机而运行的,所有服务定义时必须要说明是对应于哪一个主机而提供什么服务的。
上面使用的check_ping命令在commands.cfg文件中是有对应的命令的:
- # 'check_ping' command definition
- define command{
- command_name check_ping
- ##需事先定义好命令,然后再在服务中引用的
- command_line $USER1$/check_ping -H
- $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
- }
- ##$HOSTADDRESS$:对应于上面主机中的$HOSTADDRESS$就是127.0
- .0.1
- ##定义service时是有两个参数!100.0,20%和!500.0,60%,就是把
- 对应的参数传递给command中的 $ARG1$和$ARG2$
3.5、再来看一下templates.cfg这个文件,定义模板的:
Nagios通过功能强大的继承引擎来实现基于模板的对象继承。这就意味着可以定义
将某类型的对象的通用属性组织起来定义为对象模板,并在定义其类型中的对象时
直接从此模板继承其相关属性的定义。
- define host{
- name generic-host
- ##模板的名字
- notifications_enabled 1
- ##是否发送通知,为1发送
- event_handler_enabled 1
- ##是否启动额外的处理器
- flap_detection_enabled 1
- ##是否检查flap状态,flap是四个状态中会有不同状态
- 的随机转换
- failure_prediction_enabled 1
- ##是否提前检测prediction失误
- process_perf_data 1
- ##进程性能数据是否输出
- retain_status_information 1
- ##是否保存状态信息
- retain_nonstatus_information 1
- ##是否保存非状态信息的通知
- notification_period 24x7
- ##检测的时间段
- register
- 0
- ##并不是一个真正的主机,定义的是一个模板
- }
下面定义Linux主机的模板:
- define host{
- name linux-server
- ; The name of this host template
- use generic-host
- ; This template inherits other values from the
- generic-host template
- check_period 24x7
- ; By default, Linux hosts are checked round the
- clock
- check_interval 5
- ; Actively check the host every 5 minutes
- retry_interval 1
- ; Schedule host check retries at 1 minute
- intervals
- max_check_attempts 10
- ; Check each Linux host 10 times (max)
- check_command
- check-host-alive ##先检测主机是否是alive状态
- notification_period workhours
- ##什么时段发送通知信息,此处为workhours
-
- ; Note that the notification_period variable is being
- overridden from
-
- ; the value that is inherited from the generic-host
- template!
- notification_interval 120
- ##发送通知的间隔时间,单位分钟
- notification_options d,u,r
- ##d--宕机,u--UNREACHABLE,r--UP(重新上线)
- contact_groups admins
- ##在定义好的时段内给这个联系人组发送通知信息
- register 0
- ; DONT REGISTER THIS DEFINITION - ITS NOT A
- REAL HOST, JUST A TEMPLATE!
- }
##service要定义相应的服务模板
3.6、对象间的依赖关系
为了描述Nagios对象间的依赖关系,这里要用到两个术语:master(被依赖的主机或服务)和dependent(依赖关系中的依赖于master的Nagios对象)。
可以定义对象间的依赖关系,为某对象定义其父对象,也可以指定此依赖关系生效的时段。
- 如定义主机间的依赖关系:
- define hostdependency
- {
- dependent_host_name backuphost
- ##定义dependent主机
- host_name vpnserver1 ##定义master主机
- dependency_period maintenancewindows
- ##定义依赖时段
- }
-
- 服务间依赖关系的定义类似于主机间的依赖关系,例如:
-
- define servicedependency
- {
- host_name mysqlserver ##master主机名
- service_description mysql ##master服务名
- dependent_hostgroup_name apacheservers
- ##dependent主机组名
- dependent_service_description webservice
- ##denpendent服务名
- execution_failure_criteria c,u
- ##定义master为何种状态时不再对依赖
-
- ##于此master的主机或服务进行检测,
- notification_failure_criteria c,u,w
- ##用于定义master处于何种状态时不会
- ##发送dependent相关的主机问题通知到联系人
- }
|
|