행을 읽고 오류 로그의 패턴과 일치시킵니다.

행을 읽고 오류 로그의 패턴과 일치시킵니다.

패턴을 기반으로 로그 파일을 읽어야 합니다.

로그 파일은 예외와 패턴으로 인해 커질 수 있습니다. 다음 예에서는 패턴 000451의 전체 행을 읽고 패턴 000451을 기반으로 이메일을 통해 보내야 합니다. 쉘 스크립트를 사용하여 이를 수행하는 방법. 로그 파일에 있기 때문에 5분마다 패턴을 읽고 패턴이 일치하면 이메일을 보내야 합니다.

<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>

당신의 도움을 주셔서 감사합니다.

답변1

이 스크립트가 5분 또는 10분마다 실행되도록 예약하세요.

로그의 이전 경고와 새 개수만 비교합니다.

스크립트에서 DB_LOG_FILE 및 이메일 ID를 변경하세요.

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

관련 정보