从配置文件看Nagios通过NRPE, SNMP进行监控的工作原理

NRPE工作原理:

从Nagios的service开始(@监控服务器):

define service{
                host_name                                       zc-host
                service_description                             check-load
                check_command                                   check_nrpe!-c check_load     #引用了command:check_nrpe
                max_check_attempts                              3
                check_interval                                  3
                retry_interval                                  3
                check_period                                    24x7
                notification_interval                           3
                notification_period                             24x7
                contacts                                        zhicheng
                contact_groups                                  monitor-group

                }

 接下去看Nagios的command(@监控服务器): 

# 'check_by_nrpe' command definition
define command {
        command_name    check_nrpe
        command_line    /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ $ARG1$    #引用了nrpe插件提供的命令
}

接下去看nrpe插件的这条命令(@监控服务器):

/usr/local/nagios/libexec/check_nrpe-H 10.14.21.145 -c check_load

#通过nrpe提供的一个应用层协议进行通信。监控服务器端从一个随机的TCP端口将“请求”发出到被监控机器正在监听中的5666TCP端口。“请求”的内容为通知10.14.21.145执行nrpe的check_load命令并回显。

被监控机器为什么会收到5666TCP端口的消息呢?(@被监控机器)

因为nrpe委托xinetd监听TCP5666端口,当TCP5666端口来消息时,xinetd负责将nrpe进程启动起来处理消息。

为什么nrpe不自己开启守护进程监听端口呢,因为一台服务器有许多网络应用,每个应用都开启一个守护进程来监听自己的端口,将会增加系统资源占用。因此统一委托xinetd来进行监听。

接下去看对check_load的定义(@被监控机器 /usr/local/nagios/etc/nrpe.cfg):

# Thefollowing examples use hardcoded command arguments...

command[check_users]=/usr/local/nagios/libexec/check_users-w 5 -c 10

command[check_load]=/usr/local/nagios/libexec/check_load-w 15,10,5 -c 30,25,20     #command[定义的nrpe命令],这里可以调用本地程序获取需要的信息

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 150 -c 200 

而这里的/usr/local/nagios/libexec/check_load哪来的呢,来自于nagios-plugin(@被监控机器)


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

SNMP工作原理:

从Nagios的service开始(@监控服务器)

define service{
                host_name                                       zc-host
                service_description                             check-ps

                check_command                                   check_snmp!.1.3.6.1.4.1.2021.51      #这里引用了command:check_snmp               

                max_check_attempts                              3

                check_interval                                  3
                retry_interval                                  3
                check_period                                    24x7
                notification_interval                           3
                notification_period                             24x7
                contacts                                        zhicheng
                contact_groups                                  monitor-group
                }


接下去看Nagios的command(@监控服务器)

# 'check_by_snmp'command definition

define command{

        command_name    check_snmp

        command_line   /usr/bin/snmpwalk -v 1 $HOSTADDRESS$ -c liyuanqiu $ARG1$      #引用了net-snmp-utils提供的snmpwalk程序

        }


接下去看snmpwalk这条命令(@监控服务器):

snmpwalk -v 110.14.21.185 -c liyuanqiu .1.3.6.1.4.1.2021.51

#通过snmp提供的一个应用层协议进行通信。监控服务器从一个随机的UDP端口将“请求”发送到被监控机器正在监听中的UDP161端口。“请求”的内容为执行MIB树中ID为.1.3.6.1.4.1.2021.51所指定的命令并回显。

被监控机器为什么会收到UDP161端口的消息呢?(@被监控服务器)

snmp创建了一个守护进程对UDP161端口进行监听,并未如nrpe一样委托xinetd来监听。

接下去看snmp如何定义MIB树中ID对应的命令(@被监控服务器 /etc/snmp/snmpd.conf):

# Other ideas:

#

extend.1.3.6.1.4.1.2021.51 ps /bin/ps      #定义了ID对应的命令

# extend.1.3.6.1.4.1.2021.52 top /usr/local/bin/top

# extend.1.3.6.1.4.1.2021.53 mailq /usr/bin/mailq

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


最后,不管是nrpe还是snmp,被监控机器都将命令的运行结果按照各自应用层的协议发送至监控服务器。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值