パターンに基づいてログファイルを読み取る必要があります。
ログファイルは例外とパターンのために大きくなる可能性があります。次の例では、パターン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