1

私が作成した 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
4

2 に答える 2