私のcheck_mkサーバーはインストールされているいくつかのRHELノードに接続しますcheck_mk_agent(バージョン1.2.4p3)。これらのノードのグループは、ペースメーカークラスターに属しています。
Check_mkエージェントはデフォルトで構成されています-xinetサービスはポート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
}
/ usr/bin/check_mk_agentスクリプトクラスター検出段階でハング:のため、ソケットが6556/TCPポートに対して開かれている場合、これらのクラスターノードの1つに問題があります。
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 'A-Z' '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
この問題は、残りのクラスターノードでは見つかりません。
障害のあるノードの内部から接続を開いたときに同じ動作が発生するため、ネットワークの問題ではないと確信しています。
telnet 127.0.0.1 6556
最も奇妙なのはコマンドcrm_mon -1 -r
を1日に何度も手動で実行しますが、ハングすることはありませんです。
ターミナルが接続されていない状態で実行された場合、コマンドcrm_mon -1 -r
がハングする原因は何ですか?1つのノードのみ
よろしくお願いします
更新1
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
SELinuxの設定はDisabled
です。
SELinuxの構成は何ですか?
Xinetdを介して呼び出されたCheck_mkは、ルートシェルで呼び出された場合とは異なるコンテキストを持ちます。これがNagiosリモートプラグインエグゼキュータの邪魔になるのを見てきましたが、check_mkにも同じ影響を与える可能性があるようです。
SELinuxが実施しているかどうかを確認します。
$ getenforce
パーミッシブに設定し、問題が解決するかどうかを確認します。
$ setenforce 0
それが問題である場合は、SELinuxを無効にするのではなく、autdit2allowを使用して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