¿Por qué Nagios no puede iniciar la base de datos Oracle a través del controlador de eventos?

¿Por qué Nagios no puede iniciar la base de datos Oracle a través del controlador de eventos?

Estoy intentando iniciar mi base de datos Oracle a medida que cae usando un script de controlador de eventos.

El archivo de configuración del objeto oraclehost.cfgtiene:

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
}

El commands.cfgtener:

# '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$
}

Aquí está el oracle_handle.shscript que es el script del controlador 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

Contiene this_file.sqluna sola línea dentro: startup. Se utiliza para iniciar la base de datos Oracle.

Además, logger "Then it went here"lo que está presente en el script del controlador de eventos aparece en los registros de Linux /var/log/messages. Entonces el WARNINGcaso está en marcha.

Mi registro de eventos de Nagios muestra:Script de registro de eventos de Nagios

Si ejecuto el script en la terminal como nagiosusuario, el script se ejecuta perfectamente y se inicia Oracle Database. Sin embargo, si nagioslo ejecuta a través del servidor web, en Nagios Web Monitor el estado permanece en advertencia y la base de datos está inactiva.

El nagiosusuario está en sudoers.

He perdido más de 10 horas en esto. ¿Por qué está pasando esto?

¿Por qué Nagios no inicia mi base de datos Oracle cuando ejecuta el script del controlador de eventos?

Respuesta1

Yo tengo que trabajar.

El primer error que cometí fue no exportar ORACLE_HOMEy ORACLE_PATHen mi script de controlador de eventos.

El segundo error fue en esta línea:

echo "ora123" |sqlplus sys@walinv as sysdba @this_file.sql

El this_file.sqlestaba en el \usr\local\nagios\libexec\eventhandlers. Cuando estaba ejecutando el script manualmente desde la eventhandlerscarpeta, se this_file.sqlpodía acceder al archivo. Nagios no lo ejecuta desde esta carpeta. Cuando mencioné la ruta completa y lo puse a funcionar.

información relacionada