Я пытаюсь запустить свою базу данных 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
содержит внутри одну строку: запуск
.
Он используется для запуска Oracle Database.
Также регистратор «Затем он пошел сюда»
, который присутствует в сценарии обработчика событий, отображается в журналах Linux в / var / log / messages
. Таким образом, выполняется случай ПРЕДУПРЕЖДЕНИЕ
.
В моем журнале событий Nagios указано: Сценарий журнала событий Nagios
Если я запускаю сценарий в терминале как пользователь nagios
, сценарий работает отлично и запускается база данных Oracle. Однако, если nagios
запускает его через веб-сервер, в Nagios Web Monitor сохраняется состояние предупреждения и база данных не работает.
Пользователь nagios
находится в sudoers.
Я потратил на это более 10 часов. Почему это происходит?
Почему Nagios не запускает мою базу данных Oracle, когда запускает сценарий обработчика событий?
У меня получилось.
Первая ошибка, которую я допустил - не экспортировал 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 не выполняет его из этой папки. Когда я указал полный путь и заставил его работать.