nagios技术文档整理终结版.docx
《nagios技术文档整理终结版.docx》由会员分享,可在线阅读,更多相关《nagios技术文档整理终结版.docx(42页珍藏版)》请在冰豆网上搜索。
nagios技术文档整理终结版
接近两个星期的奋战,nagios的安装搭建以及监控服务自动报警功能终于基本得以实现,现在自己整理一份安装技术手册,方便自己以后查阅和回顾。
一、Nagios试验环境以基本安装
主机名
操作系统
IP
作用
Nagios-Server
Centos5.4
211.162.127.51
监控机
211.162.127.43
Centos5.4
211.162.127.43
被监控机
nagios的功能是监控服务和主机,但是他自身并不包括这部分功能的代码,所有的监控、检测功能都是有插件来完成的。
再说报警功能,如果监控系统发现问题不能报警那就没有意义了,所以报警也是nagios很重要的功能之一。
但是,同样的,nagios自身也没有报警部分的代码,甚至没有插件,而是交给用户或者其他相关开源项目组去完成。
nagios安装,是指基本平台,也就是nagios软件包的安装。
它是监控体系的框架,也是所有监控的基础。
打开nagios官方的文档,会发现nagios基本上没有什么依赖包,只要求系统是linux或者其他nagios支持的系统。
不过如果你没有安装apache(httpd服务),那么你就没有那么直观的界面来查看监控信息了,所以apache姑且算是一个前提条件。
关于apache的安装,网上有很多,照着安装就是了。
安装之后要检查一下是否可以正常工作。
nagios定义了4中监控状态,代表不同的严重级别,除了OK代表正常不用关心外,其余3种都要引起重视.如下表:
状态
代码
颜色
正常
OK
绿色,
警告
WARNING
黄色,
严重
CRITICAL
红色,
未知错误
UNKOWN
深黄色
(一)下载所需软件包
1.Nagios-3.2.0.tar.gz(Nagios主程序软件包)
[root@nagios~]#wget
2.Nagios-plugins-1.4.15.tar.gz(Nagios插件)
[root@nagios~]#wget
3.nrpe-2.12.tar.gz(Nagios代理检测程序)
[root@nagios~]#wget
4.NSClient++-0.2.7.zip(用于监控windows系统所需的软件)
[root@nagios~]#ls
nagios-3.2.0.tar.gznagios-plugins-1.4.15.tar.gznrpe-2.1.12.tar.gz
官方安装文档:
(二)安装nagios
1.安装前所依赖性包的安装
[root@nagios~]#yum-yinstallhttpdphpgccglibcglibc-commongdgd-devel
2.创建nagios用户和组
[root@nagios~]#useradd-mnagios
[root@nagios~]#groupaddnagcmd
[root@nagios~]#usermod-a-Gnagcmdnagios
[root@nagios~]#usermod-a-Gnagcmdapache
3.编译安装nagios
[root@nagios~]#tar-zxvfnagios-3.2.0.tar.gz
[root@nagios~]#cdnagios-3.2.0
[root@nagios-3.2.0]#./configure--with-command-group=nagcmd\--with-nagios-user=nagios\--with-nagios-group=nagios--prefix=/usr/local/nagios
(红色部分命令可敲可不敲,指定nagios安装目录)
[root@nagios-3.2.0]#makeall
[root@nagios-3.2.0]#makeinstall
[root@nagios-3.2.0]#makeinstall-init
[root@nagios-3.2.0]#makeinstall-config
[root@nagios-3.2.0]#makeinstall-commandmode
[root@nagios-3.2.0]#makeinstall-webconf(生成apache配置文件nagios.conf)
4.为nagios生成web验证密码
[root@nagios-3.2.0]#htpasswd-c/usr/local/nagios/etc/htpasswd.usersnagiosadmin
5.设置nagios开机启动
chkconfig--addnagios
chkconfignagioson
6.修改selinux
两种方法:
第一种就是直接关闭selinux,把selinux设置成disabled状态,使用getenforce能查看到当前selinux的状态,0为关闭,1为打开。
[root@nagios-3.2.0]#vim/etc/sysconfig/selinux
SELINUX=disabled
第二种就是修改正确的content值
chcon-R-thttpd_sys_content_t/usr/local/nagios/sbin/
chcon-R-thttpd_sys_content_t/usr/local/nagios/share/
(三)安装nagios的插件nagios-plugins
插件是nagios扩展功能的强大武器,一般好的软件,都支持插件的扩展,你可以根据实际需求,自己开发插件。
[root@nagios~]#tar-zxvfnagios-plugins-1.4.15.tar.gz
[root@nagios~]#cdnagios-plugins-1.4.15
[root@nagios-plugins-1.4.15]#./configure--prefix=/usr/local/nagios--with-nagios-user=nagios--with-nagios-group=nagios
[root@nagios-plugins-1.4.15]#make&&makeinstall
(四)主目录下文件目录结构
[root@nagios~]#cd/usr/local/nagios
[root@nagiosnagios]#ls-l
成功安装后在/usr/local/nagios目录下可见这几个文件夹,其中etc为配置文件目录,插件都安装在libexec目录下,var为存放nagios服务日志目录。
下面我们进入etc目录来配置检测主机是否存活
[root@nagiosnagios]#cdetc/
[root@nagiosetc]#ls-l
Etc目录下可见cgi.cfg、htpasswd.users、nagios.cfg、objects、resource.cfg这五个文件与目录(上图中nrpe.cfg为后来所装nrpe代理检测程序所生成的文件,只装过nagios主程序和插件的话不会出现此文件)
Cgi.cfg(CGI配置文件)htpasswd.users(Apache的用户验证密码文件)
Nagios.cfg(主配置文件)objects(对象定义文件目录)
Resource.cfg(资源配置文件)
2、Nagios监控简单服务的配置
检测主机是否存活,需要修改nagios.cfg和objects目录下的文件。
(1)主配置文件nagios.cfg的配置
Nagios自己定义了一套规则用于配置文件,其中最重要的概念就是”对象”----object.通俗的理解:
假定我们首先定义了”性别”这个对象,它的值只可能是男,女,人妖等等,然后定义某人为一个对象,例如张三,定义张三的时候有”性别”这个属性,它的值就必须来源了之前定义的性别这个对象,要么是男是女,或者是人妖.
在Nagios里面定义了一些基本的对象,一般用到的有:
联系人
contact
出了问题像谁报告?
一般当然是系统管理员了
监控时间段
timeperiod
7X24小时不间断还是周一至周五,或是自定义的其他时间段
被监控主机
host
所需要监控的服务器,当然可以是监控机自己
监控命令
command
nagios发出的哪个指令来执行某个监控,这也是自己定义的
被监控的服务
service
例如主机是否存活,80端口是否开,磁盘使用情况或者自定义的服务等
另外,多个被监控主机可以定义为一个主机组,多个联系人可以被定义为一个联系人组,多个服务还能定义成一个服务组呢.
回到上面的例子,定义张三需要之前定义的性别,我们定义一个被监控的服务,当然就要指定被监控的主机,需要监控的时间段,要用哪个命令来完成这个监控操作,出了问题向哪个联系人报告.
所有这些对象绝对多数都是需要我们手动定义的,这就是nagios的安装显得复杂的地方.下面我们来配置nagios主配置文件。
[root@nagiosetc]#vimnagios.cfg
此处是定义了nagios日志存放的位置,默认为这个位置可以不用改它。
cfg_file=/usr/local/nagios/etc/objects/commands.cfg(命令定义文件)cfg_file=/usr/local/nagios/etc/objects/contacts.cfg(联系人信息定义文件)cfg_file=/usr/local/nagios/etc/objects/contactgroups.cfg(添加此行联系人组定义文件)cfg_file=/usr/local/nagios/etc/objects/hosts.cfg(添加此行主机定义文件)cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg(添加此行主机组定义文件)cfg_file=/usr/local/nagios/etc/objects/services.cfg(添加此行服务定义文件)cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg(时间周期定义文件)cfg_file=/usr/local/nagios/etc/objects/templates.cfg
#difinationsformonitoringthelocal(linux)host
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg(注释掉此行)
注释掉了就说明不读取这个文件里的配置,取消注释就说明nagios将读取这个文件里的配置。
此处将localhost.cfg文件注释,说明所有主机配置都将读取objects目录中hosts.cfg当中定义的主机。
改check_external_commands=0为check_external_commands=1.这行的作用是允许在web界面下执行重启nagios、停止主机/服务检查等操作。
把command_check_interval的值从默认的1改成command_check_interval=10s(根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。
主配置文件要改的基本上就是这些,但是/usr/local/nagios/etc/objects中并没有文件hosts.cfg等一些文件,稍后手动创建它们。
(在nagios.cfg中配置的参数其实还有很多,像service_check_timeout,enable_notifications=1开启报警通知,确保nagios_user=nagios,nagios_group=nagios等,这些以后再说)
(2)脚本控制文件cgi.cfg的配置
[root@nagiosetc]#vimcgi.cfg
Cgi.cfg的作用是控制相关cgi脚本,先确保use_authentication=1,default_user_name=***这句可以不用定义,默认是注释掉的,看命令解释说地定义有风险。
authorized_for_system_information=nagiosadmin,test
authorized_for_configuration_information=nagiosadmin,test
authorized_for_system_commands=nagiosadmin,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
上述的用户名就是之前使用htpasswd-c/usr/local/nagios/etc/htpasswd.usersnagiosadmin生成的nagiosadmin用户,由此操作可同样创建出上述test用户。
在此就不做过多说明了。
不过这个要注意,请不要随便添加不存在的验证用户,并且为了安全起见,不要添加过多的验证用户。
(3)主机定义文件hosts.cfg的配置
[root@nagiosetc]#cdobjects/
[root@nagiosobjects]#vimhosts.cfg此处没有hosts.cfg文件,直接vim编辑创建即可
definehost{
host_nameNagios-Server
//被监控主机的名称,最好别带空格用tab键来分隔
aliasNagiosServer
//别名
address211.162.127.51
//被监控主机的IP地址,我现在暂时先填本机的IP
check_commandcheck-host-alive
//监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活
max_check_attempts5
//检查失败后重试的次数
check_period24x7
//检查的时间段24x7,来自于在timeperiods.cfg中定义的
contact_groupssagroup
//联系人组,上面在contactgroup.cfg中定义的sagroup
notification_interval10
//提醒的间隔,每隔10秒提醒一次
notification_period24x7
//提醒的周期,24x7,同样来自于我们之前在timeperiods.cfg中定义的
notification_optionsd,u,r
//指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍
}
211.162.127.43主机定义同上,就不一一详细说明了。
(4)主机组定义文件hostgroups.cfg的配置
[root@nagiosobjects]#vimhostgroups.cfg
此处添加之前已定义好的主机名就行了,不同主机名之间用逗号隔开。
(5)监控时间段文件timeperiods.cfg的配置
[root@nagiosobjects]#vimtimeperiods.cfg
关于其他时间段的定义我是全部注释掉了的,只留了24x7这个时间段的定义,按理来说这个应该是不需要的,假如使用命令检测配置文件出现报错情况的话就把其他时间命令定义都注释掉。
(6)联系人文件contacts.cfg的配置
[root@nagiosobjects]#vimcontacts.cfg
此处定义的就是出了问题应该通知谁,通常就是系统管理员,上图定义的就是当监控服务出现u(unknow)、c(critical)、r(从异常状态下恢复)或者主机出现d(down机)、u(unreachable)、r(从异常状态下恢复)的时候就会以notify-service和notify-host-by-sms命令定义的方式(此命令是在commands.cfg中定义的)向系统管理员发送报警通知,此处没有定义W警告级别。
注意,contacts.cfg最下面也有关于contactgroup的模版,这里我们另外创建一个contactgroup.cfg联系组的文件,就不在联系人文件中定义联系组了,可以注释掉。
(7)联系组文件contactgroup.cfg的配置
[root@nagiosobjects]#vimcontactgroup.cfg
定义联系组的组名为sagroup,组的成员来自于上面定义的contacts.cfg,如果有多个联系人则以逗号相隔。
下面是最关键的了,用nagios主要是监控一台主机的各种信息,包括本机资源,对外的服务等等.这些在nagios里面都是被定义为一个个的项目(nagios称之为服务,为了与主机提供的服务相区别,我这里用项目这个词),而实现每个监控项目,则需要通过commands.cfg文件中定义的命令.
例如我们现在有一个监控项目是监控一台机器的web服务是否正常,我们需要哪些元素呢?
最重要的有下面三点:
首先是监控哪台机,然后是这个监控要用什么命令实现,最后就是出了问题的时候要通知哪个联系人?
(8)服务定义文件services.cfg的配置
[root@nagiosobjects]#vimservices.cfg
以监控http服务为例,监控的主机为Nagios-Server这台主机,监控的时间段为24
x7这个时间段名命定的定义,引用的检查服务命令是commands.cfg里定义的check_tcp!
80这个命令,就是去ping主机的80端口来检查http是否正常,发现ping不通后最大尝试次数为4次,包括重新检查间隔这些参数都是在timeperiods.cfg里定义的,自己可以修改。
还有就是报警参数的设置也是自己按需求定义。
(注意,这里最下面加了一句notifications_enabled1是为了实现短信猫报警排错时加进去的,正常来说这句不需要加,因为nagios.cfg主配置文件里定义这句报警通知开关打开为1了)
监控多个主机服务复制粘贴就行,只要把hostname改一下即可。
上图只展示了监控host存活的配置,常用监控服务的配置在介绍监控插件安装配置的时候再贴出。
(9)修改目录的所有者测试web监控界面
[root@nagios~]#chown–Rnagios:
nagios/usr/local/nagios/etc/objects/
[root@nagios~]#/usr/local/nagios/bin/nagios–v/usr/local/nagios/etc/nagios.cfg检测配置文件是否正确
如果都是0说明配置没有问题,如果有错误的话会有提示哪里出错,检查出错的配置文件。
[root@nagios~]#/etc/init.d/httpdrestart
[root@nagios~]#/etc/init.d/nagiosrestart
在浏览器输入主监控机IP地址测试:
http:
//211.162.127.51/nagios/
要求用户名验证,就是之前htpasswd创建的web验证用户nagiosadmin,第一部分的功能已经实现了,就是简单的监控主机是否存活(上图那些check_disk、check_http这些服务是用安装插件以后监控起来的服务,到上述步骤完成时不会出现,只监控主机存活的话服务只有check-host-alive),当然,对于系统监控来说,这是远远不够的,对于来说,他的真正功能功能还没有发挥出来,在下面部分会详细的叙述。
3、使用Nagios插件监控更多信息
nagios本身并没有监控的功能,所有的监控是由插件完成的,插件将监控的结果返回给nagios,nagios分析这些结果,以web的方式展现给我们,同时提供相应的报警功能(这个报警的功能也是由插件完成的)
所有的这些插件是一些实现特定功能的可执行程序,默认安装的路径是/usr/local/nagios/libexec
或许在这里又迷糊了,我们在定义某个监控项目时,所用的监控命令都是来自commands.cfg的,这和这些插件有什么关系?
?
?
想到了吧,commands.cfg中定义的监控命令就是使用的这些插件.举个例子,之前我们已经不止一次用到了check-host-alive这个命令,打开commands.cfg就可以看到这个命令的定义,如下:
################################################################################
#
#SAMPLEHOSTCHECKCOMMANDS
#
################################################################################
#Thiscommandcheckstoseeifahostis"alive"bypingingit
#Thecheckmustresultina100%packetlossor5second(5000ms)roundtrip
#averagetimetoproduceacriticalerror.
#Note:
OnlyoneICMPechopacketissent(determinedbythe'-p1'argument)
#'check-host-alive'commanddefinition
definecommand{
command_namecheck-host-alive
command_line$USER1$/check_ping-H$HOSTADDRESS$-w3000.0,80%-c5000.0,100%-p1
}
command_namecheck-host-aliv