nrpe能不能执行远程主机上的shell脚本?

ZhouLS 发布于 2012/07/03 11:15
阅读 1K+
收藏 2
安装好nagios和nrpe插件后,我想在监控服务器上通过nrpe来传递一个参数给被监控的远程主机,并在远程主机上的一个shell脚本中能引用这个参数,并把执行后的结果返回到监控服务器上。不知道在监控服务器上nrpe怎么配置,希望能有监控大神来帮助解决一下。
加载中
1
baobao777
baobao777
完全可以~ 添加command指令 后面接自己的脚本路径 ,对了 ,别忘更改脚本的owner和权限~
0
Honwhy
Honwhy

声明我不是大婶,你的目的是传参和通信,是吗?

nagios是通过command pipe来执行外部指令的,传参有实现的可能,通信可能要自己扩展,会不会涉及到内核层面我就不知道了。

0
ZhouLS
ZhouLS

引用来自“Honwhy”的答案

声明我不是大婶,你的目的是传参和通信,是吗?

nagios是通过command pipe来执行外部指令的,传参有实现的可能,通信可能要自己扩展,会不会涉及到内核层面我就不知道了。

谢谢你的关注。
0
Honwhy
Honwhy

1 我假设你已经知道了check_nrpe和NRPE的通信机制(socket,守护进程...)

2 请注意远程客户机的NRPE配置文件,nrpe.cfg,要能够传递参数,并让特定脚本获取这个参数

   打开传参功能开关, dont_blame_nrpe(类似,可能不对,手头上目前没有这个代码,抱歉~~),写好相应的command[]=<binary path> -w<arg1> -c<arg2>,类似

   在监控端,定义好相关服务....

0
ZhouLS
ZhouLS

引用来自“baobao777”的答案

完全可以~ 添加command指令 后面接自己的脚本路径 ,对了 ,别忘更改脚本的owner和权限~

谢谢你的回答,对我很有用

0
Honwhy
Honwhy

UPDATE:

1.编译NRPE时候加上--enable-command-args参数

2.打开nrpe.cfg的传参功能,将dont_blame_nrpe设为1

3.定义自己的command, 如command[my_check_disk]=/usr/local/nagios/libexec/my_check_disk -p $ARG1$

注意:

必须写全路径/usr/local/nagios/libexec

my_check_disk既是命令(command)也是自己定义的脚本,它能解析-p后面的参数,对比nrpe.cfg默认的定义的check_disk命令就会发现有所不同。

4.在命令中测试

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.101 -c my_check_disk -a /usr

比如监控端中check_nrpe向被监控端(192.168.1.101)发出my_check_disk检测命令,并传递参数/usr。(可能my_check_disk接受一个参数检测不同路径下的磁盘的使用情况)。

5.在监控端cfg文件中的写法

define host{

   host_name  101host

   address       192.168.1.101

  ...

}

define service{

         host_name       101host

         service_description    检测/usr磁盘使用情况

         check_command    check_nrpe!my_check_disk!/usr

       ...         

}

any help contact at honwhy19@163.com

i
isharing
“把执行后的结果返回到监控服务器上”——这个是如何实现的呢?求指教。
0
ZhouLS
ZhouLS

引用来自“Honwhy”的答案

UPDATE:

1.编译NRPE时候加上--enable-command-args参数

2.打开nrpe.cfg的传参功能,将dont_blame_nrpe设为1

3.定义自己的command, 如command[my_check_disk]=/usr/local/nagios/libexec/my_check_disk -p $ARG1$

注意:

必须写全路径/usr/local/nagios/libexec

my_check_disk既是命令(command)也是自己定义的脚本,它能解析-p后面的参数,对比nrpe.cfg默认的定义的check_disk命令就会发现有所不同。

4.在命令中测试

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.101 -c my_check_disk -a /usr

比如监控端中check_nrpe向被监控端(192.168.1.101)发出my_check_disk检测命令,并传递参数/usr。(可能my_check_disk接受一个参数检测不同路径下的磁盘的使用情况)。

5.在监控端cfg文件中的写法

define host{

   host_name  101host

   address       192.168.1.101

  ...

}

define service{

         host_name       101host

         service_description    检测/usr磁盘使用情况

         check_command    check_nrpe!my_check_disk!/usr

       ...         

}

any help contact at honwhy19@163.com

非常感谢
0
i
isharing
楼主,“ 把执行后的结果返回到监控服务器上”——这个是如何实现的呢????求指教。
返回顶部
顶部