grep ^User /usr/local/apache2/conf/httpd.conf
DirectoryIndex index.php
#setting for nagios
ScriptAlias /nagios/cgi-bin /opt/nagios/sbin
<Directory "/opt/nagios/sbin">
Options ExecCGI AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthType Basic
AuthUserFile /opt/nagios/etc/htpasswd
//用于此目录访问身份验证的文件
Require valid-user
</Directory>
Alias /nagios /opt/nagios/share
<Directory "/opt/nagios/share">
Options None AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthType Basic
AuthUserFile /opt/nagios/etc/htpasswd
//用于此目录访问身份验证的文件
Require valid-user
</Directory>
|
/opt/apache/bin/htpasswd -mbc /opt/nagios/etc/htpasswd test 123456
[url]http://10.0.2.216/nagios[/url] 会弹出对话框要求输入用户名密码,输入test,密码12345,就可以进入nagios的主页面了。但是可以发现什么也点不开,因为nagios还没启动呢!下面的工作就是修改配置文件,增加要监控的主机和服务。
联系人
|
contact
|
出了问题像谁报告?一般当然是系统管理员了
|
监控时间段
|
timeperiod
|
7X24小时不间断还是周一至周五,或是自定义的其他时间段
|
被监控主机
|
host
|
所需要监控的服务器,当然可以是监控机自己
|
监控命令
|
command
|
nagios发出的哪个指令来执行某个监控,这也是自己定义的
|
被监控的服务
|
service
|
例如主机是否存活,80端口是否开,磁盘使用情况或者自定义的服务等
|
cfg_file=/usr/local/nagios/etc /objects /contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc /objects /contacts.cfg
//联系人配置文件路径
cfg_file=/usr/local/nagios/etc /objects /hostgroups.cfg
//主机组配置文件路径
cfg_file=/usr/local/nagios/etc /objects /hosts.cfg
//主机配置文件路径
cfg_file=/usr/local/nagios/etc /objects /services.cfg
//服务配置文件路径
cfg_file=/usr/local/nagios/etc /objects /timeperiods.cfg
//监视时段配置文件路径
|
将check_external_commands=0改为check_external_commands=1
authorized_for_system_information=nagiosadmin,test
authorized_for_configuration_information=nagiosadmin,test
authorized_for_system_commands=test
//多个用户之间用逗号隔开
authorized_for_all_services=nagiosadmin,test
authorized_for_all_hosts=nagiosadmin,test
authorized_for_all_service_commands=nagiosadmin,test
authorized_for_all_host_commands=nagiosadmin,test
|
那么上述用户名打那里来的呢?是执行命令 /opt/apache/bin/htpasswd -mbc /opt/nagios/etc/htpasswd test 所生成的,这个要注意,不能随便加没有存在的验证用户,为了安全起见,不要添加过多的验证用户。
define timeperiod{
timeperiod_name 24x7 //时间段的名称,这个地方不要有空格
alias 24 Hours A Day,7Days 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 contact{
contact_name test //联系人的名称,这个地方不要有空格
alias sys admin
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
email
[email protected]
pager 1338757xxxx
address1
[email protected]
address2 555-555-5555
}
|
service_notification_period
24x7
服务出了状况通知的时间段,这个时间段就是上面在timeperiods.cfg中定义的.
|
host_notification_period
24x7
主机出了状况通知的时间段, 这个时间段就是上面在timeperiods.cfg中定义的
|
service_notification_options
w,u,c,r
当服务出现w—报警(warning),u—未知(unkown),c—严重(critical),或者r—从异常情况恢复正常,在这四种情况下通知联系人.
|
host_notification_options
d,u,r
当主机出现d—当机(down),u—返回不可达(unreachable),r—从异常情况恢复正常,在这3种情况下通知联系人
|
service_notification_commands
notify-by-email
服务出问题通知采用的命令notify-by-email,这个命令是在commands.cfg中定义的,作用是给联系人发邮件.至于commands.cfg之后将专门介绍
|
host_notification_commands
host-notify-by-email
同上,主机出问题时采用的也是发邮件的方式通知联系人
|
email
[email protected]
很明显,联系的人email地址
|
pager
1338757xxxx
联系人的手机,如果支持短信的通知的话,这个就很有用了.
|
alias是联系人别名,address是地址 意义不大.
|
define contactgroup{
contactgroup_name sagroup
//联系人组的名称,同样不能空格
alias System Administrators //别名 members test
//组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔
} |
define host{
host_name nagios-server
//被监控主机的名称,最好别带空格
alias nagios server //别名 address 10.0.2.216 //被监控主机的IP地址,我现在暂时先填本机的IP check_command check-host-alive //监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活 max_check_attempts 5 //检查失败后重试的次数 check_period 24x7 //检查的时间段24x7,同样来自于我们之前在timeperiods.cfg中定义的
contact_groups
sagroup
//联系人组,上面在contactgroups.cfg中定义的sagroup
notification_interval
10
//提醒的间隔,每隔10秒提醒一次
notification_period
24x7
//提醒的周期, 24x7,同样来自于我们之前在timeperiods.cfg中定义的
notification_options
d,u,r
//指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍
} |
define hostgroup{
hostgroup_name sa-servers //主机组名称 alias sa Servers //别名 members nagios-server
//组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的
} |
#service definition
define service{
host_name nagios-server
//被监控的主机,hosts.cfg中定义的
service_description check-host-alive
//这个监控项目的描述(也可以说是这个项目的名称),可以空格,我们这里定义的是监控这个主机是不是存活
check_command check-host-alive
//所用的命令,是commands.cfg中定义的
max_check_attempts 5
normal_check_interval 3
retry_check_interval 2
check_period 24x7
//监控的时间段,是timeperiods.cfg中定义的
notification_interval 10
notification_period 24x7
//通知的时间段, ,是timeperiods.cfg中定义的
notification_options w,u,c,r
//在监控的结果是wucr时通知联系人,具体含义看前文.
contact_groups sagroup
//联系人组,是contactgroups.cfg中定义的
}
|
Total Warnings: 0
Total Errors:
0
Things look okay - No serious problems were detected during the pre-flight check |
n 登陆[url]http://10.0.2.216 /nagios/[/url]就可以查看上面配置的监控内容了:
要实现资源和服务两个方面的监控,需要配置服务器端(nagios server)及被监控端(NRPE-nagios remote plugin executor).为了能顺利地、有条理的部署nagios 监控平台,一个好的工作风格是在nagios server 自身实现服务和资源的监控,然后再在其他监控端部署nrpe,从nagios server 端用check_nrpe 测试通过后,再在nagios server 配置文件中逐一增加监控项目。当然如果只是监控服务而不监控主机资源,则被监控端不做任何nrpe 的安装。为了方便初学者更容易上手和成功,我们就从简单的步骤开始。
1)增加用户
useradd nagios
passwd nagios
2)安装nagios 插件
tar zvxf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure --prefix=/opt/nagios
make
make install
3)修改目录权限
chown -R nagios:nagios /opt/nagios
4)安装nrpe
tar zxvf nrpe-2.8.tar.gz
cd nrpe-2.8
./configure –prefix=/opt/nagios
make all
(1) 安装check_nrpe 这个插件
make install-plugin
(2) 安装deamon
make install-daemon
(3) 安装配置文件
make install-daemon-config
(4) 编辑nrpe配置文件
vim /opt/nagios/etc/nrpe.cfg(更改如下)
allowed_hosts=127.0.0.1,192.168.10.8
默认为allowed_hosts=127.0.0.1
5) 启动nrpe
/opt/nagios/bin/nrpe -c /opt/nagios/etc/nrpe.cfg -d
6) 查看NRPE 是否已经启动
netstat -nltp |grep nrpe
tcp 0 0 0.0.0.0:5666 0.0.0.0:*
LISTEN 5163/nrpe
7) 测试NRPE 是否则正常工作
之前安装了check_nrpe 这个插件用于测试,现在就是用的时候.执行
/opt/nagios/libexec/check_nrpe -H localhost
NRPE v2.8
看到已经正确返回了NRPE 的版本信息,说明一切正常
之前已经将nagios 运行起来了,现在要做的事情是: 安装check_nrpe 插件
在commands.cfg 中创建check_nrpe 的命令定义,因为只有commands.cfg
中定义过的命令才能在services.cfg 中使用创建对被监控主机的监控项目
1)安装check_nrpe 插件
# tar -zxvf nrpe-2.8.1.tar.gz
# cd nrpe-2.8.1
# ./configure
# make all
# make install-plugin
只运行这一步就行了,因为只需要check_nrpe 插件
2)在apache 刚装好了nrpe,现在我们测试一下监控机使用
check_nrpe 与被监控机运行的nrpe daemon 之间的通信.
# /opt/nagios/libexec/check_nrpe -H 10.0.2.234
NRPE v2.8
看到已经正确返回了NRPE 的版本信息,说明一切正常.
3)在commands.cfg 中增加对check_nrpe 的定义
# vim /opt/nagios/etc/objects/commands.cfg
在最后面增加如下内容
####################################################################
# 'check_nrpe ' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
意义如下
command_name check_nrpe
定义命令名称为check_nrpe,在services.cfg 中要使用这个名称.
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
这是定义实际运行的插件程序.这个命令行的书写要完全按照check_nrpe 这个命令的用法.不知道用法的就用check_nrpe –h 查看-c 后面带的$ARG1$参数是传给nrpe daemon 执行的检测命令,之前说过了它必须是被监控机nrpe.cfg中所定义的那5 条命令中的其中一条.在services.cfg 中使用check_nrpe 的时候要用!带上这个参数
查看被控机NRPE的监控命令
# The following examples use hardcoded command arguments... command[check_users]=/opt/nagios/libexec/check_users -w 5 -c 10 command[check_load]=/opt/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 command[check_hda1]=/opt/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1 command[check_zombie_procs]=/opt/nagios/libexec/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/opt/nagios/libexec/check_procs -w 150 -c 200 |
###########################################
举例:
下面就可以在services.cfg 中定义对apache 主机磁盘容量的监控
define service{
host_name apache
被监控的主机名,这里注意必须是linux 且运行着nrpe,而且必须是hosts.cfg 中定义的
service_description check-disk
监控项目的名称
check_command check_nrpe!check_disk
监控命令是check_nrpe,是在commands.cfg 中定义的,带的参数是check_disk,是
在nrpe.cfg 中定义的
max_check_attempts 5
normal_check_interval 3
retry_check_interval 2
check_period 24x7
notification_interval 10
notification_period 24x7
notification_options w,u,c,r
contact_groups sagroup
}
像这样将其余几个监控项目加进来.