手动编译安装LAMP架构,并且实现nagios图形化监控(十)

九、Nagios监控搭建

今天主要总结一下Nagios监控体系的搭建,上节只是把Nagios最基本的框架搭建起来,但是这在生成环境中是远远不足的。比如我想监控非本机服务器的磁盘空闲率,CPU利用率,当前登录人数等等,这些都是不能直接获取的,好在Nagios早已经有了相关的辅助工具来用于远程主机的监控,其监控原理图如下(图片是我从大神作品上摘取的):


这样就清晰多了,其实Nagios监控远程主机主要是依靠这个附加组件——NRPE。

NRPE主要由两部分组成:check_nrpe、NRPE ,前者位于监控主机上,后者位于被监控主机上。远程监控的原理大概就是这样:当Nagios需要监控某个远程主机的服务或者资源时,Nagios会先运行check_nrpe这个插件,告诉它我需要检测什么。check_nrpe取得指令后就马上连接到远程的NRPE上,使用的方式是SSL,远程NRPE在收到check_nrpe的调取指令后,就会利用nagios插件对服务进行监控(这就是为什么被监控主机上也要安装nagios插件的原因),插件将取得的状态值返回给NRPE,NRPE返回给check_nrpe,之后check_nrpe就将这一状态信息讲给nagios去处理,继而完成了Nagios对远程主机的监控。这样一来我们可以做个比较形象的比喻,Nagios相当于皇上,check_nrpe则是宰相,负责为皇上处理收集日常事务,那么NRPE则就相当于远赴其他国家的节度使,去完成丞相交代下来的命令,其实是皇上发出的,只不过是通过丞相转述出去的。


熟悉了大概原理之后,就需要进行实践了。假设我需要监控内网51服务器上面的服务,需要在192.168.1.51上面执行以下操作:

1.增加nagios用户

# useradd nagios

# passwd nagios

2.安装nagios插件

# tar xvf nagios-plugins-2.0.3.tar.gz

# cd nagios-plugins-2.0.3

# ./configure

# make

# make install

这步完成之后就会在/usr/local/nagios下生成两个目录libexec和share

3.修改目录权限

# chown -R nagios:nagios /usr/local/nagios


4.安装nrpe

# tar xvf nrpe-2.12.tar.gz

# cd nrpe-2.12

# ./configure

编译完成后可以看到NRPE的一些信息


 General Options:

 -------------------------

 NRPE port:   5666

 NRPE user:   nagios

 NRPE group:  nagios

 Nagios user: nagios

 Nagios group: nagios

Review theoptions above for accuracy.  If they lookokay,

type 'make all'to compile the NRPE daemon and client.

可以看到NRPE的端口是5666,下一步是make all

# make all

# make install-plugin (这步其实可以不需要,但是为了本地测试方便,我们还是建议安装)

#make install-daemon

#make install-daemon-config

现在查看一下nagios目录下面,会发现已经有四个目录文件了:bin,etc,share,libexec


5.根据官方文档,NRPE deamon是作为xinetd下的一个服务运行的,这就需要实现安装好xinetd,一般系统已经默认安装好了。没有安装的话使用yum安装即可。yum install xinetd -y,确保安装好以后,来安装xinetd脚本

# make install-xinetd然后编辑这个脚本,脚本位置可以从输出信息查看,一般会是/etc/xinetd.d/nrpe,编辑这个脚本

# vi /etc/xinetd.d/nrpe需要修改only_from行,后面可以接IP地址,也可以接IP地址段,使用空格间隔,表示从哪台主机上来的check_nrpe请求本机会作出相应。我们在51上做的修改,当然是允许现在这台nagios监控主机了。即修改为:

only_from= 127.0.0.1 192.168.1.214

6.编辑/etc/services文件,增加NRPE服务

# vi /etc/services 增加一行代码

#Local services

nrpe 5666/tcp#nrpe


7.重启xinetd服务

#service xinetd restart


8.查看NRPE服务是否启动,还记得nrpe的端口号吗?5666

#netstat  -nltp | grep 5666

tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN   

已结启动成功了。

9.测试NRPE能否正常工作,现在本机上测试一下:有个非常简单的命令

# /usr/local/nagios/libexec/check_nrpe -H localhost

