為什麼 Nagios 無法透過事件處理程序啟動 Oracle 資料庫?

為什麼 Nagios 無法透過事件處理程序啟動 Oracle 資料庫?

我正在嘗試使用事件處理程序腳本啟動我的 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 不會從此資料夾執行它。當我提到完整路徑並讓它發揮作用時。

相關內容