|
nagios详细部署文档
一、安装nagios软件
所需软件如下所示:
nagios-3.2.3.tar.gz
nagios-plugins-1.4.15.tar.gz
nrpe-2.8.tar.gz
httpd-2.2.17.tar.gz
php-5.3.6.tar.gz
1.1 安装nagios主程序
useradd nagios
mkdir /opt/nagios
chown nagios.nagios /opt/nagios
解压缩
tar -zxvf nagios-3.2.3.tar.gz
cd nagios-3.2.3
编译,指定安装目录为/opt/nagios
./configure --prefix=/opt/nagios
make all
make install
make install-init
make install-commandmode
make install-config
1.2 安装nagios插件
解压缩
tar -zxvf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
编译,指定路径为之前nagios的安装路径
./configure --prefix=/opt/nagios/
make
安装
make install
ls /opt/nagios/libexec/
会显示安装的插件文件,即所有的插件都安装在libexec这个目录下
1.3 安装apache
tar xzvf httpd-2.2.17.tar.gz
cd httpd-2.2.17
./configure –prefix=/opt/apache
make
make install
修改apache配置:
vim /opt/apache/conf/httpd.conf
将apache的运行用户设置为nagios
从httpd.conf中过滤出当前的apache运行用户
grep ^User /usr/local/apache2/conf/httpd.conf
User nagios
Group nagios
将apache的主页设置为index.php
DirectoryIndex index.php
增加nagios的目录,并且访问此目录需要进行身份验证
在配置文件最后增加如下内容:
#setting for nagios
ScriptAlias /nagios/cgi-bin /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
Alias /nagios /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
| 修改完毕后重启apache
apachectl restart
增加验证用户
也就是通过web访问nagios的时候,必须要用这个用户登陆.在这里我们增加用户test:密码为123456
/opt/apache/bin/htpasswd -mbc /opt/nagios/etc/htpasswd test 123456
查看认证文件的内容
less /opt/nagios/etc/htpasswd
test:OmWGEsBnoGpIc 前半部分是用户名test,后面是加密后的密码
1.4 安装php5并与apache整合
tar xzvf php-5.3.6.tar.gz
cd php-5.3.6
./configure –prefix=/opt/php --with-apxs2=/opt/apache/bin/apxs
安装问题:apxs:Error: Command failed with rc=65536
如出现上述问题请执行:cp /opt/apache/build/libtool /opt/tools/php-5.3.6/
该错误原因为php自带的libtool版本较低,make时有问题
make
make install
修改apache配置
LoadModule php5_module modules/libphp5.so \\这行在配置文件中如已存在,则不必添加
AddType application/x-httpd-php .php .php5 \\在配置文件最后添加
修改完毕后重启apache
apachectl restart
到这里nagios的安装也就基本完成了,你可以通过web来访问了.
http://10.0.2.216/nagios 会弹出对话框要求输入用户名密码,输入test,密码12345,就可以进入nagios的主页面了。但是可以发现什么也点不开,因为nagios还没启动呢!下面的工作就是修改配置文件,增加要监控的主机和服务。
1.5 nagios典型配置
1.5.1 预备知识
Nagios自己定义了一套规则用于配置文件,其中最重要的概念就是”对象”----object.在Nagios里面定义了一些基本的对象,一般用到的有:
联系人
| contact
| 出了问题像谁报告?一般当然是系统管理员了
| 监控时间段
| timeperiod
| 7X24小时不间断还是周一至周五,或是自定义的其他时间段
| 被监控主机
| host
| 所需要监控的服务器,当然可以是监控机自己
| 监控命令
| command
| nagios发出的哪个指令来执行某个监控,这也是自己定义的
| 被监控的服务
| service
| 例如主机是否存活,80端口是否开,磁盘使用情况或者自定义的服务等
| 另外,多个被监控主机可以定义为一个主机组,多个联系人可以被定义为一个联系人组,多个服务还能定义成一个服务组
我们定义一个被监控的服务,当然就要指定被监控的主机,需要监控的时间段,要用哪个命令来完成这个监控操作,出了问题向哪个联系人报告
所有这些对象绝对多数都是需要我们手动定义的,这就是nagios的安装显得复杂的地方.其实了解了原理,做一遍之后余下的工作就是复制粘贴了.下面就开始动手.
1.5.2 修改nagios配置文件
n 修改nagios的主配置文件nagios.cfg
cd /opt/nagios/etc
vi nagios.cfg
注释行#cfg_file=/opt/nagios/etc/objects/localhost.cfg
然后把下面几行的配置文件加以修改:
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
\\这行的作用是允许在web界面下执行重启nagios、停止主机/服务检查等操作
将command_check_interval的值从默认的1改成command_check_interval=10s
\\根据自己的情况定这个命令检查时间间隔,不要太长也不要太短
n 修改CGI脚本控制文件cgi.cfg
第二个要修改的配置文件cgi.cfg,它的作用是控制相关cgi脚本。先确保use_authentication=1。曾看过不少的文章,都是建议把use_authentication的值设置成”0”来取消验证,这是一个十分糟糕的想法。接下来修改default_user_name=test ,再后面的修改在下表列出:
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 所生成的,这个要注意,不能随便加没有存在的验证用户,为了安全起见,不要添加过多的验证用户。
n 定义监控时间段,创建配置文件timeperiods.cfg
vi timeperiods.cfg
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
}
| 定义了一个监控时间段,它的名称是24x7,监控的时间是每天全天24小时
n 定义联系人,创建配置文件contacts.cfg
vi contacts.cfg
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 yahoon@test.com
pager 1338757xxxx
address1 xxxxx.xyyy@icq.com
address2 555-555-5555
}
| 创建了一个名为test的联系人,下面列出其中重要的几个选项做说明
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 yahoon@test.com
很明显,联系的人email地址
| pager 1338757xxxx
联系人的手机,如果支持短信的通知的话,这个就很有用了.
| alias是联系人别名,address是地址 意义不大.
| 按照上面的方式简单的复制修改就可以创建多个联系人了.
n 下面就可以将多个联系人组成一个联系人组,创建文件contactgroups.cfg
vi contactgroups.cfg
define contactgroup{
contactgroup_name sagroup
//联系人组的名称,同样不能空格
alias System Administrators //别名
members test
//组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔
}
|
n 定义被监控主机,创建文件hosts.cfg
[root@localhost etc]# vi hosts.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部分的介绍
}
| 通过简单的复制修改就可以定义多个主机了
n 与联系人可以组成联系人组一样,多个主机也可以组成主机组.创建文件hostgrops.cfg
vi hostgroups.cfg
define hostgroup{
hostgroup_name sa-servers //主机组名称
alias sa Servers //别名
members nagios-server
//组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的
}
|
下面是最关键的了,用nagios主要是监控一台主机的各种信息,包括本机资源,对外的服务等等.这些在nagios里面都是被定义为一个个的项目(nagios称之为服务,为了与主机提供的服务相区别,我这里用项目这个词),而实现每个监控项目,则需要通过commands.cfg文件中定义的命令.
例如我们现在有一个监控项目是监控一台机器的web服务是否正常, 我们需要哪些元素呢?最重要的有下面三点:首先是监控哪台机,然后是这个监控要用什么命令实现,最后就是出了问题的时候要通知哪个联系人?
n 定义监控的项目,也叫服务,创建services.cfg
vi services.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中定义的
}
| 可以看到基本上所有的成员都是已经定义的.同样的将上面的内容复制修改,就可以加上另外两个监控项目:分别监控yahoon和dbpi是否存活
这样整个的配置过程就结束了.虽然功能很简单,但是已经为以后扩展打下了良好的基础.可以放心的告诉大家,以后的工作基本都是复制粘贴啦!!!
n 在运行nagios之前首先做测试
/opt/nagios/bin/nagios -v /opt/nagios/etc/nagios.cfg
看到下面这些信息就说明没问题了
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
| 如果有问题的话就可以按照输出信息来排查,该输出信息非常详细,如果出错请仔细查看该信息
n 启动nagios
service nagios start
n 登陆http://10.0.2.216 /nagios/就可以查看上面配置的监控内容了:
点左边的Hosts
file:///C:/DOCUME%7E1/ZHANGT%7E1/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image004.jpg
再点Services
file:///C:/DOCUME%7E1/ZHANGT%7E1/LOCALS%7E1/Temp/msohtmlclip1/01/clip_image006.jpg
二、监控远程被控机:
要实现资源和服务两个方面的监控,需要配置服务器端(nagios server)及被监控端(NRPE-nagios remote plugin executor).为了能顺利地、有条理的部署nagios 监控平台,一个好的工作风格是在nagios server 自身实现服务和资源的监控,然后再在其他监控端部署nrpe,从nagios server 端用check_nrpe 测试通过后,再在nagios server 配置文件中逐一增加监控项目。当然如果只是监控服务而不监控主机资源,则被监控端不做任何nrpe 的安装。为了方便初学者更容易上手和成功,我们就从简单的步骤开始。
2.1 在被监控机器安装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 的版本信息,说明一切正常
2.2 监控机监控被监控机
之前已经将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的监控命令
cd /opt/nagios/etc
vi nrpe.cfg
找到下面这段话
# 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
| 红色部分是命令名,也就是check_nrpe 的-c参数可以接的内容,等号=后面是实际执行的插件程序(这与commands.cfg中定义命令的形式十分相似,只不过是写在了一行).也就是说check_users就是等号后面/usr/local/nagios/libexec/check_users -w 5 -c 10的简称.
###########################################
举例:
下面就可以在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
}
像这样将其余几个监控项目加进来.
|
|