读取行并与错误日志中的模式进行匹配

读取行并与错误日志中的模式进行匹配

我需要根据模式读取日志文件。

日志文件可以随着异常和模式而增长。在下面的示例中,我必须从模式 000451 读取整行并根据模式 000451 读取整行并通过电子邮件发送。如何使用 shell 脚本来做到这一点。因为它在日志文件中,所以每 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

相关内容