扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Nagios的配置文件
目前成都创新互联已为成百上千的企业提供了网站建设、域名、网页空间、网站托管、企业网站设计、无棣网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
一、Nagios的主配置文件时nagios.cfg
参数的设置格式为
- Log_file:设置nagios的日志文件
- cfg_file: Nagios对象定义的相关文件,此参数可重复使用多次以指定多个文件;
- cfg_dir: 设定Nagios对象定义的相关文件所在的目录,此目录中的所有文件都会被作为对象
- 定义的文件;此参数可重复使用多次以指定多个目录;
- resource_file: 设定Nagios附加的宏定义的相关文件;
- status_file: 设定Nagios存储所有主机和服务当前状态信息的文件;
- status_update_interval: 设定status_file指定的文件中状态信息的更新频率;
- service_check_timeout: 设定服务检测的超时时间,默认为60秒;
- host_check_timeout: 设定主机检测的超时时间,默认为30秒;
- notification_timeout: 设定通知信息发送尝试的超时时间,默认为30秒;
二、resource_file 变量存储文件 rescource.cfg
在主配置文件中,参数resource_file用于定义所有用户变量(即“宏”)的存储文件,它用于存储对象定义中的可以访问的额外信息,此文件中可以定义的宏可多达32个,它们分别为$USER1$,$USER2$...$USER32,这些宏一般在check命令中引用。通常情况下$USER1$用于引用Nagios插件所在目录这个路径信息,因此,一般不建议修改其值。
$USER1$=/usr/local/nagios/libexec
Nagios 中事先定义了一些宏,它的值依赖于安全上下文,例如:
- HOSTNAME: 用于引用host_name指定所定义的主机的主机名;
- HOSTADDRESS: 用于引用host对象中的address指令的值,它通常可以为IP地址或主机名;
- HOSTDISPLAYNAME: 用于引用host对象中alias指令的值,用以描述当前主机,
- 即主机的显示名称;
- HOSTSTATE:某主机的当前状态,为UP,DOWN,UNREACHABLE三者之一;
- HOSTGROUPNAMES: 用于引用某主机所属的所有主机组的简名,主机组名称之间以逗号分隔;
- LASTHOSTCHECK:用于引用某主机上次检测的时间和日期,Unix时间戳格式;
- LASTHOSTSTATE:用于引用某主机前一次检测时的状态,为UP,DOWN或UNREACHABLE三者之一;
- SERVICEDESC: 用于引用对应service对象中的desccription指令的值;
- SERVICESTATE: 用于引用某服务的当前状态,为OK,WARNING,UNKOWN或CRITICAL
- SERVICEGROUPNAMES: 用于引用某服务所属的所有服务组的简名,服务组名称之间以逗号分隔;
- CONTACTNAME: 用于引用某contact对象中contact_name指令的值;
- CONTACTALIAS: 用于引用某contact对象中alias指令的值;
- CONTACTEMAIL: 用于引用某contact对象中email指令的值;
- CONTACTGROUPNAMES: 用于引用某contact所属的所有contact组的简名,contact组名称
- 之间以逗号分隔;
三、 templates.cfg 定义一些通用的模板,被其他对象引用
###############################################################################
定义一个主机
- define host{ #定义一个主机 定义基本信息 被其他主机引用
- name generic-host ; #主机名称
- notifications_enabled 1 ; Host notifications are enabled
- event_handler_enabled 1 ; Host event handler is enabled
- flap_detection_enabled 1 ; Flap detection is enabled 不稳定检测
- failure_prediction_enabled 1 ; Failure prediction is enabled 启用故障预测
- process_perf_data 1 ; Process performance data 进程性能数据
- retain_status_information 1 ; Retain status information across program restarts 保持状态信息到程序重新启动
- retain_nonstatus_information 1 ; Retain non-status information across program restarts
- notification_period 24x7 ; Send host notifications at any time 发送通知的时段
- register 0 ; 模板
- }
定义主机 引用上面的主机属性
- define host{
- name linux-server ; The name of this host template
- use generic-host ; 引用前面定义的主机 继承它的属性值
- check_period 24x7 ; 检测周期
- check_interval 5 ; 检测频率
- retry_interval 1 ; 重试频率
- max_check_attempts 10 ; 最大确认次数
- check_command check-host-alive ; 检测命令
- notification_period workhours ; 故障通知时间段
- notification_interval 0 ; 发送故障通知的频率,0表示只发送一次
- notification_options d,u,r ;主机处于什么状态下发送通知
- contact_groups admins ; 通知人组
- register 0 ;
- }
其中的notification_options用于指定当主机处于什么状态时应该发送通知。其各状态及其表示符如下:
d —— DOWN
u —— UNREACHABLE
r —— UP(host recovery)
f —— flapping
s —— 调试宕机时间开始或结束
define hostgroup { #定义主机组
hostgroup_name webservers #主机组名
alias Linux web servers #主机组别名
members webserver1 #主机组成员 也可以包含其他主机组
}
###############################################################################
定义一个服务
- define service{
- name generic-service ;
- active_checks_enabled 1 ;
- passive_checks_enabled 1 ;
- parallelize_check 1 ; 并行检查启动 提高性能
- failure_prediction_enabled 1 ; 启用故障预测
- process_perf_data 1 ; 过程性能数据
- check_period 24x7 ; 检测时段
- max_check_attempts 3 ; 检测3次确定状态
- normal_check_interval 10 ; 正常检测周期
- retry_check_interval 2 ; 重试检测周期
- contact_groups admins ; 通知组
- notification_options w,u,c,r ;通知状态
- notification_interval 0 ;发送通知的周期
- notification_period 24x7 ; 发送通知的时间段
- register 0 ;
- }
其中的notification_options用于指定当服务处于什么状态时应该发送通知。其各状态及其表示符如下:
w —— WARNING
u —— UNKNOWN
c —— CRITICAL
r —— OK(recovery)
f —— flapping
s —— 调试宕机时间开始或结束
- define service
- {
- host_name webserver1 主机名称 可以给多台主机定义同一服务
- service_description www
- check_command check_http 检测命令
- check_interval 10 检测周期
- check_period 24x7 检测时间段
- retry_interval 3 重试周期
- max_check_attempts 3 重试检测次数
- notification_interval 30 通知周期
- notification_period 24x7 通知时间段
- notification_options w,c,u,r 通知状态
- contact_groups linux-admins 通知人组
- }
#定义服务组
- define servicegroup{ #定义服务组
- servicegroup_name webservices
- alias All services related to web
- members webserver1,www,webserver2,www
- }
一个服务组的成员通常是某主机上的某服务,其指定时使用
Webwervices 服务组的成员有两个 主机webserver1上的www服务 和主机webserver2上的www服务
##########################################################################
定义命令对象
- define command{
- command_name check_local_swap 命令名字
- command_line $USER1$/check_swap -w $ARG1$ -c $ARG2$ 命令行 }
###########################################################################
定义时段对象
- define timeperiod
- {
- timeperiod_name workinghours 名字
- alias Working Hours, from Monday to Friday 描述名
- 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
- }
###########################################################################
定义联系人对象
- define contact {
- contact_name zhanghui #名称
- alias Mage Education #描述名
- email linuxedu@magedu.com 邮箱地址
- host_notification_period workinghours 主机通知时段
- service_notification_period workinghours 服务通知时段
- host_notification_options d,u,r 主机通知状态
- service_notification_options w,u,c,r 服务通知状态
- host_notification_commands host-notify-by-email 主机通知命令
- service_notification_commands notify-by-email 服务通知命令
- }
notify-service-by-email 和notify-host-by-email 都是命令对象 在命令文件里会定义
定义联系人祖对象
- define contactgroup
- {
- contactgroup_name linux-admins
- alias Linux Administrators
- members zhanghui,zhang
- }
###########################################################################
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流