Notificación de error

La clase de objeto Notificación de error especifica las condiciones y acciones que deben llevarse a cabo cuando se registran errores en el registro de errores del sistema. El usuario especifica estas condiciones y acciones en un objeto de notificación de error.

Cada vez que se registra un error, el daemon de notificación de error determina si la entrada del registro de errores coincide con los criterios de selección de cualquiera de los objetos de notificación de error. Si existen coincidencias, el daemon ejecuta la acción programada, también denominada método de notificación, para cada objeto coincidente.

La clase de objeto Notificación de error se encuentra en el archivo /etc/objrepos/errnotify . Los objetos de notificación de error se añaden a la clase de objeto utilizando mandatos de Gestor de datos de objeto (ODM). Sólo los procesos que se ejecutan con autorización de usuario root pueden añadir objetos a la clase de objeto Notificación de error. Los objetos de notificación de error contienen los descriptores siguientes:

es_alertflg
Identifica si se puede alertar al error. Este descriptor se proporciona para que lo utilicen los agentes de alerta asociados a aplicaciones de gestión de red que utilizan SNA Alert Architecture. Los valores válidos del descriptor de alerta son:
true
se puede alertar
FALSE
no se puede alertar
es_clase
Identifica la clase de las entradas de registro de errores que deben coincidir. Los valores válidos del descriptor en_class son:
A
Clase de error de hardware
O
Clase de error de software
O
Mensajes del mandato errlogger
Q
Sin determinar
es_crcid
Especifica el identificador de error asociado a un error determinado. Un identificador de error puede ser cualquier valor numérico que sea válido como un valor de atributo de clase de objeto Atributo predefinido (PdAt). El mandato errpt muestra los identificadores de error como hexadecimales. Por ejemplo, para seleccionar una entrada que el mandato errpt muestra con IDENTIFIER: 67581038, especifique en_crcid = 0x67581038.
en_dup
Si se establece, identifica si los errores duplicados definidos por el kernel deben coincidir. Los valores válidos del descriptor en_dup son:
VERDADERO
El error es un duplicado.
FALSE
El error no es un duplicado.
en_err64
Si se establece, identifica si los errores de un entorno de 64 bits o de 32 bits deben coincidir. El valor válido de los descriptores en_err64 es:
VERDADERO
El error procede de un entorno de 64 bits.
FALSE
El error procede de un entorno de 32 bits.
etiqueta_ES
Especifica la etiqueta asociada a un identificador de error determinado tal como se define en la salida del mandato errpt -t .
método_ES
Especifica una acción programable por el usuario, como un script de shell o una serie de mandato, que se debe ejecutar cuando se registra un error que coincide con los criterios de selección de este objeto de notificación de error. El demonio de notificación de errores utiliza el comando sh -c para ejecutar el método notify.

Las siguientes palabras clave se expanden automáticamente mediante el daemon de notificación de error como argumentos para el método de notificación.

1 $
Número de secuencia de la entrada de registro de errores
2 $
ID de error de la entrada de registro de errores
3 $
Clase de la entrada de registro de errores
4 $
Escriba desde la entrada del registro de errores
5 USD
Valor de distintivos de alerta de la entrada de registro de errores
6 $
Nombre de recurso de la entrada de registro de errores
7 USD
Tipo de recurso de la entrada de registro de errores
8 $
Clase de recurso de la entrada de registro de errores
9 $
Etiqueta de error de la entrada de registro de errores
nombre_es
Identifica de forma exclusiva el objeto. Este nombre exclusivo se utiliza al eliminar el objeto.
en_persistenceflg
Indica si el objeto de notificación de error debe eliminarse automáticamente cuando se reinicia el sistema. Por ejemplo, para evitar la señalización errónea, los objetos de notificación de error que contienen métodos que envían una señal a otro proceso no deben persistir en los reinicios del sistema. El proceso receptor y su ID de proceso no persisten en los reinicios del sistema.

El creador del objeto Notificación de error es responsable de eliminar el objeto Notificación de error en el momento adecuado. En el caso de que el proceso termine y no pueda eliminar el objeto de notificación de error, el descriptor en_persistenceflg garantiza que los objetos de notificación de error obsoletos se eliminen cuando se reinicie el sistema.

