我的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