
我正在嘗試使用事件處理程序腳本啟動我的 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
包含一行:startup
。它用於啟動 Oracle 資料庫。
此外,logger "Then it went here"
事件處理程序腳本中存在的內容也會顯示在 linux 日誌中/var/log/messages
。所以WARNING
案件正在審理中。
我的 Nagios 事件日誌顯示:Nagios 事件日誌腳本
如果我以nagios
使用者身分在終端機中執行該腳本,則該腳本將完美運行並且 Oracle 資料庫將啟動。但是,如果nagios
透過 Web 伺服器執行它,則在 Nagios Web Monitor 中,狀態仍處於警告狀態且資料庫已關閉。
用戶nagios
在 sudoers 中。
我已經在這上面浪費了10多個小時。為什麼會發生這種情況?
為什麼 Nagios 在執行事件處理程序腳本時不啟動我的 Oracle 資料庫?
答案1
我讓它工作了。
我犯的第一個錯誤是沒有在我的事件處理程序腳本中匯出ORACLE_HOME
和。ORACLE_PATH
第二個錯誤是在這一行:
echo "ora123" |sqlplus sys@walinv as sysdba @this_file.sql
是this_file.sql
在\usr\local\nagios\libexec\eventhandlers
.當我從資料夾手動執行腳本時eventhandlers
,因此this_file.sql
可以存取該文件。 Nagios 不會從此資料夾執行它。當我提到完整路徑並讓它發揮作用時。