check_mk_agent在networking触发时仅在运行集群检查时挂起

我的check_mk服务器连接到几个安装了check_mk_agent (版本1.2.4p3)的RHEL节点。 一组这些节点属于起搏器组。

check_mk代理是默认configuration的 – 一个xinet服务被configuration绑定到端口6556 / TCP:

service check_mk { type = UNLISTED port = 6556 socket_type = stream protocol = tcp wait = no user = root server = /usr/bin/check_mk_agent # If you use fully redundant monitoring and poll the client # from more then one monitoring servers in parallel you might # want to use the agent cache wrapper: #server = /usr/bin/check_mk_caching_agent # configure the IP address(es) of your Nagios server here: #only_from = 127.0.0.1 10.0.20.1 10.0.20.2 # Don't be too verbose. Don't log every check. This might be # commented out for debugging. If this option is commented out # the default options will be used for this service. log_on_success = disable = no } 

当套接字打开到6556 / TCP端口时,其中一个群集节点出现问题,因为/ usr / bin / check_mk_agent脚本挂起在群集检测阶段

 crm_mon -1 -r | grep ··· 

这使check_mk服务器报告该节点上的问题。

当我在check_mk_agent脚本中注释掉集群检测命令时,它工作正常

 # Heartbeat monitoring # Different handling for heartbeat clusters with and without CRM # for the resource state ###if [ -S /var/run/heartbeat/crm/cib_ro -o -S /var/run/crm/cib_ro ] || pgrep crmd > /dev/null 2>&1; then ### echo '<<<heartbeat_crm>>>' ### crm_mon -1 -r | grep -v ^$ | sed 's/^ //; /^\sResource Group:/,$ s/^\s//; s/^\s/_/g' ###fi ###if type cl_status > /dev/null 2>&1; then ### echo '<<<heartbeat_rscstatus>>>' ### cl_status rscstatus ### ### echo '<<<heartbeat_nodes>>>' ### for NODE in $(cl_status listnodes); do ### if [ $NODE != $(echo $HOSTNAME | tr 'AZ' 'a-z') ]; then ### STATUS=$(cl_status nodestatus $NODE) ### echo -n "$NODE $STATUS" ### for LINK in $(cl_status listhblinks $NODE 2>/dev/null); do ### echo -n " $LINK $(cl_status hblinkstatus $NODE $LINK)" ### done ### echo ### fi ### done ###fi 

在剩余的群集节点中找不到此问题。

我确定这不是一个networking问题,因为从该故障节点内部打开连接时发生相同的行为:

 telnet 127.0.0.1 6556 

最奇怪的是我每天手动运行命令crm_mon -1 -r很多次,但它永远不会挂起

什么可以使命令crm_mon -1 -r挂起只有一个节点,当它没有连接terminal执行?

提前感谢

更新1

我创build了一个类似于check_mk的新的xinetd服务,但更改了名称,端口号和服务器。 服务器脚本只包含这些行

 #!/bin/bash unset LANG export LC_ALL=C date /usr/sbin/crm_mon -1 -r -N #/usr/sbin/crm_resource -L date 

它也挂起。 我甚至试图使用crm_resource -L ,其输出是相同的,但它也挂起:

 # telnet 127.0.0.1 6557 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. Fri Jul 14 08:37:36 CEST 2017 

更新2

SELinuxconfiguration被Disabled

什么是你的SELinuxconfiguration?

通过xinetd调用的Check_mk与在根shell处调用的情况相比,具有不同的上下文。 我已经看到了这个让Nagios远程插件执行器的方式,似乎可以在check_mk上具有相同的效果。

看看SELinux是否正在执行:

 $ getenforce 

将其设置为宽容并查看问题是否存在:

 $ setenforce 0 

如果这是问题,我build议用autdit2allow调整SELinux策略,而不是禁用SELinux。

有关使用audit2allow的信息,请参阅以下链接: https : //access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Fixing_Problems-Allowing_Access_audit2allow.html