
イベント ハンドラー スクリプトを使用して、Oracle データベースがダウンしたときに起動しようとしています。
オブジェクト構成ファイルには次の内容oraclehost.cfg
が含まれます。
define host {
host_name Test_Oracle
address 127.0.0.1
check_command check-host-alive
check_interval 3
retry_interval 1
max_check_attempts 5
check_period 24x7
process_perf_data 0
retain_nonstatus_information 0
contacts nagiosadmin
notifications_enabled 1
notification_interval 30
notification_period 24x7
notification_options d,r
}
define service {
host_name Test_Oracle
service_description check_OraDB
check_command check_MyOracle
event_handler restart-oracle
event_handler_enabled 1
check_interval 5
retry_interval 1
max_check_attempts 5
check_period 24x7
notifications_enabled 1
notification_interval 30
notification_period 24x7
notification_options r,w,c
contacts nagiosadmin
}
には次commands.cfg
のものがあります:
# 'Oracle DB' command definition
define command {
command_name check_MyOracle
command_line $USER1$/check_oracle_on.sh
}
# 'Oracle DB Handler' command definition
define command {
command_name restart-oracle
command_line $USER2$/oracle_handle.sh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$
}
oracle_handle.sh
以下はイベント ハンドラー スクリプトであるスクリプトです。
#!/usr/bin/sh
case "$1" in
OK)
;;
WARNING)
logger "Then it went here"
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/u/oracle/server/oracle12c102/bin
export PATH
ORACLE_HOME=/u/oracle/server/oracle12c102
export ORACLE_HOME
ORACLE_SID=walinv
export ORACLE_SID
echo "ora123" |sqlplus sys@walinv as sysdba @this_file.sql
;;
UNKNOWN)
;;
CRITICAL)
;;
esac
exit 0
this_file.sql
には、 という 1 行が含まれています。これstartup
は、Oracle Database を起動するために使用されます。
また、logger "Then it went here"
イベント ハンドラー スクリプト内に存在する は、Linux ログに表示されます/var/log/messages
。つまり、WARNING
ケースは実行中です。
Nagios イベント ログには次のように表示されます:Nagios イベント ログ スクリプト
ユーザーとしてターミナルでスクリプトを実行するとnagios
、スクリプトは正常に実行され、Oracle データベースが起動します。ただし、nagios
Web サーバー経由で実行すると、Nagios Web モニターで状態が警告のままになり、データベースがダウンします。
ユーザーnagios
は sudoers に存在します。
これに 10 時間以上を無駄にしました。なぜこのようなことが起こるのでしょうか?
イベント ハンドラー スクリプトを実行するときに、Nagios が Oracle データベースを起動しないのはなぜですか?
答え1
動作しました。
私が犯した最初の間違いは、イベント ハンドラー スクリプトで をORACLE_HOME
エクスポートしなかったことです。ORACLE_PATH
2 番目の間違いは次の行にありました:
echo "ora123" |sqlplus sys@walinv as sysdba @this_file.sql
this_file.sql
は にありました。フォルダー\usr\local\nagios\libexec\eventhandlers
からスクリプトを手動で実行していたのでeventhandlers
、this_file.sql
ファイルにアクセスできました。Nagios はこのフォルダーからは実行しません。フルパスを指定して動作させたところ。