Nagios配置文件介绍
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 ##定义一个别名
[*]
[*] 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相关的主机问题通知到联系人
[*] }
不错不错,楼主您辛苦了。。。 自从我变成了狗屎,就再也没有人踩在我头上了。 打破老婆终身制,实行小姨股份制。引入小姐竞争制,推广情人合同制。 花前月下,不如花钱“日”下!*^_^* 你的丑和你的脸没有关系。。。。。。 饭在锅里,我在床上*^_^*
页:
[1]