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
的主配置文件,它主要负责管理其他所有跟
nagios
有关的文件。他定义了
nagios
的日志文件,缓冲文件,状态信息存放文件等。还有其他所有的配置文件等。这些主要的配置文件如下:
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
选项,那么永远不会发送通知。
}
define hostgroup{
hostgroup_name #
主机组名称,通常定义得较短
alias #
主机组别名,通常定义得较长
members #
主机组成员
}
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 #
联系人组
}
define servicegroup{
servicegroup_name #
服务组名称,通常定义得较短
alias #
服务组别名,通常定义得较长
members #
服务组成员
}
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$
将会包含它的值。
}
define contactgroup{
contactgroup_name #
联系组名称,通常定义得较短
alias #
联系组别名,通常定义得较长
members #
联系组成员
}
define timeperiod{
timeperiod_name #
时间段名称,通常定义得较短
alias #
时间段别名,通常定义得较长
sunday #
星期日时间段
monday #
星期一时间段
tuesday #
星期二时间段
wednesday #
星期三时间段
thursday #
星期四时间段
friday #
星期五时间段
saturday #
星期六时间段
}
define command{
command_name #定义命令的简称
command_line #定义当服务进行时Nagios要执行的动作。在命令执行以前,所有合法的宏都要被他们的值代替。
}