Create Notifications

1. Documentación en Tahiti -> Oracle Enterprise Manager, 11g Release 1 (11.1) -> Administrator’s Guide -> 3 Notifications

2. Lo primero que vamos a hacer es configurar el servidor SMTP para que nos funcionen las notificaciones por correo electrónico. Vamos a utilizar el servidor de Google Mail para ello, ya que todo el mundo puede crearse una cuenta de correo gratuita. Las pruebas las vamos a realizar sobre la BD OCM, así que este objetivo requiere haber realizado primero “Deploy Enterprise Manager Grid Control Agents”.

Click “Setup” ->
-> Click “Notification Methods” ->
-> Outgoing Mail (SMTP) Server = “smtp.gmail.com:465” ->
-> User Name = “ocm@dbajunior.com” ->
-> Password / Confirm Password = “****************” ->
-> Identify Sender As = “OCM Notifications” ->
-> Sender’s E-mail Address = “ocm@dbajunior.com” ->
-> Use Secure Connection = “SSL” ->
-> Click “Apply” ->
-> Click “Test Mail Servers” ->
-> Click “OK”

3. Verificamos que hemos introducido una cuenta de correo para notificarnos a nosotros mismos.

Click “Preferences” ->
-> Comprobamos la dirección en la sección “E-mail Addresses” ->
-> Validamos también que está configurado Message Format = “Long Format” ->
-> Click “Test”

4. Hay una serie de reglas por defecto “Out-of-Box Notification Rules” que nos permiten configurar el envío de notificaciones por correo electrónico cuando se producen alertas críticas para ciertas reglas. Nos interesa especialmente recibir notificaciones por alertas críticas en BBDD, Listeners, Hosts y Agentes.

Click “Preferences” ->
-> Click “Rules” ->
-> Click “Subscribe (Send E-mail)” en “Agent Upload Problems” ->
-> Click “Subscribe (Send E-mail)” en “Agents Unreachable” ->
-> Click “Subscribe (Send E-mail)” en “Database Availability and Critical States” ->
-> Click “Subscribe (Send E-mail)” en “Host Availability and Critical States” ->
-> Click “Subscribe (Send E-mail)” en “Listener Availability” ->
-> Click “Apply”

Vamos a probar que hemos configurado correctamente las notificaciones. Para ello vamos a bajar la instancia OCM (shutdown immediate) y tenemos que recibir un correo tal que:

Target Name=OCM
Target type=Database Instance
Host=ocm.dbajunior.com
Occurred At=Mar 3, 2013 12:54:58 PM CET
Message=Failed to connect to database instance: ORA-01034: ORACLE not available.
Severity=Critical
Acknowledged=No
Notification Rule Name=Database Availability and Critical States
Notification Rule Owner=SYSMAN

Tras recibirlo levantamos la instancia.

5. Se pueden modificar las reglas por defecto o crear nuevas reglas con métricas sobre las que queramos recibir notificaciones. No vamos a entrar en la forma de hacerlo ya que es bastante intuito pero me parece interesante ver cuáles son las métricas de BD que tienen notificaciones.

Click “Preferences” ->
-> Click “Rules” ->
-> Seleccionamos “Database Availability and Critical States” ->
-> Click “View”

Observamos las métricas que están incluidas en esta regla. Si en vez de ir a “View”, pinchamos en “Edit” podemos añadir nuevas métricas o borrar las que deseemos. Nos puede resultar interesante crear una regla nueva con métricas espécificas

6. Ya hemos visto el formato que tienen los correos electrónicas que nos avisan de alertas críticas. Este formato se puede modificar a nuestro gusto siguiendo un formato específico. No me preocupa demasiado el formato, pero vamos a localizar donde podemos cambiarlo.

Click “Setup” ->
-> Click “E-mail Customization” ->
-> Vemos que podemos cambiar el formato para los distintos tipos de Alertas ->
-> Seleccionamos Alert Type = “Metric Alert” ->
-> Click “Edit”

En esta página, además de poder cambiar el formato de las notificaciones, podemos ver la ayuda de las posibilidad que tenemos a la hora de definir un nuevo formato. Se pueden añadir varios atributos o variables a los mensajes e incluso utilizar etiquetas “LABELS” para que las notificaciones salgan en el idioma que esta definido en el OMS (no recomendable esto último).

7. Aparte de las notificaciones por correo electrónico, se pueden configurar notificaciones a través de comandos de SO (OS Command), procedimiento PL/SQL (PL/SQL Procedure) y notificaciones SNMP (SNMP Trap).

Vamos a probar a configurar una notificación a partir de un comando de Sistema Operativo. Lo primero de todo es crear el script en la máquina del OMS. En caso de que tuvieramos varios OMS, debemos desplegar el script en todos ellos.

Creamos el archivo “/tmp/testoscommand.sh” con el usuario oracle en la máquina OEM.

#!/bin/sh

LOG_FILE=/tmp/testoscommand.log

echo "Alert logged:" >> $LOG_FILE
echo "" >> $LOG_FILE
echo "target name is " $TARGET_NAME >> $LOG_FILE
echo "target type is " $TARGET_TYPE >> $LOG_FILE
echo "target is on host " $HOST >> $LOG_FILE
echo "metric in alert is " $METRIC >> $LOG_FILE
echo "metric index is " $KEY_VALUE >> $LOG_FILE
echo "timestamp is " $TIMESTAMP >> $LOG_FILE
echo "severity is " $SEVERITY >> $LOG_FILE
echo "message is " $MESSAGE >> $LOG_FILE
echo "notification rule is " $RULE_NAME >> $LOG_FILE
echo "rule owner is " $RULE_OWNER >> $LOG_FILE

exit 0

Le damos permisos de ejecución.

chmod u+x /tmp/testoscommand.sh

Configuramos la notificación en Grid Control.

Click “Setup” ->
-> Click “Notification Methods” ->
-> Add = “OS Command” ->
-> Click “Go” ->
-> Name = “Test OS Command” ->
-> OS Command = “/tmp/testoscommand.sh” ->
-> Click “Test OS Command” ->
-> Click “OK” ->
-> Click “OK”

Una vez tenemos el nuevo método de notificación, tenemos que asignarlo a la reglas.

Click “Preferences” ->
-> Click “Rules” ->
-> Click “Assign Methods to Multiple Rules” ->
-> View = “By Method” ->
-> Expandimos la vista “Test OS Command (OS Command : No )” ->
-> Click “Assign Method to Rule” en “Agent Upload Problems” ->
-> Click “Assign Method to Rule” en “Agents Unreachable” ->
-> Click “Assign Method to Rule” en “Database Availability and Critical States” ->
-> Click “Assign Method to Rule” en “Host Availability and Critical States” ->
-> Click “Assign Method to Rule” en “Listener Availability” ->
-> Click “OK”

Vamos a probar el nuevo método bajando la instancia OCM. Debe aperecer el siguiente contenido o similar en el fichero “/tmp/testoscommand.log”. Una vez hayamos validado la notificación levantamos de nuevo la instancia OCM.

cat /tmp/testoscommand.log
...
...
Alert logged:

target name is  OCM
target type is  Database Instance
target is on host  ocm.dbajunior.com
metric in alert is  Status
metric index is
timestamp is  Mar 3, 2013 2:55:24 PM CET
severity is  Critical
message is  Failed to connect to database instance: ORA-01034: ORACLE not available.
notification rule is  Database Availability and Critical States
rule owner is  SYSMAN