Notificação de erro

A classe de objeto de Notificação de Erro especifica as condições e as ações a serem tomadas quando os erros são registrados no log de erros do sistema. O usuário especifica essas condições e ações em um objeto de Notificação de Erro.

Cada vez que um erro é registrado, o daemon notificação de erro determina se a entrada do log de erro corresponde aos critérios de seleção de qualquer um dos objetos de Notificação de Erro. Se correspondências existirem, o daemon executa a ação programada, também chamada de método de notificação, para cada objeto correspondido.

A classe de objeto de Notificação de Erro está localizada no arquivo /etc/objrepos/errnotify . Objetos de Notificação de Erro são incluídos na classe de objeto usando comandos do Object Data Manager (ODM). Apenas processos em execução com a autoridade do usuário root podem adicionar objetos à classe de objeto de Notificação de Erro. Os objetos de Notificação de Erro contêm os seguintes descritores:

en_alertflg
Identifica se o erro pode ser alertado. Este descritor é fornecido para uso por agentes de alerta associados a aplicativos de gerenciamento de rede utilizando o SNA Arquitetura Alert. Os valores de descritor de alerta válidos são:
true
pode ser alertado
FALSO
não pode ser alertado
classe_en
Identifica a classe das entradas do log de erro para combinar. Os valores de descritor en_class válidos são:
S
Classe de Erro de Hardware
S
Classe de Erro de Software
o
Mensagens do comando errlogger
U
Indeterminado
en_crcid
Especifica o identificador de erro associado a um determinado erro. Um identificador de erro pode ser qualquer valor numérico que seja válido como um valor de atributo de classe de objeto Atributo Predefinido (PdAt). O comando errpt exibe identificadores de erro como hexadecimal. Por exemplo, para selecionar uma entrada que o comando errpt exibe com IDENTIFIER: 67581038, especifique en_crcid = 0x67581038.
en_dup
Se configurado, identifica se erros duplicados conforme definido pelo kernel devem ser correspondidos. Os valores do descritor de en_dup válidos são:
VERDADEIRO
Erro é uma duplicata.
FALSO
Erro não é uma duplicata.
en_err64
Se configurado, identifique se erros de um ambiente de 64-bit ou 32-bit devem ser correspondidos. O valor de descritores válidos en_err64 são:
VERDADEIRO
Erro é de um ambiente de 64-bit.
FALSO
Erro é de um ambiente de 32-bit.
en_label
Especifica o rótulo associado a um identificador de erro particular conforme definido na saída do comando errpt -t .
en_method
Especifica uma ação programável pelo usuário, como um script shell ou cadeia de comandos, a ser executado quando um erro correspondente aos critérios de seleção deste objeto de Notificação de Erro é registrado. O daemon de notificação de erros usa o comando sh -c para executar o método notify.

As palavras chave a seguir são expandidas automaticamente pelo daemon notificação de erro como argumentos para o método de notificação.

$1
Número da sequência a partir da entrada do log de erros
$2
Erro ID da entrada do log de erro
$3
Classe a partir da entrada do log de erro
$4
Digite a partir da entrada do log de erro
$5
Alerta de valor das bandeiras da entrada do log de erro
$6
Nome do recurso a partir da entrada do log de erro
$7
Tipo de recurso a partir da entrada do log de erro
$8
Classe de recursos a partir da entrada do log de erro
$9
Erro rótulo da entrada do log de erro
en_name
Identifica-se com exclusividade o objeto. Este nome exclusivo é usado ao remover o objeto.
en_persistenceflg
Designa se o objeto de Notificação de Erro deve ser removido automaticamente quando o sistema é reiniciado. Por exemplo, para evitar sinalização errônea, os objetos de Notificação de Erro contendo métodos que enviam um sinal para outro processo não devem persistir através de reinícios do sistema. O processo de recebimento e seu ID de processo não persistem através de reinicializações do sistema.

O criador do objeto de Notificação de Erro é responsável por remover o objeto de Notificação de Erro no momento apropriado. No caso de o processo ser finalizado e falhar ao remover o objeto de Notificação de Erro, o descritor en_persistenceflg garante que objetos obsoletos de Notificação de Erro sejam removidos quando o sistema for reiniciado.

Os valores de descritor válidos en_persistenceflg são:

0
não persistente (removido no tempo de inicialização)
1
persistente (persiste através de boot)
en_pid
Especifica um ID de processo (PID) para uso na identificação do objeto de Notificação de Erro. Os objetos que possuem um PID especificado devem ter o descritor en_persistenceflg configurado para 0.
classe en_r
Identifica a classe do recurso falho. Para a classe de erro de hardware, a classe de recursos é a classe de dispositivo. A classe de erro de recurso não é aplicável para a classe de erro de software.
en_recurso
Identifica o nome do recurso falho. Para a classe de erro de hardware, um nome de recurso é o nome do dispositivo.
en_rtype
Identifica o tipo do recurso falho. Para a classe de erro de hardware, um tipo de recurso é o tipo de dispositivo pelo qual um recurso é conhecido na classe de objetos de dispositivos.
en_sintoma
Possibilita a notificação de um erro acompanhado de uma sequência de sintomas quando configurado como TRUE.
en_type
Identifica a gravidade das entradas do log de erro para correspondência. Os valores do descritor en_type válidos são:
INFORMAÇÃO
Informativo
PENDENTE
Perda iminente de disponibilidade
PERM
Permanente
perf
Degradação de desempenho inaceitável
TEMP
Temporário
DESCONHECIDO
Desconhecido

Exemplos

  1. Para criar um método de notificação que mails uma entrada de erro formatada para root cada vez que um erro de disco do tipo PERM for logado, crie um arquivo chamado/tmp/en_sample.addcontendo o seguinte objeto de Notificação de Erro:
    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 adicionar o objeto à classe de objeto de Notificação de Erro, digite:
    odmadd /tmp/en_sample.add
    O comando odmadd adiciica o objeto de Notificação de Erro contido em /tmp/en_sample.add ao arquivo errnotificar .
  2. Para verificar se o objeto de Notificação de Erro foi adicionado à classe de objeto, digite:
    odmget -q"en_name='sample'" errnotify
    O comando odmget localiza o objeto de Notificação de Erro dentro do arquivo errnotificar que tem um valor en_name de"sample"e exibe o objeto. A saída a seguir é devolvida:
    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 excluir osampleErro de Notificação de erro da classe de objeto de Notificação de Erro, digite:
    odmdelete -q"en_name='sample'" -o errnotify
    O comando odmdelete localiza o objeto de Notificação de Erro dentro do arquivo errnotificar que tem um valor en_name de "sample"e remove-o da classe de objeto de Notificação de Erro.
  4. Para enviar um e-mail para root quando ocorrer um erro duplicado, crie um arquivo chamado /tmp/en_sample.add contendo a estrofe de notificação de erro a seguir:
    errnotify:
            en_name = "errdupxmp"
            en_persistenceflg = 1
            en_dup = "TRUE"
            en_method = "/usr/lib/dupmethod $1"

    Crie o script /usr/lib/dupmethod da seguinte forma:

    #!/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 $?