nagios安装配置流程解析.docx
《nagios安装配置流程解析.docx》由会员分享,可在线阅读,更多相关《nagios安装配置流程解析.docx(24页珍藏版)》请在冰点文库上搜索。
nagios安装配置流程解析
Nagios2.12的安装及其配置流程--辅助原理性说明
----马世贵
1.Nagios能做什么
Nagiosisanopensourcehost,serviceandnetworkmonitoringprogram.
Whousesit?
Lotsofpeople,includingmanybigcompaniesandorganizations
Nagios是一个监控主机、服务器和网络的开放源码软件,很多大的公司和组织都用它实现一些有用的监控功能。
nagios的功能是监控服务和主机,但是他自身并不包括这部分功能的代码,所有的监控、检测功能都是有插件来完成的。
再说报警功能,如果监控系统发现问题不能报警那就没有意义了,所以报警也是nagios很重要的功能之一。
但是,同样的,nagios自身也没有报警部分的代码,甚至没有插件,而是交给用户或者其他相关开源项目组去完成。
nagios安装,是指基本平台,也就是nagios软件包的安装。
它是监控体系的框架,也是所有监控的基础。
打开nagios官方的文档,会发现nagios基本上没有什么依赖包,只要求系统是linux或者其他nagios支持的系统。
不过如果你没有安装apache(http服务),那么你就没有那么直观的界面来查看监控信息了,所以apache姑且算是一个前提条件。
关于apache的安装,网上有很多,照着安装就是了。
安装之后要检查一下是否可以正常工作。
(引用)
所以要使nagios发挥价值,必须要充分利用官网所提供的插件plugins功能,并且要有一个友好的前台显示查看的接口,那就是apache。
当然,如果你足够厉害,也可以自己写插件。
理论上来说,依托nagios监控体系框架,可以实现对目标主机的任何行为的监控,而这些具体行为的实现都是用plugins来实现的。
Nagios最有价值的地方在于实时监控报警体系。
当被监控的对象出现异常时(前提是对方愿意被监控,不然就成了“木马”),可以反馈给服务器信息,服务器根据信息的安全级别采用邮件、短信等方式来通知管理员,减少因为异常故障带来的损失。
2.Nagios不能做什么
Nagios是非常强大的,在于它并不是实现了多少功能,而是可扩展,可灵活的利用插件实现任何监控功能。
但是,nagios只适合于实时监控,虽然它可以采集数据,但是nagios并不适合对历史数据进行展示,除非自己完成非常复杂的操作来实现这一功能。
3.Nagios原理简要分析
Nagios在启动后,会将所有事件排入一个带有时间戳的事件队列中,此队列中包含主动监测事件,被动监测事件,reaper事件以及其他事件。
当Nagios核心进程按照时间戳访问事件队列时,当核心进程发现事件为:
1.主动监测事件:
核心线程会调用fork唤起一个执行线程,执行主动监测。
待主动监测完成后,执行线程将监测结果写入一个无名管道中。
2.reaper事件:
核心线程会定期在事件队列中插入reaper事件。
当核心进程执行reaper事件时,reaper会查询无名管道,看其中是否存在未处理监测结果,如果有,核心进程会处理监测结果,或交由处理程序处理,或写入status.log主配置文件中。
CGI程序会访问主配置文件显示所需内容。
3.被动监测事件:
外部进程将监测结果直接写入一个fifo的有名管道中。
当核心进程执行被动监测时,核心进程访问有名管道,将监测结果交给处理程序或写入status.log主配置文件中。
CGI程序会访问主配置文件显示所需内容。
4.Nagios定义的监控状态
nagios定义了4中监控状态,代表不同的严重级别,除了OK代表正常不用关心外,其余3种都要引起重视.如下表
状态
代码
颜色
正常
OK
绿色,
警告
WARNING
黄色,
严重
CRITICAL
红色,
未知错误
UNKOWN
深黄色
4.安装前的准备
1.安装环境
NagioswasoriginallydesignedtorununderLinux,althoughitshouldworkundermostotherunicesaswell.
我用的环境是:
主机名:
impact
系统:
Redhat9.0;
IP:
192.168.0.178;
该主机作为监控机
注:
监控机:
安装了nagios软件的机器,对监控的数据做处理,并且提供web界面查看和管理.当然也可以对本机自身的信息进行监控.
被监控机:
安装了NRPE等客户端,根据监控机的请求执行监控,然后将结果回传给监控机.
2.所用软件:
nagios-2.12.tar.tar
nagios-plugins-1.4.13.tar.gz
nrpe-2.12.tar.tar
httpd-2.2.11--APACHE安装文件
NSClient-Win32-0.3.5.zip
随着后面的说明,会逐个说明每个软件的功能的。
这些软件也许并不是最新,但这并不是主要矛盾。
Nagios更新到了3.0.3版本,但是就安装来说,和2.12是没有什么区别的,只是在更改配置文件的时候,3.0.3版的几个常见配置文件在objects目录下面,只要懂得了原理,其实都是一样的,改一下目录而已。
对插件plugins来说,无所谓版本不版本的,而且与nagios版本关联不大。
无非是最新的版本可能多了些功能,但是即便最原始的插件,也未必能用上全部的功能,有常用的功能组件就足够了。
5.安装APACHE
资料表明,apache并不是必须的,但是nagios如果没有一个直观的前台显示,那么查看监控对象将是一件费事并且痛苦的事情。
想象下查看nagios日志文件里一行行的字母和通过WEB用图表来进行查看,将是不一样的感觉。
在LINUX/UNIX世界里,APACHE是WEB服务器的首选。
APACHE采用C代码和部分PERL脚本,实现了强大的网络服务器功能。
下载网站为:
www.apache.org
建议下载源码,因为我们不需要很复杂的功能,因此简单的执行下面几个步骤就可以正确的把APACHE安装到系统。
1.解包,配置:
tarzxvfhttpd-2.2.11.tar.gz;cdhttpd-2.2.11;./configure–prefix=/usr/local/apache。
配置参数说明把文件安装到/usr/local/apache目录下。
2.编译、安装
make;makeinstall。
安装完成后,执行命令./usr/local/apache/bin/apachectl–t检查一下apache是否正确安装。
3.可能会显现的问题
当执行了上面的测试指令以后,一般会出现这样的提示:
httpd:
Couldnotdeterminetheserver'sfullyqualifieddomainname,using192.168.0.178forServerName
SyntaxOK
说明:
语法正确,但是域名需要修改下。
这只是一个警告问题,可以在浏览器中输入IP测试:
http:
//192.168.0.178
如果打开网页正常,则证明APACHE安装正常。
上面的警告表示配置出现问题。
解决方法:
修改配置文件conf/httpd.conf
找到行
#ServerName:
80
修改为:
ServerNamewww.你的域名.com:
80
6.安装NAGIOS
Nagios可以运行在各种版本的linux以及主流unix环境。
首先增加用户,修改权限:
Su-l;一定要以root身份安装,不然会提示出错
useraddnagios;增加用户
mkdir/usr/local/nagios;创建目录
chownnagios.nagios/usr/local/nagios;更改用户属组
下面开始安装过程:
1.解包、解压:
tarzxvfnagios-2.12.tar.tar
2.配置:
cdnagios-2.12;./configure-prefix=/usr/local/nagios
3.编译:
makeall;
4.安装:
nagios需要好几步才能完成全部安装,少了每一步都有可能造成某些功能或者组件步完整,这样在后期配置的时候就会出现一些问题。
所以,按照makeall的提示,完成每一步的安装,并且查看提示信息,若出现错误,理解返回。
安装步骤为:
Makeinstall;安装主要的程序、CGI及HTML
Makeinstall-init;运行脚本
Makeinstall-commandmode;给外部命令访问nagios配置文件的权限
Makeinstall-config;把配置文件的模版复制到nagios的安装目录
5.验证程序是否正确安装
切换目录到安装路径(/usr/local/nagios),看是否存在以下5个目录:
etc、bin、sbin、share、var。
如果存在则表明程序被正确的安装到系统了。
下面是这5个目录功能的简要说明:
bin
Nagios执行程序所在目录,nagios文件即为主程序
etc
Nagios配置文件位置,初始安装完后,只有几个*.cfg文件
sbin
NagiosCgi文件所在目录,也就是执行外部命令所需文件所在的目录
Share
Nagios网页文件所在的目录
Var
Nagios日志文件、spid等文件所在的目录
var/archives
Emptydirectoryforthearchivedlogs
var/rw
Emptydirectoryfortheexternalcommandfile
7.安装nagios插件
Nagios只是监控体系的平台和框架,没有插件plugins,nagios将什么都做不了,反过来,有了插件,nagios将会无所不能。
它太灵活,可扩展性太强。
安装过程:
1.解包、解压:
Tarzxvfnagios-plugins-1.4.13.tar.gz;
2.配置:
Cdnagios-plugins-1.4.13;
./configure-prefix=/usr/local/nagios
3.编译、安装
Make;makeall
说明:
配置过程中指定的路径是/usr/local/nagios(并且一定要这么指定,否则安装后在配置文件里会更改更多的选项)。
安装完成后,将在目录:
/usr/local/nagios生成目录libexec(里面有很多可执行文件),这是这些可执行文件,在不同的参数下,实现不同的监控功能。
8.初步配置
将apache的运行用户加到nagios组里面
从httpd.conf中过滤出当前的apache运行用户
grep^User/usr/local/apache/conf/httpd.conf
我的是apache,下面将这个用户加入nagios组
usermod-Gnagiosapache
1.修改APACHE的配置
修改apache的配置文件,增加nagios的目录,并且访问此目录需要进行身份验证
vi/usr/local/apache/conf/httpd.conf,在最后增加如下内容
#settingfornagios200906010
ScriptAlias/nagios/cgi-bin/usr/local/nagios/sbin
OptionsExecCGI
AllowOverrideNone
Orderallow,deny
Allowfromall
AuthName"NagiosAccess"
AuthTypeBasic
AuthUserFile/usr/local/nagios/etc/htpasswd
//用于此目录访问身份验证的文件
Requirevalid-user
Alias/nagios/usr/local/nagios/share
OptionsNone
AllowOverrideNone
Orderallow,deny
Allowfromall
AuthName"NagiosAccess"
AuthTypeBasic
AuthUserFile/usr/local/nagios/etc/htpasswd
//用于此目录访问身份验证的文件
Requirevalid-user
增加验证用户
也就是通过web访问nagios的时候,必须要用这个用户登陆.在这里我们增加用户xiaotian:
密码为12345
/usr/local/apache/bin/htpasswd-c/usr/local/nagios/etc/htpasswd.userstest
Newpassword:
(输入12345)
Re-typenewpassword:
(再输入一次密码)
Addingpasswordforusertest
这里一定要注意,在/usr/local/nagios/etc目录下面生成的文件名为:
Htpasswd.users,而不是htpasswd,这个问题上看个人情况而定,有很多资料上写的都是生成一个htpasswd的文件保存用户名和密码。
即这样:
/usr/local/apache/bin/htpasswd-c/usr/local/nagios/etc/htpasswdtest
但是我这样测试后是不能通过验证的。
建议每个人在基于不同情况下,多做些尝试和测试,这样会好一些。
2.测试小有成果
启动nagios服务:
servicenagiosstart;
启动apache服务:
cd/usr/local/apache/bin;然后:
apachectlstart
输入地址:
http:
//192.168.0.178/nagios/
会提示输入用户名和密码框,正确输入,如果没什么问题,便可以看到nagios的界面了。
哈哈。
。
。
到这一步,也只能看看nagios的首页和文档两个选项,后面的功能还需要继续配置。
9.典型配置nagios
对nagios而言,有两个关键部分,第一就是配置,第二是插件。
配置文件就是调用插件来工作的。
如下图:
services.cfg定义监控项目用某个命令-->
这个命令必须在commands.cfg中定义-->
定义这个命令时使用了libexec下的插件.
在安装nagios时,执行了makeinstall-config这一步,会为我们导入进来一个配置文件的模版,名为:
localhost.Cfg。
推荐把这个文件完整的看一便,这样可以获得一个全局的认识。
然后根据官方文档和loaclhost.Cfg的模版提示,我们将配置文件分成5个部分。
下面分步骤进行:
1.一些理解
Nagios自己定义了一套规则用于配置文件,比较重要的概念就是“对象”
类似于C++里面的类的对象,一个类可以有多个实例化的对象,这些对象有不同的属性,而这个类可以粗略的认为是nagios里面的服务,服务可以生成多个对象。
记住,为了便于理解,仅仅是粗略的做个比喻,而事实上绝非如此。
在Nagios里面定义了一些基本的对象,一般用到的有:
联系人
contact
出了问题像谁报告?
一般当然是系统管理员了
监控时间段
timeperiod
7X24小时不间断还是周一至周五,或是自定义的其他时间段
被监控主机
host
所需要监控的服务器,当然可以是监控机自己
监控命令
command
nagios发出的哪个指令来执行某个监控,这也是自己定义的
被监控的服务
service
例如主机是否存活,80端口是否开,磁盘使用情况或者自定义的服务等
另外,多个被监控主机可以定义为一个主机组,多个联系人可以被定义为一个联系人组,多个服务还能定义成一个服务组.
2.修改配置文件
修改nagios的主配置文件nagios.cfg
切换到/usr/local/angios/etc目录下:
vinagios.Cfg
注释行#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/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
(根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。
主配置文件要改的基本上就是这些,通过上面的修改,发现/usr/local/nagios/etc并没有文件services.Cfg、host.Cfg等文件,呵呵,下面我们就手动创建。
备注:
如果你按照我前面的说明,仔细阅读了localhost.Cfg模版配置文件,那么现在就会明白,主配置文件nagios.Cfg里面的指定配置文件localhost.Cfg现在已经被注释掉了,现在我们要用下面的5个文件来实现具体的配置.
修改CGI脚本控制文件cgi.cfg
vicgi.cfg
第二个要修改的配置文件是cgi.cfg,它的作用是控制相关cgi脚本。
先确保use_authentication=1。
当然,可以把use_authentication的值设置成”0”来取消验证,但并不推荐这样使用,毕竟安全机制是非常重要的。
接下来修改default_user_name=xiaotian,再后面的修改在下表列出:
authorized_for_system_information=nagiosadmin,xiaotian
authorized_for_configuration_information=nagiosadmin,xiaotian
authorized_for_system_commands=xiaotian//多个用户之间用逗号隔开
authorized_for_all_services=nagiosadmin,xiaotian
authorized_for_all_hosts=nagiosadmin,xiaotian
authorized_for_all_service_commands=nagiosadmin,xiaotian
authorized_for_all_host_commands=nagiosadmin,xiaotian
那么上述用户名打那里来的呢?
是执行命令/usr/local/apache/bin/htpasswd–c/usr/local/nagios/etc/htpasswd.userstest
所生成的,这个要注意,不能随便加没有存在的验证用户,为了安全起见,不要添加过多的验证用户。
定义监控时间段,创建配置文件timeperiods.cfg
[root@localhostetc]#vitimeperiods.cfg
definetimeperiod{
timeperiod_name24x7//时间段的名称,这个地方不要有空格
alias24HoursADay,7DaysAWeek
sunday00:
00-24:
00
monday00:
00-24:
00
tuesday00:
00-24:
00
wednesday00:
00-24:
00
thursday00:
00-24:
00
friday00:
00-24:
00
saturday00:
00-24:
00
}
定义了一个监控时间段,它的名称是24x7,监控的时间是每天全天24小时
定义联系人,创建配置文件contacts.cfg
[root@impactetc]#vicontacts.cfg
definecontact{
contact_namexiaotian//联系人的名称,这个地方不要有空格
aliassysadmin
service_notification_period24x7
host_notification_period24x7
service_notification_optionsw,u,c,r
host_notification_optionsd,u,r
service_notification_commandsnotify-by-email
host_notification_commandshost-notify-by-email
emailxiaotian@
pager1590127xxxx
}
创建了一个名为xiaotian的联系人,这个名字可以任意取,但是几个配置文件里的关键性字段是有联系的,xiaotian这个字段要在contactsgroup.cfg文件里要用到。
下面列出其中重要的几个选项做说明
service_notification_period24x7
服务出了状况通知的时间段,这个时间段就是上面在timeperiods.cfg中定义的.
host_notification_period24x7
主机出了状况通知的时间段,这个时间段就是上面在timeperiods.cfg中定义的
service_notification_optionsw,u,c,r
当服务出现w—报警(warning),u—未知(unkown),c—严重(critical),或者r—从异常情况恢复正常,在这四种情况下通知联系人.
host_notification_optionsd,u,r
当主机出现d—当机(down),u—返回不可达(unreachable),r—从异常情况恢复正常,在这3种情况下通知联系人
service_notification_