私が作成した NRPE チェックに問題があります。
これは、「systemctl is-active [service_name]」を実行して値を Thruk に返す単純なシェル スクリプトです。
ユーザー nrpe でスクリプトを直接実行すると、次のように動作します。
-bash-4.2$ /usr/lib64/nagios/plugins/check_service_active.sh --service dynflowd
dynflowd
Service dynflowd démarré
しかし、ローカルで NRPE を使用して実行すると、サービスが停止していることがわかります。
-bash-4.2$ ./check_nrpe -H 127.0.0.1 -c check_service_active -a 'dynflowd'
dynflowd
Service dynflowd arrêté
複数のテストの後、systemctl コマンドにリンクされていることがわかりました。systemctl を「echo」などの別のコマンドに置き換えると、機能します。
だから私はNRPEとsystemctlに何かがあると思いますが、何が見つかりませんか? そして、Googleでそれについて何も見つけられません。
だからここにいます!
返信ありがとうございます。私が十分に理解できていない場合は申し訳ありません。
これが私のスクリプトです:
#!/bin/sh
#
# Script d'interrogation d'un service via systemctl
# Nagios return codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
STATE_DEPENDENT=4
#Recuperation des parametres
while test -n "$1"; do
case "$1" in
--service)
SERV=$2
shift
;;
-u)
print_usage
exit $STATE_OK
;;
esac
shift
done
STAT=$(systemctl is-active $SERV)
if [[ $STAT == "active" ]]
then
echo "Service $SERV démarré"
exit $STATE_OK
else
echo "Service $SERV arrêté"
exit $STATE_CRITICAL
fi