我需要根据模式读取日志文件。
日志文件可以随着异常和模式而增长。在下面的示例中,我必须从模式 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