行を読み取り、エラーログのパターンと一致させます。

行を読み取り、エラーログのパターンと一致させます。

パターンに基づいてログファイルを読み取る必要があります。

ログファイルは例外とパターンのために大きくなる可能性があります。次の例では、パターン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とEメール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

おすすめ記事