即check_nrpe能够解析出-H指定的主机上的nrpe版本信息,则证明本地之间是可以取得信息的,后面用同样的办法,测试能否取得远程主机的版本信息。

[nagios@Exp51 libexec]$ ./check_nrpe -H localhost
NRPE v2.12

--------是可以的。另外需要注意的是,本地防火墙需要将5666端口打开,是的外部监控主机可以访问。


10.现在说一下,如何实用check_nrpe来读取监控信息。相比较而言,check_nrpe能够接受的参数不多,如下:

Usage: check_nrpe -H <host> [-n] [-u] [-p <port>] [-t <timeout>] [-c <command>] [-a <arglist...>]

下面是对各个选项的解释,我们主要使用到的其实就是-H和-c参数:
Options:
 -n         = Do no use SSL
 -u         = Make socket timeouts return an UNKNOWN state instead of CRITICAL
 <host>     = The address of the host running the NRPE daemon
 [port]     = The port on which the daemon is running (default=5666)
 [timeout]  = Number of seconds before connection times out (default=10)
 [command]  = The name of the command that the remote daemon should run
 [arglist]  = Optional arguments that should be passed to the command.  Multiple
              arguments should be separated by a space.  If provided, this must be
              the last option supplied on the command line.


注意:-c只能解释命令名称,这个命令一定是在nrpe.cfg中定义过的。这个相当于监控主机上的commands.cfg文件,只有它里面定义过的命令才是合法的,当然这里面的命令基本上都是基于插件去定义的,nrpe.cfg也不例外。(nrpe.cfg文件位于/usr/local/nagios/etc目录下)现在来查看一下nrpe.cfg默认定义了哪些命令(有些是我自己定义的):

command[check_users]=/usr/local/nagios/libexec/check_users -w 4 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 200 -c 250 
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /
command[check_swap]=/usr/local/nagios/libexec/check_disk -w 40 -c 20
command[check_Internet]=/usr/local/nagios/libexec/check_ping -H www.baidu.com -w 3000.0,80% -c 5000.0,100% -p 5

其中红色字体就是我们定义的命令,也是check_nrpe -c后唯一能接的参数,我们现在就可以先使用check_nrpe -H localhost -c [command]来检测一下,正常以后就可以在监控主机上进行测试了。


11.现在在nagios监控主机上安装check_nrpe插件

# tar xvf nrpe-2.12.tar.gz

# cd nrpe-2.12

# ./configure

# make all

# make install-plugin (监控主机上只要安装这个就行了)

现在就可以测试和51主机是否能够正常通信了

# /usr/local/nagios/libexec//check_nrpe -H 192.168.1.51
NRPE v2.12

测试通过。现在就可以在监控主机上对check_nrpe命令进行定义了


12.增加commands.cfg上对于check_nrpe的命令定义

define command{
        command_name            check_nrpe
        command_line            $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

注意:$HOSTADDRESS$会默认为你定义的服务或者主机的IP地址,在service或者host中定义时,-H IP 就看省略掉了

现在就可以在监控主机上定义要监控的远程主机的某些服务资源了。如下:我们定义了监控51主机上登录人数监控:

define service{
        use                              services-pnp
        host_name                       51_server
        service_description             check-users
        check_command                 check_nrpe!check_users
        max_check_attempts          5
        normal_check_interval        3
        retry_check_interval             2
        check_period                      24x7
        notification_interval             10
        notification_period              24x7
        notification_options            w,u,c,r
        contact_groups                   superman
}

注意:check_nrpe后面接的check_users就是在远程主机nrpe.cfg上定义过的。我们依次在将nrpe.cfg中定义的其他的命令加进来,完成后重启一下nagios,就会看到如下图所示的状态。


等待一会启动好了就可以了,五分钟之内应该都是可以正常获取监控信息的,我的已经启动好了,如下:


但是我们现在只能看到实时的监控状态,如何让nagios将一段时间的状态收集起来形成一个统计图表呢?看下下面这台主机上(192.168.1.215,我的另一台虚拟机服务器)的监控图,如下:


其实安装好以后是没有小太阳标识的,这是我安装了一个绘图抓图插件,可以看到一段时间主机或者服务的监控状态绘图。我们点开小太阳标识,出现如下图表:


下节来总结一下nagios的图形化监控,也很简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值