当前位置:文档之家› nagios安装与配置全过程详细经过

nagios安装与配置全过程详细经过

nagios安装与配置全过程详细经过

nagios是一款企业级网络监控系统,它功能之强大,管理之简单,使得很多大型网络公司都对它有高度的称赞,并把它投入到自己的网络环境。
Nagios功能非常强大,它不但可以监控网络运行状态,还可以监控到服务器的CPU,MEM占用,以及同时在线的USERs,和对各种服务的监控。 Nagios功能强大主要还不只这些,它最出色的功能就是,可以24*7监控,24*7自动警报通知,通知方式可以是邮件,也可以是短信,还可以自己写段 代码,用其他方式通知,譬如桌面泡泡等。
这么出色的功能是的OPS人员不在每天忙碌着查询每台机器的运行状态,而可以把省下来的时间投入别的工作,当邮件来了,或者是短信通知服务器出状况了,哪怕是一个warning,OPS都可以在第一时间内知道!
这么强大的管理系统,就让我们看看它是怎样建立,怎么工作的吧。

第一部分:安装准备

1、 服务器环境,linux或者Unix,bsd系统都可以。
2、 Apache环境。
3、 到https://www.doczj.com/doc/9b16801733.html,/下载最新版本的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/et

c/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@https://www.doczj.com/doc/9b16801733.html,
}

创建了一个名为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@https://www.doczj.com/doc/9b16801733.html,
很明显,联系的人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,这两个包都可以从https://www.doczj.com/doc/9b16801733.html,上得到。

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 https://www.doczj.com/doc/9b16801733.html,
//前提是我必须在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里注册.
为了您的安全,请只打开来源可靠的网址
打开网站 取消
来自: https://www.doczj.com/doc/9b16801733.html,/fengqixuan/blog/item/d27a23f3d55e1243342acc0c.html

相关主题
文本预览
相关文档 最新文档