`
can_do
  • 浏览: 272309 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Do家】Linux下监控日志提取特征数据并邮件报警

阅读更多
#!/bin/bash
#receiver mail list
export receiver_mail_address=you@cnd.com,me@cnd.com,him@cnd.com

#application log file location
export applicaton_log_8081=/data/log/tomcat_logs8081/web_error.log
export applicaton_log_8088=/data/log/tomcat_logs8088/web_error.log
export collect_error_log_8081=/data/log/tomcat_logs8081/collect_error
export collect_error_log_8088=/data/log/tomcat_logs8088/collect_error

export mail_content_file=/root/can_do/mail_log.txt

export line_switch_char="<br>"
export env_identifier="Product"

export keyword4app_exception="com.cnd.base.handle.ExceptionHandle"
export keyword4sql_exception="nested exception is com.mysql.jdbc."
export keyword4jdk_exception="java.*.Exception"

# Note how an string variable is applcation to grep statement
export error_num4app_8081=`grep "$keyword4app_exception" ${applicaton_log_8081} |wc -l`
export error_num4sql_8081=`grep "$keyword4sql_exception" ${applicaton_log_8081} |wc -l`
export error_num4jdkexception_8081=`grep "$keyword4jdk_exception" ${applicaton_log_8081} |wc -l`
export error_num4app_8088=`grep "$keyword4app_exception" ${applicaton_log_8088} |wc -l`
export error_num4sql_8088=`grep "$keyword4sql_exception" ${applicaton_log_8088} |wc -l`
export error_num4jdkexception_8088=`grep "$keyword4jdk_exception" ${applicaton_log_8088} |wc -l`

#this operation is overriding
echo "【${env_identifier}】${line_switch_char}" > ${mail_content_file}
#this operation is appending

# decide whether app log 8081 has error or not
if [ ${error_num4app_8081} -gt 0 ] || [ ${error_num4sql_8081} -gt 0 ] || [ ${error_num4jdkexception_8081} -gt 0 ] 
then  
   echo "The application ${applicaton_log_8081} has $[${error_num4app_8081}+${error_num4sql_8081}+${error_num4jdkexception_8081}]  errors.${line_switch_char} The detail error as the following:${line_switch_char}" >> ${mail_content_file}
   if [ ${error_num4app_8081} -gt 0 ]
     then 
       grep "$keyword4app_exception" ${applicaton_log_8081} -A 5 >> ${mail_content_file}
   fi
   if [ ${error_num4sql_8081} -gt 0 ]
     then
       grep "$keyword4sql_exception" ${applicaton_log_8081} -A 5 >> ${mail_content_file}
   fi
   if [ ${error_num4jdkexception_8081} -gt 0 ]
     then
       grep "$keyword4jdk_exception" ${applicaton_log_8081} -A 5 >> ${mail_content_file}
   fi
   cp ${applicaton_log_8081} ${collect_error_log_8081}/web_error_`date +%Y%m%d_%H%M`.log
   echo "" > ${applicaton_log_8081}
fi

# decide whether app log 8088 has error or not
if [ ${error_num4app_8088} -gt 0 ] || [ ${error_num4sql_8088} -gt 0 ] || [ ${error_num4jdkexception_8088} -gt 0 ] 
then  
   echo "The application ${applicaton_log_8088} has $[${error_num4app_8088}+${error_num4sql_8088}+${error_num4jdkexception_8088}]  errors.${line_switch_char} The detail error as the following:${line_switch_char}" >> ${mail_content_file}
   if [ ${error_num4app_8088} -gt 0 ]
     then
       grep "$keyword4app_exception" ${applicaton_log_8088} -A 5 >> ${mail_content_file}
   fi
   if [ ${error_num4sql_8088} -gt 0 ]
     then
       grep "$keyword4sql_exception" ${applicaton_log_8088} -A 5 >> ${mail_content_file}
   fi
   if [ ${error_num4jdkexception_8088} -gt 0 ]
     then
       grep "$keyword4jdk_exception" ${applicaton_log_8088} -A 5 >> ${mail_content_file}
   fi
   cp ${applicaton_log_8088} ${collect_error_log_8088}/web_error_`date +%Y%m%d_%H%M`.log
   echo "" > ${applicaton_log_8088}
fi
# decide whether send mail to monitor or not
if [ ${error_num4app_8081} -gt 0 ] || [ ${error_num4app_8088} -gt 0 ] || [ ${error_num4sql_8081} -gt 0 ] || [ ${error_num4sql_8088} -gt 0 ] || [ ${error_num4jdkexception_8081} -gt 0 ] || [ ${error_num4jdkexception_8088} -gt 0 ]
then
  mail -s "System Monitor Log" ${receiver_mail_address}  < ${mail_content_file}
fi
#放在crontab执行以上命令脚本
#*/5 *  * * * /root/can_do/monitorApplicationAccessLog.sh



【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:

分享到:
评论

相关推荐

    linux流量监控脚本

    - **邮件报警机制**:当检测到流量异常(如超出阈值)时,通过发送邮件等方式及时通知管理员。 - **支持多个网卡**:修改脚本使其能够支持监控多个网卡的流量信息。 - **图形化展示**:使用`gnuplot`等工具绘制流量...

    LINUX下的流量监控shell脚本

    ### Linux下的流量监控Shell脚本知识点详解 #### 一、脚本概述 本文将详细介绍一个用于Linux环境下的网络流量监控Shell脚本。该脚本能够适用于任何Linux版本,并且已经过CentOS系统的测试验证。其核心功能是实时...

    几个常用的Linux操作系统监控脚本代码

    本文将详细介绍几个常用的Linux监控脚本,涵盖主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等多方面的自动监控与报警功能。 #### 1. 查看主机网卡流量 这个脚本用于监控特定网络接口(如eth0)的...

    linux的shell脚本编程

    3. 日志分析:从日志文件中提取特定信息,进行统计或报警。 总之,Linux Shell脚本编程是Linux环境下的强大工具,能够帮助我们简化重复性工作,提升工作效率。理解其基本概念、语法和常见命令,将有助于你在Linux...

    Linux shell脚本实现CPU预警

    特别是在Linux环境下,通过编写Shell脚本来自动完成这一过程非常常见且有效。本文将详细介绍如何利用Linux Shell脚本实现CPU预警功能,包括脚本的设计思路、关键命令解析及实际应用。 #### 一、需求分析与设计思路 ...

    shell100.docx

    5. **资源监控与报警**:当内存低于500MB且根分区空间低于1000MB时,发送警告邮件给root管理员: ```bash mem_size=$(free | awk '/Mem/{print $4}') disk_size=$(df / | awk '/\//{print $4}') if [ $disk_size...

Global site tag (gtag.js) - Google Analytics