通过 NRPE 的 NRPE 套接字超时,作为 nrpe 用户工作
NRPE Socket timeout via NRPE, works as nrpe user
Azure 服务器上的 nrpe - nrpe-srvr
,用户 nrpe
,执行脚本 /usr/local/naemon/libexec/check_curl_http.php
我将其命名为 script
./script -U www.google.com
后的期望输出:
Page OK: HTTP Status Code 200 - 11099 bytest in 0.** seconds | time=0.059 size=11099
我通过 运行 来自 root
或 nrpe
的脚本实现了上述输出
运行 sudo -u nrpe ./script -U www.google.com
returns:
Error in opening page! Err:Failed to connect to [ipv6 addr] Network is
unreachable
但是 运行 su - nrpe -c './script -U www.google.com'
可以得到想要的结果。
Naemon 报告:
CHECK_NRPE: Socket timeout after 30 secs
对同一主机的其他 NRPE 检查正在运行,因此我认为这与用户执行此特定脚本有关。我确实收到了 SELinux
的拒绝,但调整了上下文。删除上下文并将 SELinux 设置为 permissive 会产生相同的错误。启用 NRPE 日志文件,带有调试功能,但除了 Running command
之外,它并没有真正揭示太多。有一个:
WARNING: my_system() seteuid(0): Operation not permitted
在日志中,但查看 "Normal" 行为的支持文档。
我会 post 以防其他人遇到此问题,我会标记 Azure / AWS。
本质上,云提供商(大部分)有一个存储在环境变量 http_proxy
&& https_proxy
中的内部代理。默认情况下,NRPE 不使用加载环境变量。现在我不知道是否有它的选项(文档中提到使用 uid 而不是用户名(使用用户名)时存在错误)但是它很简单,可以调用代理进行这样的检查。
Azure 服务器上的 nrpe - nrpe-srvr
,用户 nrpe
,执行脚本 /usr/local/naemon/libexec/check_curl_http.php
我将其命名为 script
./script -U www.google.com
后的期望输出:
Page OK: HTTP Status Code 200 - 11099 bytest in 0.** seconds | time=0.059 size=11099
我通过 运行 来自 root
或 nrpe
运行 sudo -u nrpe ./script -U www.google.com
returns:
Error in opening page! Err:Failed to connect to [ipv6 addr] Network is unreachable
但是 运行 su - nrpe -c './script -U www.google.com'
可以得到想要的结果。
Naemon 报告:
CHECK_NRPE: Socket timeout after 30 secs
对同一主机的其他 NRPE 检查正在运行,因此我认为这与用户执行此特定脚本有关。我确实收到了 SELinux
的拒绝,但调整了上下文。删除上下文并将 SELinux 设置为 permissive 会产生相同的错误。启用 NRPE 日志文件,带有调试功能,但除了 Running command
之外,它并没有真正揭示太多。有一个:
WARNING: my_system() seteuid(0): Operation not permitted
在日志中,但查看 "Normal" 行为的支持文档。
我会 post 以防其他人遇到此问题,我会标记 Azure / AWS。
本质上,云提供商(大部分)有一个存储在环境变量 http_proxy
&& https_proxy
中的内部代理。默认情况下,NRPE 不使用加载环境变量。现在我不知道是否有它的选项(文档中提到使用 uid 而不是用户名(使用用户名)时存在错误)但是它很简单,可以调用代理进行这样的检查。