패턴을 기반으로 로그 파일을 읽어야 합니다.
로그 파일은 예외와 패턴으로 인해 커질 수 있습니다. 다음 예에서는 패턴 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