Por que o Nagios não pode iniciar o Oracle Database por meio do manipulador de eventos?

0

Estou tentando iniciar meu banco de dados oracle à medida que ele desce usando um script manipulador de eventos.

O arquivo de configuração de 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 script oracle_handle.sh 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 interna: startup . É usado para iniciar o Oracle Database.

Além disso, o logger "Then it went here" presente no script do manipulador de eventos é exibido nos logs do Linux em /var/log/messages . Portanto, o caso WARNING está em execução.

Meu log de eventos do Nagios mostra: Script de log de eventos do Nagios

Se eu executar o script no terminal como nagios user, o script será executado perfeitamente e o Oracle Database será iniciado. No entanto, se nagios executá-lo através do servidor da Web, no Nagios Web Monitor, o estado permanecerá em alerta e o banco de dados estará inativo.

O usuário nagios está em sudoers.

Eu perdi mais de 10 horas nisso. Por que isso está acontecendo?

Por que o Nagios não está iniciando meu banco de dados Oracle quando ele executa o script do manipulador de eventos?

    
por Addzy K 07.04.2017 / 09:19

1 resposta

1

Eu tenho que trabalhar.

O primeiro erro que cometi foi não exportar o ORACLE_HOME e ORACLE_PATH no meu script de 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 pasta eventhandlers , o arquivo this_file.sql estava acessível. O Nagios não o executa desta pasta. Quando eu mencionei o caminho completo e consegui que funcionasse.

    
por 21.04.2017 / 05:43