Los valores válidos del descriptor en_persistenceflg son:

0
no persistente (eliminado durante el arranque)
1
persistente (persiste durante el arranque)
en_pid
Especifica un ID de proceso (PID) para utilizarlo en la identificación del objeto Notificación de error. Los objetos que tienen un PID especificado deben tener el descriptor en_persistenceflg establecido en 0.
en_rclass
Identifica la clase del recurso anómalo. Para la clase de error de hardware, la clase de recurso es la clase de dispositivo. La clase de error de recurso no es aplicable para la clase de error de software.
es_recurso
Identifica el nombre del recurso anómalo. Para la clase de error de hardware, un nombre de recurso es el nombre de dispositivo.
tipo_es_ES
Identifica el tipo del recurso anómalo. Para la clase de error de hardware, un tipo de recurso es el tipo de dispositivo por el que se conoce un recurso en la clase de objeto de dispositivos.
en_síntoma
Habilita la notificación de un error acompañado de una serie de síntomas cuando se establece en TRUE.
tipo_es
Identifica la gravedad de las entradas de registro de errores que deben coincidir. Los valores válidos del descriptor en_type son:
INFO
Informativo
PENDIENTE
Pérdida inminente de disponibilidad
Tamaño
Permanente
perf
Degradación inaceptable del rendimiento
TEMP
Temporal
UNKN
Desconocido

Ejemplos

  1. Para crear un método de notificación que envíe una entrada de error formateada a root cada vez que se registre un error de disco de tipo PERM, cree un archivo denominado/tmp/en_sample.addque contiene el siguiente objeto de notificación de error:
    errnotify:
        en_name = "sample"
        en_persistenceflg = 0
        en_class = "H"
        en_type = "PERM"
        en_rclass = "disk"
        en_method = "errpt -a -l $1 | mail -s 'Disk Error' root"
    Para añadir el objeto a la clase de objeto Notificación de error, escriba:
    odmadd /tmp/en_sample.add
    El mandato odmadd añade el objeto de notificación de error contenido en /tmp/en_sample.add al archivo errnotify .
  2. Para verificar que el objeto de notificación de error se ha añadido a la clase de objeto, escriba:
    odmget -q"en_name='sample'" errnotify
    El mandato odmget localiza el objeto de notificación de error en el archivo errnotify que tiene un valor en_name de"sample"y muestra el objeto. Se devuelve la salida siguiente:
    errnotify:
        en_pid = 0
        en_name = "sample"
        en_persistenceflg = 0
        en_label = ""
        en_crcid = 0
        en_class = "H"
        en_type = "PERM"
        en_alertflg = ""
        en_resource = ""
        en_rtype = ""
        en_rclass = "disk"
        en_method = "errpt -a -l $1 | mail -s 'Disk Error' root"
  3. Para suprimir elsampleObjeto de notificación de error de la clase de objeto de notificación de error, tipo:
    odmdelete -q"en_name='sample'" -o errnotify
    El mandato odmdelete localiza el objeto de notificación de error dentro del archivo errnotify que tiene un valor en_name de "sample"y lo elimina de la clase de objeto de notificación de error.
  4. Para enviar un correo electrónico a root cuando se produzca un error de duplicado, cree un archivo denominado /tmp/en_sample.add que contenga la siguiente stanza de notificación de error:
    errnotify:
            en_name = "errdupxmp"
            en_persistenceflg = 1
            en_dup = "TRUE"
            en_method = "/usr/lib/dupmethod $1"

    Cree el script /usr/lib/dupmethod de la siguiente manera:

    #!/bin/sh
    # email root when a duplicate error is logged. 
    # We currently don't clear the duplicate from the log.
    # 
    # Input: 
    #   $1 contains the error log sequence number.
    #
    # Use errpt to generate the body of this email. 
    /usr/bin/errpt -al$1 | /usr/bin/mail -s "Duplicate Error Logged" root >/dev/null 
    
    # Now delete that error (currently not done)
    #/usr/bin/errclear -l$1 0 
    exit $?