Como configurar o Simple Event Correlator (SEC) para enviar informações sobre falha na entrega de mensagens

0

Meu arquivo de log contém as seguintes 3 entradas de log:

2017-11-16 15:50:45 1eFLV7-0003so-Cd <= <> R=1eFLV7-0003sZ-4v U=Debian-exim P=local S=1853 T="Mail delivery failed: returning message to sender" from <>
2017-11-16 15:50:45 1eFLV7-0003so-Cd => [email protected] R=dnslookup T=remote_smtp H=smtp-51.xxx.com [xxx.xx.xx.xx] X=TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128
2017-11-16 15:50:45 1eFLV7-0003so-Cd Completed

Eu quero ter um email enviado para mim, quando uma entrada "Falha na entrega de email * admins @ .xxx.com" aparecer no arquivo de log.

Como posso conseguir isso?

Talvez o SEC - Simple Event Correlator possa me ajudar?

Mas a configuração abaixo (padrão) não funciona para mim.

type=SingleWithThreshold
ptype=RegExp
pattern=Mail delivery failed: returning message to sender*[email protected]
desc=Problem with mail [email protected]
action=pipe '%s' /usr/bin/mail -s 'ERROR SEND MAIL' [email protected]
window=1
thresh=1
    
por debek 28.12.2017 / 09:56

2 respostas

0

Pelo que entendi, você quer combinar duas linhas consecutivas que se originam do mesmo arquivo de entrada. Se esse for o caso, a solução mais fácil seria usar o padrão RegExp2. Na verdade, a SEC opera em modo de várias linhas a qualquer momento sem nenhuma opção de linha de comando especial, e o número de linhas correspondidas por qualquer padrão é definido com a palavra-chave 'ptype'. Aqui está a regra que pode ser útil para você:

type=Single
ptype=RegExp2
pattern=Mail delivery failed: returning message to sender.*\n.*admins@xxx\.com
desc=Problem with mail [email protected]
action=pipe '%s' /usr/bin/mail -s 'ERROR SEND MAIL' [email protected]

Nesta regra, 'RegExp2' significa "uma expressão regular que corresponde a 2 linhas consecutivas". Por padrão, essas linhas devem originar-se do arquivo mesmo , mas a opção da linha de comandos --jointbuf eleva essa restrição. No entanto, em circunstâncias normais, você não desejará usar essa opção, pois coloca eventos de todas as fontes no mesmo buffer de entrada para correspondência de várias linhas, mas a ordem dos eventos não é determinada.

Na regra de exemplo acima, observe também a expressão regular:

Mail delivery failed: returning message to sender.*\n.*admins@xxx\.com

Como por padrão. * não corresponde à nova linha, a expressão também aproveita \ n para corresponder ao caractere de nova linha.

Finalmente, também gostaria de convidar você a postar mais perguntas sobre a SEC para sua lista de discussão ( link ), uma vez que vários usuários experientes o estão seguindo, que podem responder prontamente a perguntas semelhantes.

Atenciosamente, risto

    
por 01.01.2018 / 15:58
1

Você está usando SingleWithThreshold e esperando que o * corresponda a duas linhas - não será. Experimente Pair .

Algo como (não testado),

type=Pair
ptype=RegExp
pattern=Mail delivery failed: returning message to sender
ptype2=RegExp
[email protected]
desc2=Problem with mail [email protected]
action2=pipe '%s' /usr/bin/mail -s 'ERROR SEND MAIL' [email protected]
window=1

Qualquer coisa que você tente precisa lidar com o fato de ter duas linhas de texto, separadas por uma nova linha. Muitas ferramentas de processamento de texto funcionarão em linhas individuais, e o caractere asterisco não contornará isso observando a próxima linha também.

    
por 28.12.2017 / 10:06