剑网三白无色:Nagios安装全过程

来源:百度文库 编辑:北方网 时间:2019/12/06 23:54:20


您查询的关键词是:nagios安装  。如果打开速度慢,可以尝试快速版;如果想保存快照,可以添加到搜藏。
(百度和网页http://www.yeeach.com/digg/story/266的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。)

Yeeach首页   Digg首页   登入   注册   Live   热心的用户   标签集
话题
即将出炉
提交新内容
Yeeach.com 掘客 首页 »技术-网络管理 »Nagios安装全过程
?1已投票
Nagios安装全过程
发表为liangchuan 156 天数 以前 (http://bbs.asiacom-online.com)查看个人信息
分类/ 组别:技术-网络管理 |标签:nagiosnms网络管理
Nagios是一款企业级网络监控系统,它功能之强大,管理之简单,使得很多大型网络公司都对它有高度的称赞,并把它投入到自己的网络环境。
Nagios功能非常强大,它不但可以监控网络运行状态,还可以监控到服务器的CPU,MEM占用,以及同时在线的USERs,和对各种服务的监控。 Nagios功能强大主要还不只这些,它最出色的功能就是,可以24*7监控,24*7自动警报通知,通知方式可以是邮件,也可以是短信,还可以自己写段 代码,用其他方式通知,譬如桌面泡泡等。
这么出色的功能是的OPS人员不在每天忙碌着查询每台机器的运行状态,而可以把省下来的时间投入别的工作,当邮件来了,或者是短信通知服务器出状况了,哪怕是一个warning,OPS都可以在第一时间内知道!
这么强大的管理系统,就让我们看看它是怎样建立,怎么工作的吧。
第一部分:安装准备
1、 服务器环境,linux或者Unix,bsd系统都可以。
2、 Apache环境。
3、 到http://www.nagios.org/下载最新版本的nagios,nagios-plugins以及nrpe;
我们这次用到的是nagios-2.10.tar.gz
nagios-plugins-1.4.10.tar.gz
nrpe-2.10.tar.gz
4、 GCC编译器,如果需要nagios管理的网络拓扑图,要安装gdlib,libpng,libjpeg。
第二部分:安装
这里我用的是root用户进行安装的,一般情况下最好用别的sudo用户,原因很简单,安全。
1、 nagios安装。
# groupadd nagios && useradd nagios -g nagios -M –r //建立nagios的运行用户和组
# tar -zxf ./ nagios-2.10.tar.gz
# cd ./nagios-2.10
# ./configure –prefix=/usr/local/nagios
# make all && make install
# chown –R nagios:nagios /usr/local/nagios //把nagios文件夹给nagios用户
# make install-init && make install-commandmode && make install-config //分别安装nagios启动脚本、cgi文件和config文件。
# ls /usr/local/nagios/ //如果安装目录下有etc、bin、 sbin、 share、 var则说明nagios安装成功。
2、 nagios插件安装。
Nagios是一个框架,真正的所有的监控工作全部是由nagios插件来完成的,而nagios只是做一个汇总,把监控结果整理的明了之后呈现到用户面前。(如果语言比较N的话,可以尝试自己写nagios插件)
# tar -zxf ./nagios-plugins-1.4.10.tar.gz
# cd ./nagios-plugins-1.4.10
# ./configure –prefix=/usr/local/nagios //注意这里要把安装目录与nagios安装目录相同
# make && make install //安装完毕之后回在/usr/local/nagios/下产生一个libexec的目录
# ls /usr/local/nagios/libexec //里面有很多插件,安装完成
第三部分:配置
1. 配置apache
因为我们最终是通过apache访问nagios的,直接访问nagios目录的是apache的执行用户,很多朋友安装好之后抱怨说不能够通过web执行cgi程序,其实最主要的原因就是这一环节,网上有很多的文档都没有说明这个问题。
Apache的安装省略。
# useradd apache -g daemon -M -r //为apache添加执行用户
# vi /usr/local/apache/conf/httpd.conf //编辑apache配置文件
找到 User xxx
Group xxx
改为 User apache
Group daemon
在文件的最后添加:
####################
#setting for nagios#
####################
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin

AuthType Basic
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user

Alias /nagios /usr/local/nagios/share

AuthType Basic
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user

保存退出
# usermod –G nagios apache //把apache的执行用户添加到nagios组里
//这一步非常重要,是能在web页面执行cgi的关键
# /usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd test
//为访问nagios用户设置权限,这里我们建立了一个用户test,之后提示输入两次密码(我设置的是123456)。
2. nagios配置文件
“大家看到了,nagios安装起来非常简单,但是很多人都觉得nagios很复杂,原因就是nagios的配置文件太多,太复杂。”网上的文档都这么说,但是我却不怎么复杂,建立过一次文件之后估计就能轻车熟路了。
如果你想监控一台主机,首先要配置nagios的主体配置文件,譬如执行用户,web刷新频率,cgi的执行权限等等,然后1、你必须在 nagios里把主机定义好;2、要对这个主机监控什么服务,针对每一台主机定义服务;3、如果服务出错了要及时通知,定义联系人;4、我们的监控的时间 段,以及通讯我们的时间段,定义时间;5、如果监控的机器多了,为了容易管理,我们可以把主机分组,定义主机组;6、监控一个服务,需要用到哪个插件,注 册插件。比较重要的就这么些了,下面让我们一个一个来看。
i. 主体配置文件nagios.cfg
这个文件是nagios的主体配置文件,我们需要修改以下几个地方:
注释行:
#cfg_file=/usr/local/nagios/etc/localhost.cfg
去掉以下几行的注释:
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主机组配置文件路径
cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //服务组配置文件路径
cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文件路径
cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监视时段配置文件路径
改check_external_commands=0为check_external_commands=1
//允许在web界面下执行重启nagios、停止主机/服务检查等操作
把command_check_interval的值从默认的1改成command_check_interval=10s(或更高,根据自己需求而定)
ii. CGI脚本控制文件cgi.cfg
首先确保use_authentication=1。
修改
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
这里的test用户,就是
/usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd test
这个用户。如果要添加新管理员,执行:
# /usr/local/apache/bin/htpasswd /usr/local/nagios/etc/htpasswd test1
之后把test1用户添加到上面的cgi.cfg里的授权用户后,多个用户用逗号隔开。
iii. 时间段定义timeperiods.cfg
# vi /usr/local/nagios/etc/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
}
这里我们定义了一个时间段,每天都是00:00-24:00,这个时间段我们给它取个名字叫24x7。在之后的host和service配置文件 里都会用到这里定义的时间短,当然我们还可以定义其他的时间短,譬如说再定义一个24x5的时间段。那么这个文件里就定义了两个时间短,我们可以监控用 24x7的,而警报通知用24x5的,当然这只是打个比方。
iv. 联系人定义contacts.cfg
# vi /usr/local/nagios/etc/contacts.cfg
define contact {
contact_name lele //联系人的名称,这个地方不要有空格
alias System Administrator
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
emailwangl@asiacom-online.com
}
创建了一个名为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
同上,主机出问题时采用的也是发邮件的方式通知联系人
emailwangl@asiacom-online.com
很明显,联系的人email地址
pager 1338757xxxx
联系人的手机,如果支持短信的通知的话,这个就很有用了.
alias是联系人别名,address是地址 意义不大.
按照上面的方式简单的复制修改就可以创建多个联系人了.
v. 联系人组contactgroups.cfg
# vi /usr/local/nagios/etc/contactgroups.cfg
define contactgroup{
contactgroup_name sagroup //联系人组的名称,同样不能空格
alias System Administrator Group //别名
members test //组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔
}
vi. 定义被监控主机hosts.cfg
# vi /usr/local/nagios/etc/hosts.cfg
define host {
host_name Nagios-Server //被监控主机的名称,别带空格
alias Nagios Server //别名
address 192.168.1.201 //被监控主机的IP地址
contact_groups sagroup //联系人组,上面在contactgroups.cfg中定义的sagroup
check_command check-host-alive //监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活
max_check_attempts 3 //检查失败后重试的次数
check_period 24x7 //检查的时间段24x7,同样来自于我们之前在timeperiods.cfg中定义的
notification_interval 50 //提醒的间隔,每隔50分钟提醒一次
notification_period 24x7 //提醒的周期, 24x7,同样来自于我们之前在timeperiods.cfg中定义的
notification_options d,u,r //指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍
}
通过简单的复制修改就可以定义多个主机了.
vii. 主机组定义hostgroups.cfg
# vi /usr/local/nagios/etc/hostgroups.cfg
define hostgroup{
hostgroup_name sa-servers //主机组名称
alias sa Servers //别名
members nagios-server //组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的
}
viii. 监控服务定义services.cfg
这部分是整个监控系统的核心部分. 用nagios主要是监控一台主机的各种信息,包括本机资源,对外的服务等等.这些在nagios里面都是被定义为一个个的项目(nagios称之为服 务,为了与主机提供的服务相区别,我这里用项目这个词),而实现每个监控项目,则需要通过services.cfg文件中定义的命令.
# vi /usr/local/nagios/etc/services.cfg
define service{
host_name nagios-server //被监控的主机,hosts.cfg中定义的
service_description Check Disk //这个监控项目的描述(也可以说是这个项目的名称),可以空格,我们这里定义的是监控这个主机是不是存活
check_command check_local_disk!10%!5%!/ //所用的命令,是commands.cfg中定义的,其中!后面跟的是命令后面需要跟的参数,多个参数可以用多个!来追加,这里 check_local_disk的第一个参数是10%第二个参数是5%
max_check_attempts 3
normal_check_interval 3
retry_check_interval 2
check_period 24x7 //监控的时间段,是timeperiods.cfg中定义的
notification_interval 50
notification_period 24x7 //通知的时间段, ,是timeperiods.cfg中定义的
notification_options w,u,c,r //在监控的结果是wucr时通知联系人,具体含义看前文.
contact_groups sagroup //联系人组,是contactgroups.cfg中定义的
}
可以看到基本上所有的成员都是已经定义的.同样的将上面的内容复制修改,就可以定义多个服务。
ix. 插件注册commands.cfg
# vi /usr/local/nagios/etc/commands.cfg
define command{
command_name check-host-alive
//在hosts.cfg和services.cfg中,check_command所对应的命令名
command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1
//其中$USER1$是在resource.cfg文件中定义的,代表插件的安装路径.就如我们上面看到的那样$USER1$=/usr/local/nagios/libexec,至于$HOSTADDRESS$,则默认被定义为监控主机的地址.
}
我们在services.cfg中定义了对Nagios-Server执行check-host-alive命令,实际上就是执行了 /usr/local/nagios/libexec/check_ping -H 192.168.1.201(Nagios-Server的ip地址) -w 3000.0,80% -c 5000.0,100% -p 1
commands.cfg默认已经定义了很多这样的命令,如check_http,check_ftp等,这些命令,我们都可以直接用,但是如果我们要用 的命令这里没有定义,那么我们就需要把/usr/local/nagios/libexec下我们需要用得插件,像上面的格式写到 commands.cfg中,完成插件注册,之后我们就可以在services.cfg和hosts.cfg里调用了。
当我们的services.cfg需要调用命令的时候,就在check_command后面对应写上需要的调用的命令,当命令带参数时,例如:
define command{
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}
其中$ARG1$是参数一,$ARG2$是参数二,当我们在services.cfg里调用的时候,check_command应该对应的写上 check_local_disk!10%!5%!/,这里的3个参数用!追加.例如:
define service{
host_name nagios-server
//被监控的主机,hosts.cfg中定义的
service_description Check Disk
//这个监控项目的描述
check_command check_local_disk!10%!5%!/
max_check_attempts 3
normal_check_interval 3



}
参数的意义可以运行/usr/local/nagios/libexec check_disk –h得知.
第四部分:启动
# /usr/local/apache2/bin/apachectl -k start
//启动apache。
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
//检查配置是否有误。
# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
//用守护进程在后台运行nagios或者使用/etc/init.d/nagios start(这条命令的前提是,编译安装nagios的时候必须执行了make install-init。)
在任意一台机器上打开网页192.168.1.201/nagios
输入用户名test 密码123456
登入,就可以看到nagios的真正界面了。
第五部分:监控其它机器的本地信息
监控其它机器的本地信息的时候,必须要借助另外一个插件nrpe,这个插件需要安装到被监控的机器上。
工作原理是:插件nrpe在被监控机上开启一个daemon,通过这个daemon来和监控主机建立一条ssl加密通道,通过这条通道来传送被监控机的本地信息,达到监控的目的。
装在被监控机上的daemon就相当于一个nagios的传递员,命令行从nagios监控主机发出,然后daemon接受到信息,就会执行这条命令行,执行的方式,其实是和nagios主机是一样的,所以被监控机上也需要装一套nagios-plugins插件。
例如:nagios主机需要监控被监控机的硬盘信息,就会对被监控机发出一条命令说:“我要看你的硬盘信息。”被监控机nrpe的daemon接到这个命 令之后,就会运行一个插件,来检查被监控机本地硬盘的信息,然后插件把信息反馈到nrpe,nrpe通过ssl通道再把这些信息反馈到nagios主机。
下面让我们来看看具体来怎么样安装。
1、 需要两个包:nrpe,nagios-plugins,这两个包都可以从www.nagios.org上得到。
2、 需要openssl,openssl的安装过程略
3、 安装:
a) 首先在被监控机上建立nagios工作的用户和组
# groupadd nagios && useradd nagios -g nagios -M –r
b) 安装nagios-plugins插件
# tar zxvf nagios-plugins-1.4.10.tar.gz
# cd ./nagios-plugins-1.4.10
# ./configure --prefix=/usr/local/nagios
# make && make install
c) 更改nagios文件夹所属用户和组
# chown nagios:nagios /usr/local/nagios/
# chown -R nagios:nagios /usr/local/nagios/libexec/
d) 安装nrpe
# tar zxvf nrpe-2.10.tar.gz
# cd ./nrpe-2.10
# ./configure
# make all
# make install-plugin
//安装check_nrpe插件,在被监控机上安装这个插仅仅是为了测试,而这个插件是nagios监控主机需要安装的,这个插件就是向nrpe的daemon发命令的工具。
# make install-daemon
//安装daemon到被测试机,等待接受命令。
# make install-daemon-config
//安装配置文件,所有的daemon所接受到得命令都必须通过这个配置文件才能和插件建立联系。
# make install-xinetd
//把nrpe安装到xinetd脚本内,开机自启动。
4、 更改配置文件
a) 更改xinetd启动脚本配置文件。
# vi /etc/xinetd.d/nrpe
# default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
flags = REUSE
socket_type = stream
port = 5666 //服务端口
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 192.168.1.201
//在后面增加监控主机的地址,以空格间隔
}
b) 编辑/etc/services文件,增加NRPE服务
# vi /etc/services
添加:
nrpe 5666/tcp # NRPE
c) 编辑nrpe主配置文件
# vi /usr/local/nagios/etc/nrpe.cfg
把文件里类似的几行改成:
command[check_users]=/usr/local/nagios/libexec/check_users -w 4 -c 6
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 25,20,15
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 10% -c 5% -p / -u GB
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 2 -c 5 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 120 -c 150
这样就完成了被监控机上的插件注册。
5、 测试
a) 重启xinetd服务
# /etc/init.d/xinetd restart
b) 把xinetd服务改为开机自启动
# chkconfig --level 3 xinetd on
c) 测试nrpe安装是否成功
# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
//如果显示:NRPE v2.10 则代表安装成功。
6、 在nagios监控主机上安装check_nrpe插件
# tar zxvf nrpe-2.10.tar.gz
# cd ./nrpe-2.10
# ./configure
# make all
# make install-plugin
安装结束后,测试
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.111
//如果显示:NRPE v2.10 则代表安装成功。
7、 在nagios监控主机注册check_nrpe插件
# vi /usr/local/nagios/etc/commands.cfg
找个合适的地方添入:
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
8、 在services.cfg里添加服务
例如:
define service {
host_namewww.asiacom-online.com
//前提是我必须在hosts.cfg里定义过此主机!!!
service_description Check Disk
check_period 24x7
max_check_attempts 3
normal_check_interval 3
retry_check_interval 2
check_period 24x7
contact_groups sagroup
notification_interval 50
notification_period 24x7
notification_options w,u,c,r
check_command check_nrpe!check_disk
//!后面跟的参数就是在被监控机器上的nrpe.cfg里command[check_disk]方括号内的内容.
}
要监控别的服务只需要复制粘贴.
9、 重新启动nagios服务
a) 检查
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
b) 重启
# /etc/init.d/nagios restart
第六部分:根据自己的需要添加主机,服务,注册插件
最艰难的部分完成了,剩下的工作就只是复制粘贴了.我们根据自己的需要,为了管理的方面,还可以把服务分组,编辑/usr/local/nagios/etc/servicegroup.cfg,具体请参考官方说明文档.
注:
一个服务一定属于一台被监控机,一台被监控机一定属于一个机器组.
一个服务或被监控机的check_command一定要在commands.cfg里注册.
讨论  把此链接加入于... 与朋友分享  已已沉
添加到:       Nagios是一款企业级网络监控系统,它功能之强大,管理之简单,使得很多大型网络公司都对它有高度的称赞,并把它投入到自己的网络环境。 Nagios功能非常强大,它不但可以监控网络运行状态,还可以监控到服务器的CPU,MEM占用,以及同时在线的USERs,和对各种服务的监控。 Nagios功能强大主要还不只这些,它最出色的功能就是,可以24*7监控,24*7自动警报通知,通知方式可以是邮件,也可以是短信,还可以自己写段 代码,用其他方式通知,譬如桌面泡泡等。 这么出色的功能是的OPS人员不在每天忙碌着查询每台机器的运行状态,而可以把省下来的时间投入别的工作,当邮件来了,或者是短信通知服务器出状况了,哪怕是一个warning,OPS都可以在第一时间内知道! 这么强大的管理系统,就让我们看看它是怎样建立,怎么工作的吧。 第一部分:安装准备 1、 服务器环境,linux或者Unix,bsd系统都可以。 2、 Apache环境。 3、 到http://www.nagios.org/下载最新版本的nagios,nagios-plugins以及nrpe; 我们这次用到的是nagios-2.10.tar.gz nagios-plugins-1.4.10.tar.gz nrpe-2.10.tar.gz 4、 GCC编译器,如果需要nagios管理的网络拓扑图,要安装gdlib,libpng,libjpeg。 第二部分:安装 这里我用的是root用户进行安装的,一般情况下最好用别的sudo用户,原因很简单,安全。 1、 nagios安装。 # groupadd nagios && useradd nagios -g nagios -M –r //建立nagios的运行用户和组 # tar -zxf ./ nagios-2.10.tar.gz # cd ./nagios-2.10 # ./configure –prefix=/usr/local/nagios # make all && make install # chown –R nagios:nagios /usr/local/nagios //把nagios文件夹给nagios用户 # make install-init && make install-commandmode && make install-config //分别安装nagios启动脚本、cgi文件和config文件。 # ls /usr/local/nagios/ //如果安装目录下有etc、bin、 sbin、 share、 var则说明nagios安装成功。 2、 nagios插件安装。 Nagios是一个框架,真正的所有的监控工作全部是由nagios插件来完成的,而nagios只是做一个汇总,把监控结果整理的明了之后呈现到用户面前。(如果语言比较N的话,可以尝试自己写nagios插件) # tar -zxf ./nagios-plugins-1.4.10.tar.gz # cd ./nagios-plugins-1.4.10 # ./configure –prefix=/usr/local/nagios //注意这里要把安装目录与nagios安装目录相同 # make && make install //安装完毕之后回在/usr/local/nagios/下产生一个libexec的目录 # ls /usr/local/nagios/libexec //里面有很多插件,安装完成 第三部分:配置 1. 配置apache 因为我们最终是通过apache访问nagios的,直接访问nagios目录的是apache的执行用户,很多朋友安装好之后抱怨说不能够通过web执行cgi程序,其实最主要的原因就是这一环节,网上有很多的文档都没有说明这个问题。 Apache的安装省略。 # useradd apache -g daemon -M -r //为apache添加执行用户 # vi /usr/local/apache/conf/httpd.conf //编辑apache配置文件 找到 User xxx Group xxx 改为 User apache Group daemon 在文件的最后添加: #################### #setting for nagios# #################### ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin AuthType Basic Options ExecCGI AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd Require valid-user Alias /nagios /usr/local/nagios/share AuthType Basic Options None AllowOverride None Order allow,deny Allow from all AuthName "nagios Access" AuthUserFile /usr/local/nagios/etc/htpasswd Require valid-user 保存退出 # usermod –G nagios apache //把apache的执行用户添加到nagios组里 //这一步非常重要,是能在web页面执行cgi的关键 # /usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd test //为访问nagios用户设置权限,这里我们建立了一个用户test,之后提示输入两次密码(我设置的是123456)。 2. nagios配置文件 “大家看到了,nagios安装起来非常简单,但是很多人都觉得nagios很复杂,原因就是nagios的配置文件太多,太复杂。”网上的文档都这么说,但是我却不怎么复杂,建立过一次文件之后估计就能轻车熟路了。 如果你想监控一台主机,首先要配置nagios的主体配置文件,譬如执行用户,web刷新频率,cgi的执行权限等等,然后1、你必须在 nagios里把主机定义好;2、要对这个主机监控什么服务,针对每一台主机定义服务;3、如果服务出错了要及时通知,定义联系人;4、我们的监控的时间 段,以及通讯我们的时间段,定义时间;5、如果监控的机器多了,为了容易管理,我们可以把主机分组,定义主机组;6、监控一个服务,需要用到哪个插件,注 册插件。比较重要的就这么些了,下面让我们一个一个来看。 i. 主体配置文件nagios.cfg 这个文件是nagios的主体配置文件,我们需要修改以下几个地方: 注释行: #cfg_file=/usr/local/nagios/etc/localhost.cfg 去掉以下几行的注释: cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径 cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径 cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主机组配置文件路径 cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文件路径 cfg_file=/usr/local/nagios/etc/hostgroups.cfg //服务组配置文件路径 cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文件路径 cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监视时段配置文件路径 改check_external_commands=0为check_external_commands=1 //允许在web界面下执行重启nagios、停止主机/服务检查等操作 把command_check_interval的值从默认的1改成command_check_interval=10s(或更高,根据自己需求而定) ii. CGI脚本控制文件cgi.cfg 首先确保use_authentication=1。 修改 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 这里的test用户,就是 /usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd test 这个用户。如果要添加新管理员,执行: # /usr/local/apache/bin/htpasswd /usr/local/nagios/etc/htpasswd test1 之后把test1用户添加到上面的cgi.cfg里的授权用户后,多个用户用逗号隔开。 iii. 时间段定义timeperiods.cfg # vi /usr/local/nagios/etc/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 } 这里我们定义了一个时间段,每天都是00:00-24:00,这个时间段我们给它取个名字叫24x7。在之后的host和service配置文件 里都会用到这里定义的时间短,当然我们还可以定义其他的时间短,譬如说再定义一个24x5的时间段。那么这个文件里就定义了两个时间短,我们可以监控用 24x7的,而警报通知用24x5的,当然这只是打个比方。 iv. 联系人定义contacts.cfg # vi /usr/local/nagios/etc/contacts.cfg define contact { contact_name lele //联系人的名称,这个地方不要有空格 alias System Administrator 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 wangl@asiacom-online.com } 创建了一个名为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 wangl@asiacom-online.com 很明显,联系的人email地址 pager 1338757xxxx 联系人的手机,如果支持短信的通知的话,这个就很有用了. alias是联系人别名,address是地址 意义不大. 按照上面的方式简单的复制修改就可以创建多个联系人了. v. 联系人组contactgroups.cfg # vi /usr/local/nagios/etc/contactgroups.cfg define contactgroup{ contactgroup_name sagroup //联系人组的名称,同样不能空格 alias System Administrator Group //别名 members test //组的成员,来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔 } vi. 定义被监控主机hosts.cfg # vi /usr/local/nagios/etc/hosts.cfg define host { host_name Nagios-Server //被监控主机的名称,别带空格 alias Nagios Server //别名 address 192.168.1.201 //被监控主机的IP地址 contact_groups sagroup //联系人组,上面在contactgroups.cfg中定义的sagroup check_command check-host-alive //监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活 max_check_attempts 3 //检查失败后重试的次数 check_period 24x7 //检查的时间段24x7,同样来自于我们之前在timeperiods.cfg中定义的 notification_interval 50 //提醒的间隔,每隔50分钟提醒一次 notification_period 24x7 //提醒的周期, 24x7,同样来自于我们之前在timeperiods.cfg中定义的 notification_options d,u,r //指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍 } 通过简单的复制修改就可以定义多个主机了. vii. 主机组定义hostgroups.cfg # vi /usr/local/nagios/etc/hostgroups.cfg define hostgroup{ hostgroup_name sa-servers //主机组名称 alias sa Servers //别名 members nagios-server //组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的 } viii. 监控服务定义services.cfg 这部分是整个监控系统的核心部分. 用nagios主要是监控一台主机的各种信息,包括本机资源,对外的服务等等.这些在nagios里面都是被定义为一个个的项目(nagios称之为服 务,为了与主机提供的服务相区别,我这里用项目这个词),而实现每个监控项目,则需要通过services.cfg文件中定义的命令. # vi /usr/local/nagios/etc/services.cfg define service{ host_name nagios-server //被监控的主机,hosts.cfg中定义的 service_description Check Disk //这个监控项目的描述(也可以说是这个项目的名称),可以空格,我们这里定义的是监控这个主机是不是存活 check_command check_local_disk!10%!5%!/ //所用的命令,是commands.cfg中定义的,其中!后面跟的是命令后面需要跟的参数,多个参数可以用多个!来追加,这里 check_local_disk的第一个参数是10%第二个参数是5% max_check_attempts 3 normal_check_interval 3 retry_check_interval 2 check_period 24x7 //监控的时间段,是timeperiods.cfg中定义的 notification_interval 50 notification_period 24x7 //通知的时间段, ,是timeperiods.cfg中定义的 notification_options w,u,c,r //在监控的结果是wucr时通知联系人,具体含义看前文. contact_groups sagroup //联系人组,是contactgroups.cfg中定义的 } 可以看到基本上所有的成员都是已经定义的.同样的将上面的内容复制修改,就可以定义多个服务。 ix. 插件注册commands.cfg # vi /usr/local/nagios/etc/commands.cfg define command{ command_name check-host-alive //在hosts.cfg和services.cfg中,check_command所对应的命令名 command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1 //其中$USER1$是在resource.cfg文件中定义的,代表插件的安装路径.就如我们上面看到的那样$USER1$=/usr/local/nagios/libexec,至于$HOSTADDRESS$,则默认被定义为监控主机的地址. } 我们在services.cfg中定义了对Nagios-Server执行check-host-alive命令,实际上就是执行了 /usr/local/nagios/libexec/check_ping -H 192.168.1.201(Nagios-Server的ip地址) -w 3000.0,80% -c 5000.0,100% -p 1 commands.cfg默认已经定义了很多这样的命令,如check_http,check_ftp等,这些命令,我们都可以直接用,但是如果我们要用 的命令这里没有定义,那么我们就需要把/usr/local/nagios/libexec下我们需要用得插件,像上面的格式写到 commands.cfg中,完成插件注册,之后我们就可以在services.cfg和hosts.cfg里调用了。 当我们的services.cfg需要调用命令的时候,就在check_command后面对应写上需要的调用的命令,当命令带参数时,例如: define command{ command_name check_local_disk command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ } 其中$ARG1$是参数一,$ARG2$是参数二,当我们在services.cfg里调用的时候,check_command应该对应的写上 check_local_disk!10%!5%!/,这里的3个参数用!追加.例如: define service{ host_name nagios-server //被监控的主机,hosts.cfg中定义的 service_description Check Disk //这个监控项目的描述 check_command check_local_disk!10%!5%!/ max_check_attempts 3 normal_check_interval 3 … … … } 参数的意义可以运行/usr/local/nagios/libexec check_disk –h得知. 第四部分:启动 # /usr/local/apache2/bin/apachectl -k start //启动apache。 # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg //检查配置是否有误。 # /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg //用守护进程在后台运行nagios或者使用/etc/init.d/nagios start(这条命令的前提是,编译安装nagios的时候必须执行了make install-init。) 在任意一台机器上打开网页192.168.1.201/nagios 输入用户名test 密码123456 登入,就可以看到nagios的真正界面了。 第五部分:监控其它机器的本地信息 监控其它机器的本地信息的时候,必须要借助另外一个插件nrpe,这个插件需要安装到被监控的机器上。 工作原理是:插件nrpe在被监控机上开启一个daemon,通过这个daemon来和监控主机建立一条ssl加密通道,通过这条通道来传送被监控机的本地信息,达到监控的目的。 装在被监控机上的daemon就相当于一个nagios的传递员,命令行从nagios监控主机发出,然后daemon接受到信息,就会执行这条命令行,执行的方式,其实是和nagios主机是一样的,所以被监控机上也需要装一套nagios-plugins插件。 例如:nagios主机需要监控被监控机的硬盘信息,就会对被监控机发出一条命令说:“我要看你的硬盘信息。”被监控机nrpe的daemon接到这个命 令之后,就会运行一个插件,来检查被监控机本地硬盘的信息,然后插件把信息反馈到nrpe,nrpe通过ssl通道再把这些信息反馈到nagios主机。 下面让我们来看看具体来怎么样安装。 1、 需要两个包:nrpe,nagios-plugins,这两个包都可以从www.nagios.org上得到。 2、 需要openssl,openssl的安装过程略 3、 安装: a) 首先在被监控机上建立nagios工作的用户和组 # groupadd nagios && useradd nagios -g nagios -M –r b) 安装nagios-plugins插件 # tar zxvf nagios-plugins-1.4.10.tar.gz # cd ./nagios-plugins-1.4.10 # ./configure --prefix=/usr/local/nagios # make && make install c) 更改nagios文件夹所属用户和组 # chown nagios:nagios /usr/local/nagios/ # chown -R nagios:nagios /usr/local/nagios/libexec/ d) 安装nrpe # tar zxvf nrpe-2.10.tar.gz # cd ./nrpe-2.10 # ./configure # make all # make install-plugin //安装check_nrpe插件,在被监控机上安装这个插仅仅是为了测试,而这个插件是nagios监控主机需要安装的,这个插件就是向nrpe的daemon发命令的工具。 # make install-daemon //安装daemon到被测试机,等待接受命令。 # make install-daemon-config //安装配置文件,所有的daemon所接受到得命令都必须通过这个配置文件才能和插件建立联系。 # make install-xinetd //把nrpe安装到xinetd脚本内,开机自启动。 4、 更改配置文件 a) 更改xinetd启动脚本配置文件。 # vi /etc/xinetd.d/nrpe # default: on # description: NRPE (Nagios Remote Plugin Executor) service nrpe { flags = REUSE socket_type = stream port = 5666 //服务端口 wait = no user = nagios group = nagios server = /usr/local/nagios/bin/nrpe server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd log_on_failure += USERID disable = no only_from = 127.0.0.1 192.168.1.201 //在后面增加监控主机的地址,以空格间隔 } b) 编辑/etc/services文件,增加NRPE服务 # vi /etc/services 添加: nrpe 5666/tcp # NRPE c) 编辑nrpe主配置文件 # vi /usr/local/nagios/etc/nrpe.cfg 把文件里类似的几行改成: command[check_users]=/usr/local/nagios/libexec/check_users -w 4 -c 6 command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 25,20,15 command[check_disk]=/usr/local/nagios/libexec/check_disk -w 10% -c 5% -p / -u GB command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 2 -c 5 -s Z command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 120 -c 150 这样就完成了被监控机上的插件注册。 5、 测试 a) 重启xinetd服务 # /etc/init.d/xinetd restart b) 把xinetd服务改为开机自启动 # chkconfig --level 3 xinetd on c) 测试nrpe安装是否成功 # /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 //如果显示:NRPE v2.10 则代表安装成功。 6、 在nagios监控主机上安装check_nrpe插件 # tar zxvf nrpe-2.10.tar.gz # cd ./nrpe-2.10 # ./configure # make all # make install-plugin 安装结束后,测试 /usr/local/nagios/libexec/check_nrpe -H 192.168.1.111 //如果显示:NRPE v2.10 则代表安装成功。 7、 在nagios监控主机注册check_nrpe插件 # vi /usr/local/nagios/etc/commands.cfg 找个合适的地方添入: # 'check_nrpe' command definition define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ } 8、 在services.cfg里添加服务 例如: define service { host_name www.asiacom-online.com //前提是我必须在hosts.cfg里定义过此主机!!! service_description Check Disk check_period 24x7 max_check_attempts 3 normal_check_interval 3 retry_check_interval 2 check_period 24x7 contact_groups sagroup notification_interval 50 notification_period 24x7 notification_options w,u,c,r check_command check_nrpe!check_disk //!后面跟的参数就是在被监控机器上的nrpe.cfg里command[check_disk]方括号内的内容. } 要监控别的服务只需要复制粘贴. 9、 重新启动nagios服务 a) 检查 # /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg b) 重启 # /etc/init.d/nagios restart 第六部分:根据自己的需要添加主机,服务,注册插件 最艰难的部分完成了,剩下的工作就只是复制粘贴了.我们根据自己的需要,为了管理的方面,还可以把服务分组,编辑/usr/local/nagios/etc/servicegroup.cfg,具体请参考官方说明文档. 注: 一个服务一定属于一台被监控机,一台被监控机一定属于一个机器组. 一个服务或被监控机的check_command一定要在commands.cfg里注册.">           |  书签
评论/ 意见有谁投票过相关链接
评论/ 意见
请登入后发表评语 或者注册新用户here.
谁人已为本作品投过票
相关链接
注册登入
登入
用户名:
密码:
记住密码: 更多相关
注册
用户名:
电子邮件:
密码:
验证密码:
更多相关
今日热门
话题
1
Measuring User Experience Perf...1
五大创新——解读彩铃业务持续发展的秘密...1
B2c杂思:从业务角度看相关推荐(4)...1
B2c杂思:从业务角度看相关推荐(3)...1
B2c杂思:从业务角度看相关推荐(2)...
分类/ 组别
web2.0-电子商务web2.0-社区web2.0-交互设计web2.0-互联网观察web2.0-创业web2.0-SEOweb2.0-web2.0观察web2.0-新媒体web2.0-Resourceweb2.0-商业模式web2.0-广告web2.0-搜索引擎技术-python技术-高性能服务器技术-Java技术-VOIP技术-Javascript&AJAX技术-架构技术-Mozilla技术-PHP技术-软件工程技术-数据库技术-安全技术-P2P技术-Ruby on Rails技术-操作系统技术-软件技术-网络管理商业观察技术-web服务器技术-智能终端开发产品战略技术-数据挖掘市场营销电信技术管理金融业务CRM&ERP资源站点3G&无线互联网&增值业务
最热的五个标签
javaweb2.0增值业务无线互联网电子商务更多相关
最新留言
完全同意上面的看法....更多相关
Yeeach.com Personal Digg is Powered ByPligg
Powered ByPligg