各种性能监测在企业中部署和实现方法 nagios nrpe试用版.docx
- 文档编号:9982497
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:17
- 大小:25.21KB
各种性能监测在企业中部署和实现方法 nagios nrpe试用版.docx
《各种性能监测在企业中部署和实现方法 nagios nrpe试用版.docx》由会员分享,可在线阅读,更多相关《各种性能监测在企业中部署和实现方法 nagios nrpe试用版.docx(17页珍藏版)》请在冰点文库上搜索。
各种性能监测在企业中部署和实现方法nagiosnrpe试用版
各种性能监测在企业中部署和实现方法 nagios nrpe
(2012-02-2018:
19:
16)
转载▼
标签:
杂谈
分类:
linux
转:
另一种方法是使用NRPE外部构件监控远程主机。
NRPE外部构件可以在远程的Linux/Unix主机上执行插件程序。
如果是要象监控本地主机一样对远程主机的磁盘利用率、CPU负荷和内存占用率等情况下,NRPE外部构件将非常有用。
提到“外部构件”这个概念的时候需要说明一下,Nagios有许多"外部构件"软件包可供使用。
外部构件可以扩展Nagios的应用并使之与其它软件集成,而且能够通过WEB接口来实现管理配置文件,监控远程主机(*NIX,Windows等),对远程主机的强制监测,减化并扩展告警逻辑等功能。
NRPE是一个可在远程Linux/Unix主机上执行的插件的外部构件包。
如果你需要监控远程的主机上的本地资源或属性,如磁盘利用率、CPU负荷、内存利用率等时是很有用的。
像是用check_by_ssh插件来实现的功能一样,但是它不需要占用更多的监控主机的CPU负荷,所以当你需要监控大量的主机时这个构件将起到很重要的作用。
通过该图可以看出,我们需要在被监测主机上部署NRPE,他相当于一个daemon负责监听。
而监测主机使用check_nrpe并通过SSL连接访问这个daemon,然后调用被监测方的check_disk,check_load等脚本获取信息并将结果传递到监测主机。
同时这些脚本也有能力监测到其它主机的相关信息。
NRPE的使用环境有directcheck和indirectcheck两种,directcheck指的是NRPE运行在被监测主机的本地,而indirectcheck意味着运行NRPE的服务器只是一个中间人,他会继续通过刚才所提及的脚本来监测其它更多远程主机上的服务和系统信息。
层次化的监测就是通过这种方式来实现。
为了简单说明问题,我们将要部署基于directcheck的环境部署NRPE。
所以下面的操作在被监测主机192.168.1.220上进行。
首先要建立Nagios账号,这里我使用同样的密码:
#useraddnagios
#passwdnagios
之后按照和上面相同的步骤来编译和安装nagios-plugin软件:
#tar-zxfnagios-plugins-1.4.12.tar.gz
#cdnagios-plugins-1.4.12
#./configure
#make
#makeinstall
然后对相关的目录设置权限和所属用户组:
#chownnagios.nagios/usr/local/nagios
#chown–Rnagios.nagios/usr/local/nagios/libexec
接着NRPE包放到/usr/local目录下,按照下面的步骤解压缩,并且编译和安装:
#tar-zxfnrpe-2.12.tar.gz
#cdnrpe-2.12
#./configure
#makeall
#makeinstall-plugin
#makeinstall-daemon
#makeinstall-daemon-config
同时安装NRPE的插件、进程以及进程范例配置文件。
接着执行命令将nrpe安装为依赖xinetd超级进程的非独立服务,那么前提必须安装xinetd。
不过一般系统都会自动安装该服务。
最后执行下面的命令将NRPE安装为xinetd超级进程所管理的进程之一。
#makeinstall-xinetd
完成之后需要编辑/etc/xinetd.d目录下的nrpe文件,并且在最后添加允许实施监测的主机IP地址,这里是192.168.1.10,那么配置文件全文如下:
#cat/etc/xinetd.d/nrpe
servicenrpe
{
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 =192.168.1.10
}
然后修改/etc/services档,并添加下面的内容:
nrpe 5666/tcp #nrpe
重启服务:
#/etc/init.d/xinetdrestart
此时检查nrpe服务启动状况如下:
#netstat-nl|grep5666
tcp 0 00.0.0.0:
5666 0.0.0.0:
* LISTEN
#lsof-i:
5666
COMMAND PIDUSER FD TYPEDEVICESIZENODENAME
xinetd 9949root 5u IPv4 28764 TCP*:
nrpe(LISTEN)
现在最关键的一步是确保安装的NRPE进程能够正常工作,所以要使用check_nrpe插件进行测试。
在监测主机192.168.1.10上执行命令:
#/usr/local/nagios/libexec/check_nrpe-H192.168.1.220
如果能够出现如下的版本号显示,则证明在被监测主机上配置的NRPE已经正常工作,并且监测主机能够通过SSL与被监测主机上的NRPE正常通信。
NRPEv2.12
但是如果出现一些error信息,则需要检查配置,检查的内容包括主要有下面几项:
1.nrpe的版本号和nrpe-plugin的版本号是否一致。
版本不一致极有可能造成该问题。
2.SSL是否被关闭。
确保NRPE以及check_nrpe插件在编译的时候都加入了SSL支持,同时在运行时都开启SSL。
不过一般编译过程中默认都会假如支持SSL选项。
3.确保NRPE的配置文件nrpe.cfg文件可以被nagios用户读取并且nagios用户可以执行nrpe二进制程序。
4.确认在/etc/xinetd.d/nrpe文件的“only_from=x.x.x.x”中x.x.x.x是访问NRPE的监测主机的IP地址。
NRPE的配置文件/usr/local/nagios/etc/nrpe.cfg中实际上已经包含了一些对系统进行监测的命令。
由于NRPE安装在本地,这些命令可以直接协助NRPE从被监测主机获取系统和服务运行状况,而且都是在刚才通过nagios-plugin安装的。
如果从监测主机上运行这些命令进行监测,一切正确可以看到下面的效果。
那么不难看出其中的奥妙——实际上完全可以利用在/usr/local/nagios/libexec/中的各种脚本并添加各项参数定制自己的监测内容。
那么到此为止我们就完成了在远程被监测主机上安装和配置RNPE的任务。
现在需要在监测主机,也即是192.168.1.10上面安装和配置check_nrpe插件。
步骤大概分为:
第一,安装check_nrpe插件;
第二,为使用check_nrpe插件建立Nagios命令定义;
第三,建立Nagioshost以及服务定义
由于我们刚才已经在安装Nagios之后安装了nrpe,所以实际上第一个步骤已经完成。
现在开始执行第二步骤——建立命令定义:
这里需要花点时间特别说明一下Nagios利用命令定义进行监测的原理:
在安装nagios成功之后可以看到在/usr/local/nagios/libexec目录下有很多可执行监控程序或者脚本,其名称类似check_icmp这样的格式。
Nagios并没有提供针对这些监控程序的脚本的说明文档,想了解这些脚本如何工作,需要通过--h参数,显示其使用方法和参数,并会给出一些实际的例子。
例如:
./check-disk–h。
那么我们可以尝试按照其中一个例子执行该脚本,执行和显示的结果如下:
#./check_disk-w10%-c5%-p/tmp-p/var-C-w100000-c50000-p/dev/sda3
DISKOK-freespace:
/2124MB(41%inode=90%);|/=2955MB;4820;5088;0;5356
可以看到状态值“OK”,以及一些详细的数据信息。
上述操作说明这些插件都是可以独立使用,Nagios有很多个cfg档用来定义各式各样的信息,其中template.cfg是用来定义主机和服务信息的模板文件,在目录/usr/local/nagios/etc/objects下。
我们按照这些模板来建立新的配置文件,例如同样目录下的server.cfg来定义监控内容,那么这些插件就会从server.cfg中调用。
例如要定义一个需要监控的SSH服务,名称为TestSSH:
按照其格式:
defineservice{
host_namex.x.x.x
service_descriptioncheck_ssh
……
check_commandcheck_ssh
}
host_name项说明该服务所在的主机名,service_description项为服务的说明信息,这项内容会显示在nagios页面中。
check_command项说明要使用的命令,这个例子中的命令check_ssh就是一个插件了。
这个服务定义,明确了nagios在需要监控的内容和监控的手段,即使用check_ssh插件来监控主机x.x.x.x上的ssh服务情况。
除了直接使用插件来做check_command项的参数以外,还可以使用自己定义的命令来。
例如,定义一个需要监控的主机,名字是localhost.localdomain:
definehost{
host_namelocalhost.localdomain
aliasremotehost01
address192.168.0.1
……
check_commandcheck-host-alive
……
}
在此例中,check_command项的参数“check-host-alive”并非一个插件,而是在commands.cfg档中定义的一个命令。
那么在相同目录的command.cfg中对该命令又被定义为:
#'check-host-alive'commanddefinition
definecommand{
command_namecheck-host-alive
command_line$USER1$/check_ping-H192.168.1.220-w300.0,80%-c500.0,100%-p1
}
首先,$USER1$这个参数在resource.cfg中定义,这个值会指向插件的目录(如:
/usr/local/nagios/libexec)。
“-H192.168.1.220”定义目标主机的地址,-w说明后面的一对值对应的是“WARNING”状态,“80%”是其临界值。
“-c500.0,100%”其中“-c”说明后面的一对值对应的是"CRITICAL",“100%”是其临界值。
“-p1”说明每次探测发送一个包。
所以归根结底就是说通过ping这种方式来证明某台主机处于alive状态。
而至于如何监听非默认埠的服务。
下面我也举例说明一下这个问题:
例如:
现需检查的一个运行在8080埠上的http服务。
那么我们可以对commands.cfg档中对关于check_http的声明做如下修改。
#'check_http'commanddefinition
definecommand{
command_namecheck_http
command_line$USER1$/check_http-H192.168.1.220-p$ARG1$
}
其中$ARG1$是指在调用这个命令的时候,命令后面的第一个参数。
再把services.cfg中,对应服务的检测命令后面加一个参数:
defineservice{
host_name...
...
check_commandcheck_http!
8080
}
这样就可以对8080埠的http服务进行监控了。
如果要添加多个参数的时候,也可以类似操作。
综上,插件的安装和调用方法也就举例介绍完毕了,大家在使用中也可以使用自己写的检测脚本来完成比较特殊的检测功能。
所以按照上面所叙述的原理,我们开始第二步和第三步的配置,为使用check_nrpe插件建立Nagios命令定义以及服务定义:
修改配置文件/usr/local/nagios/etc/objects/command.cfg并增加下面的内容:
definecommand{
command_namecheck_nrpe
command_line$USER1$/check_nrpe-H$HOSTADDRESS$-c$ARG1$
}
然后针对要监测的目标主机建立主机定义,主机定义的项目和内容有很多,所以定义的项目如下:
host_namehost_name #简短的主机名称
aliasalias #别名,可以更详细的说明主机
addressaddress #ip地址,当然如果DNS服务可用也可以写名称。
如果你不定义该值,nagios将会用host_name去寻找主机。
parentshost_names #上一节点的名称,也就是指从nagios服务器到被监控主机之间经过的节点,可以是路由器、交换机、主机等等。
这个节点也要定义并且要被nagios监控。
hostgroups #简短的主机组名称
check_command #检查命令的简短名称,如果此项留空,nagios将不会去判断该主机是否alive。
max_check_attempts #当检查命令的返回值不是“OK”时,重试的次数
check_interval #循环检查的间隔时间。
active_checks_enabled #是否启用“active_checks”
passive_checks_enabled #是否启用“passive_checks”,及“被动检查”
check_period #检测时间段简短名称,此处只是名称,具体的时间段要写在其它的配置文件
obsess_over_host #是否启用主机操作系统探测。
check_freshness #是否启用freshness测试。
freshness测试是对于启用被动测试模式的主机而言的,其作用是定期检查该主机报告的状态信息,如果该状态信息已经过期,
freshness将会强制作主机检查。
freshness_threshold #fressness的临界值,单位为秒。
如果定义为0,则为自动定义。
event_handler #当主机发生状态改变时,采用的处理命令的简短的名字
(可以在commands.cfg中对其定义)
event_handler_enabled #是否启用event_handler
low_flap_threshold #抖动的下限值。
所谓抖动,主要定义了这样一种现象:
在一段时间内,主机(或服务)的状态值频繁发生变化,类似一个问题风暴或者一个网络问题。
high_flap_threshold #抖动的上限值
flap_detection_enabled #是否启用抖动检测
process_perf_data #是否启用processingofperformancedata
retain_status_information #程序重启时,是否保持主机状态相关的信息
retain_nonstatus_information#程序重启时,是否保持主机状态无关的信息
contact_groups #联系人组(这个组会在contactgroup.cfg文件中定义),在此组中的联系人都会受到该主机的告警提醒信息。
notification_interval #告警临界值。
达到此次数之后,才会发送该机的报警提醒信息。
notification_period #告警时间段
notification_options #告警包括的状态变化结果
notifications_enabled #是否启用告警提醒功能
stalking_options[o,d,u] #持续状态检测参数,o=持续的UP状态,
d=持续的DOWN状态,andu=持续的UNREACHABLE状态.
当然在企业的监测环境中很多项目可能都不一定能够用上,这里我只是通过一个简单的例子说明其用法就好了。
所以修改/usr/local/nagios/etc/objects/localhost.cfg檔,在檔的“HOSTDEFINITION”部分,在原来的基础上增加自己的主机定义内容:
definehost{
uselinux-box ;Inheritdefaultvaluesfromatemplate
host_namelocalhost ;Thenamewe'regivingtothisserver
aliasRHEL5u2 ;Alongernamefortheserver
address192.168.1.220 ;IPaddressoftheserver
}
同时在“HOSTGROUPDEFINITION”部分,将192.168.1.220这台主机加入到linux-servers这个hostgroup中。
如果有多台主机都属于这个hostgroup,可以用逗号将其隔开。
以下是我添加的内容:
definehostgroup{
hostgroup_name linux-servers ;Thenameofthehostgroup
alias LinuxServers ;Longnameofthegroup
members 192.168.1.220 ;Commaseparatedlistofhoststhatbelongtothisgroup
}
而在最后的“SERVICEDEFINITION”部分,所有未注释的部分实际上是关于对localhost也就是本机所要监测的内容。
其格式和语法就是我在提到Nagios检测原理方面举例说明的内容。
对于localhost来说不需要修改了,但是可以把他的内容复制到自定义的cfg档中并照葫芦画瓢修改成对192.168.1.220这台
主机的命令定义。
我们下面就来做这样的操作:
在/usr/local/nagios/etc/objects目录下针对监测的服务建立服务定义,建立一个新的文件remotehosts.cfg,加入下面内容:
下面是自定义的:
defineservice{
usegeneric-service
host_namelocalhost
service_descriptionCPULoad
check_commandcheck_nrpe!
check_load
}
表示监测远程主机的CPU负载。
如果要监测当前在远程主机的磁盘空间,则加入:
defineservice{
usegeneric-service
host_namelocalhost
service_description/dev/sda3FreeSpace
check_commandcheck_nrpe!
check_disk/dev/sda3
}
如果要监测当前远程主机的僵死进程数,则加入:
defineservice{
usegeneric-service
host_namelocalhost
service_descriptionZombieProcesses
check_commandcheck_nrpe!
check_zombie_procs
}
同时使用vi编辑器末行模式的r功能读取当前目录下的localhost.cfg档,删除“HOSTDEFINITION”和“HOSTGROUPDEFINITION”部分。
只保留“SERVICEDEFINITION”部分并修改为下面的内容:
第一个命令定义:
通过check_ping脚本确保监测主机和被监测主机的连通性,如果丢包率到达20%则报warning,到达60%则报critical:
defineservice{
use local-service ;Nameofservicetemplatetouse
host_name 192.168.1.220
service_description PINGREMOTEHOST
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 各种性能监测在企业中部署和实现方法 nagios nrpe试用版 各种 性能 监测 企业 部署 实现 方法 nrpe 试用版
![提示](https://static.bingdoc.com/images/bang_tan.gif)