1、设置Apache2服务器,让apache2启动时加载nagios
Nagios安装好之后,我们需要从浏览器去察看nagios的监控信息,否则如果直接去看nagios的log文件,人会疯掉的。
那么,如何才能从浏览器看到nagios的信息呢?这时需要用到apache2服务器,也就是基于apache2的基础上,通过浏览器去访问nagios的数据信息。
我们要做的工作只是配置一下apache,即修改配置文件。要修改的内容在nagios编译的时候已经生成,为sample-config目录下的httpd.conf文件。将该文件的全部内容添加到apache2的主配置文件中即可!
2、nagios的授权
用户在从浏览器中查看nagios的监控信息时,我们可以对不同用户作一些限制。比如某些用户可以所有信息,某些用户只能查看部分信息。
首先,使用htpasswd添加授权用户(即可以从浏览器登陆nagios监控界面的用户)。如:
htpasswd –c /usr/local/nagios/etc/htpasswd.users nagiosadmin
然后输入密码,即可用该用户名密码登陆nagios。
在这里插一句,nagios启动之后,所有的信息均在var目录下的log文件中,所有nagios的信息之所以能够在浏览器中显示出来,需要一个工具,就是CGI,是它把信息显示在网页上。用户权限的限制正是在这里!
接下来,在cgi的主配置文件中,有一个变量use_authentication,默认是1,即需要认证。开始的时候我建议大家把这个值改为0,是为了省事,这样配置起来确实方便,只此一步,就可以查看nagios的监控信息。但是,这样的话,就是所有htpasswd授权的用户均可以查看所有信息,很不安全。我们需要对不同的用户进行限制。所以建议将use_authentication改为1,然后再在接下来后面的几个变量中添加各种权限的用户。如
authorized_for_system_information
authorized_for_configuration_information
authorized_for_system_commands
authorized_for_all_services
authorized_for_all_hosts
authorized_for_all_service_commands
authorized_for_all_host_commands
。。。。。。
当use_authentication值为0时,这些变量的赋值全部失效,默认为全部用户。
3、nagios配置文件的关系和理解
Nagios能实现的具体的功能正是通过配置文件来表现的。而这些配置文件之间有着千丝万缕的关系。比如services依赖于host,timeperiod和contactgroup等。
Nagios.cfg:
这是nagios的主配置文件,它主要负责管理其他所有跟nagios有关的文件。他定义了nagios的日志文件,缓冲文件,状态信息存放文件等。还有其他所有的配置文件等。这些主要的配置文件如下:
1. hosts.cfg
define host{
host_name #这一项是用来定义标识主机的名字。我们用这个名字在host group和service里标识这个主机。一个主机能定义多个服务。使用适当时,宏$HOSTNAME$里存放了这一项的值。
alias #这一项用来定义主机的一个完整名字或描述。主要是和使你能理容易的标识一个主机。使用适当时,宏$HOSTALIAS$里存放了这一项的值。
address #这一项是用来定义主机的地址。一般而言是主机的IP。当然,你也能够使用一个FQDN来标识你的主机,在没有可访问DNS服务器服务的情况下这种方法会引起问题。使用适当时,宏$ HOSTADDRESS $里存放了这一项的值。
max_check_attempts #这一项用来定义在检测返回结果不是OK时,nagios重试检测命令的次数。设置这个值为1会导致nagios一次也不重试就报警。
check_period #这一项用一个time period项的名字来定义在哪段时间内激活对这台主机的主动检测。time period是定义在别的文件里的配置项,我们可以在这里用名字来引用她。
contact_groups #这是一个联系组列表。我们用联系组的名字来引用她们。多个联系组间用“,”来分隔。
notification_interval #这一项用来定义当一个服务仍然down或unreachable时,我们间隔多久重发一次通知给联系组。
notification_period #这一项用一个time period定义来标识什么时间段内给联系组送通知。这里我们用time period定义的名字来引用她。
notification_options #这一项用来决定发送通知的时机。选项有:d = 当有down状态时发送通知,u = 当有unreachable状态时发送通知, r = 当有服务recoveries时发送通知,f = 当主机启动或停机时发送通知。如果你给一个n选项,那么永远不会发送通知。
}
2. hostgroups.cfg
define hostgroup{
hostgroup_name #主机组名称,通常定义得较短
alias #主机组别名,通常定义得较长
members #主机组成员
}
3. services.cfg
define service{
host_name #主机名称
service_description #服务描述
check_command #执行命令
max_check_attempts #最大失败尝试次数,值为1时只报警不重
新检测
normal_check_interval #常规检测间隔时间,默认为60分钟
(常规检测是指无论服务状态是否正常,
检测次数达到“最大次数”时)
retry_check_interval #失败尝试间隔时间,默认为60分钟
(失败尝试是指服务状态不正常,检查
次数达到“最大次数”时)
check_period #检测时间段
notification_interval #当服务状态不正常时通知联系人的间隔
时间,值为0时不通知联系人
notification_period #通知联系人时间段
notification_options #通知联系人选项,w警告,u未知,c
危急,f启动和停止,n不发送通知
contact_groups #联系人组
}
4. servicegroups.cfg
define servicegroup{
servicegroup_name #服务组名称,通常定义得较短
alias #服务组别名,通常定义得较长
members #服务组成员
}
5. contacts.cfg
define contact{
contact_name #这个指令用来定义一个联系人的简称。他会在定义contactgroup时被引用到。在相应的环境中,宏定义$CONTACTNAME$会包含这个值。
alias #这个指令是为了定义一个联系人的具体的描述。在相应的环境中,宏定义$CONTACTALIAS$会包含这个值。
host_notification_period #这个指令是为了定义,能够通知Contact中定义的那个简称联系人,关于主机有问题或者恢复正常状态的时间段。你可以把他想象成能够通知Contact关于主机的在线时间。
service_notification_period #这个指令是为了定义,能够通知Contact中定义的那个简称联系人,关于服务的问题或恢复正常的时间段。
host_notification_options #这个指令为了定义主机在什么状态下会给联系人发通知。各个参数的描述如下:d=当主机的状态处于down时,发送通知;f=当主机状态处于stop时发送通知。r=当主机恢复up状态时发送通知。n=什么状态下都不发送通知。
service_notification_options #这个指令为了定义服务在什么状态下会给联系人发通知。各个参数的描述如下:w=当服务处于警告状态时发送通知 u=当服务的状态处于unknown时,发送通知;f=当服务状态处于启动和停止时发送通知。c=当服务处于Critical状态时发送通知。n=什么状态下都不发送通知。
host_notification_commands #这个指令是为了定义一个通知联系人关于主机问题或恢复正常的联系手段的一个列表。多个手段之间用逗号隔开。
service_notification_commands #这个指令是为了定义一个通知联系人关于服务问题或恢复正常的联系手段的一个列表。多个手段之间用逗号隔开。
email #这个指令是为了定义联系人的email地址。这个将取决于你是如何定义你的notification commands.它可以用来给联系人发送紧急邮件。在相应的环境中。宏定义$CONTACTEMAIL$将会包含它的值。
}
6. contactgroups.cfg
define contactgroup{
contactgroup_name #联系组名称,通常定义得较短
alias #联系组别名,通常定义得较长
members #联系组成员
}
7. timeperiods.cfg
define timeperiod{
timeperiod_name #时间段名称,通常定义得较短
alias #时间段别名,通常定义得较长
sunday #星期日时间段
monday #星期一时间段
tuesday #星期二时间段
wednesday #星期三时间段
thursday #星期四时间段
friday #星期五时间段
saturday #星期六时间段
}
8. commands.cfg
define command{
command_name #定义命令的简称
command_line #定义当服务进行时Nagios要执行的动作。在命令执行以前,所有合法的宏都要被他们的值代替。
}
阅读(2923) | 评论(0) | 转发(0) |