Lê linhas e combina com o padrão no log de erros

0

Eu tenho necessidade de ler o arquivo de log contra o padrão.

O arquivo de log pode crescer com exceção e padrão. no exemplo abaixo eu tenho que ler a linha inteira de e contra o padrão 000451 e enviar por e-mail. como fazê-lo usando scripts de shell. desde que no arquivo de log assim em cada 5 minutos eu tenho que ler padrão e enviar e-mail se o padrão corresponde.

<MqException: BEGIN>
Code: SQL-8201: Database error. SQL state . Database specific error code (if any) was 0. Database error message (if any) was: java.sql.SQLException: javax.resource.ResourceException: 000451: 
EXCEPTIONMESSAGE: java.sql.SQLException: javax.resource.ResourceException: IJ000451: The connection manager is shutdown: java:jboss/eCMDataSource
STACKTRACE: java.sql.SQLException: javax.resource.ResourceException: 000451: 
        at org.jboss.jca.adapters.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:137)
        at com.tibco.mdm.infrastructure.db.DBUtil.getConnection(DBUtil.java:643)
        at com.tibco.mdm.infrastructure.config.dao.StickyConfigurationDocumentDAO.updateDocument(StickyConfigurationDocumentDAO.java:93)


EXCEPTIONMESSAGE: javax.resource.ResourceException: 000451: The connection manager is shutdown: 
ERRORMESSAGE: Failed to get connection.
<MqException: END>

sua ajuda aprecia.

    
por Raghu Sonigara 11.10.2016 / 03:48

1 resposta

0

agende esse script para ser executado a cada 5 ou 10 minutos.

ele apenas compara o alerta antigo com a nova contagem dos registros.

altere o DB_LOG_FILE e seu ID de e-mail no script

#!/bin/bash

EXTRACT_FILE=/tmp/$(date +%Y%m%d).txt
touch ${EXTRACT_FILE}
DB_LOG_FILE=/tmp/db.log

PREV_COUNT=$(wc -l < ${EXTRACT_FILE})

grep "000451" ${DB_LOG_FILE} > ${EXTRACT_FILE}
CURRENT_COUNT=$(wc -l < ${EXTRACT_FILE})

if [ "${PREV_COUNT]" -ne "${CURRENT_COUNT}" ]
then
    mail -s "Database Error Found" "[email protected]" < ${EXTRACT_FILE}
else
    echo "No new alerts"
fi
    
por 11.10.2016 / 04:23