
Estou tentando iniciar meu banco de dados Oracle à medida que ele cai usando um script de manipulador de eventos.
O arquivo de configuração do objeto oraclehost.cfg
possui:
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
}
O commands.cfg
tem:
# '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$
}
Aqui está o oracle_handle.sh
script que é o script do manipulador de eventos.
#!/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
O this_file.sql
contém uma única linha dentro: startup
. É usado para iniciar o banco de dados Oracle.
Além disso, o logger "Then it went here"
que está presente no script do manipulador de eventos aparece nos logs do Linux /var/log/messages
. Então o WARNING
caso está correndo.
Meu log de eventos do Nagios mostra:Script de registro de eventos do Nagios
Se eu executar o script no terminal como nagios
usuário, o script será executado perfeitamente e o Oracle Database será iniciado. Porém, se nagios
for executado através do servidor web, no Nagios Web Monitor o estado permanece em warning e o banco de dados fica inativo.
O nagios
usuário está em sudoers.
Já perdi mais de 10 horas nisso. Por que isso está acontecendo?
Por que o Nagios não inicia meu banco de dados Oracle quando executa o script do manipulador de eventos?
Responder1
Eu fiz funcionar.
O primeiro erro que cometi foi não exportar ORACLE_HOME
e ORACLE_PATH
no script do manipulador de eventos.
O segundo erro foi nesta linha:
echo "ora123" |sqlplus sys@walinv as sysdba @this_file.sql
O this_file.sql
estava no \usr\local\nagios\libexec\eventhandlers
. Quando eu estava executando o script manualmente a partir da eventhandlers
pasta, o this_file.sql
arquivo estava acessível. O Nagios não o executa nesta pasta. Quando mencionei o caminho completo e fiz funcionar.