`
can_do
  • 浏览: 265930 次
  • 性别: 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



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

分享到:
评论

相关推荐

    Shell脚本日志关键字监控+告警.docx

    本文将详细介绍如何使用 Shell 脚本来监控 Linux 服务器日志,并在出现关键字异常时触发相应的动作或告警操作,通知到邮件联系人。 安装邮件服务 为了实现邮件告警功能,需要先安装邮件服务。可以使用 mailx 软件...

    linux监控磁盘并发送邮件

    以下是一份详细的教程,讲解如何在Linux中设置磁盘监控并实现邮件通知。 首先,我们需要一个可以监控磁盘空间并触发报警的工具。`df`命令是Linux中用于查看文件系统磁盘空间的工具,而`cron`则是一个定时任务调度器...

    linux下nohup日志输出过大问题的解决方法

    Linux 下 nohup 日志输出过大问题的解决方法 Linux 是一个功能强大且广泛使用的操作系统,nohup 命令是 Linux 中的一个常用命令,用于在后台运行程序并将输出重定向到文件中。但是在使用 nohup 命令时,经常会遇到...

    linux流量监控脚本

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

    Linux 删除日志文件 脚本

    在Linux系统管理中,日志文件的管理和维护是至关重要的任务。日志文件记录了系统运行过程中的各种事件,如程序错误、系统警告、安全...此外,定期备份和监控日志清理策略是良好的实践,可以防止数据丢失或错误清理。

    linux监控磁盘

    首先,我们要了解Linux下的一些基本磁盘监控命令。`df`命令用于查看磁盘空间的使用情况,它能显示每个挂载点的总空间、已用空间、剩余空间以及使用率。例如,`df -h`会以人类可读的格式(如KB、MB、GB)显示这些信息...

    linux 里定时执行删除日志

    在Linux系统中,定时执行任务是一项非常实用的功能,尤其对于自动化运维、系统监控以及资源管理等方面至关重要。本文将深入解析如何在Linux环境下设置定时任务来定期执行特定操作,特别是删除日志或无用文件,以释放...

    LabVIEW数据记录与监控DSC模块

    DSC(数据记录与监控)模块是LabVIEW中的一个功能扩展,它提供了一套工具,用于构建监控和数据采集系统或多通道数据记录应用程序。通过使用LabVIEW的DSC模块,开发者可以连接PLC(可编程逻辑控制器)与PAC(可编程...

    基于嵌入式Linux和GPRS的移动互联网远程监控系统

    监控中心负责收集并分析来自各远程监控现场的数据,实现对起重机械的实时监控和管理。 **2. 远程监控现场的设计** - **嵌入式系统**: 采用基于嵌入式Linux的操作系统,通过USB接口连接摄像头进行图像采集,通过...

    LINUX下的流量监控shell脚本

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

    提取海量数据的SQL存储过程

    标题中的“提取海量数据的SQL存储过程”是指在处理大量数据时,使用SQL语言编写的一种存储过程,以高效地检索数据库中的信息。这种存储过程在处理大数据集时,特别是查询最后几页的数据时,能够确保查询时间不超过9...

    通过看日志,找出linux关机,重启是哪个进程干的,是哪个用户干的.zip

    - "(SCO Unix) How do I find out who or what shutdown or halted my system-"这个链接可能提供了针对SCO Unix系统的特定方法,尽管SCO Unix和Linux在某些方面有所不同,但其基本原理相似,即分析日志和审计记录。...

    linux系统java服务自启动shell脚本及服务cpu内存占用监控脚本

    在Linux系统中,Java服务的自动化管理和监控是运维工作中的重要环节。自启动shell脚本和CPU、内存占用监控脚本能确保Java服务在系统启动时自动运行,并实时监测其性能状态,以便及时发现和处理潜在问题。下面将详细...

    Linux日志分析与视频分享资料

    在现代IT环境中,日志文件扮演着极其重要的角色,特别是在Linux系统下。通过分析这些日志,管理员能够监控系统的健康状况、诊断问题以及防范安全威胁。本文将详细介绍如何利用一系列的Linux命令行工具(如`grep`、`...

    图像的SIFT特征提取和配准MATLAB仿真,含仿真操作录像

    2.领域:SIFT特征提取和配准 3.内容:图像的SIFT特征提取和配准MATLAB仿真。 [frames1,descr1,gss1,dogss1] = do_sift( I1, 'Verbosity', 1, 'NumOctaves', 4, 'Threshold', 0.1/3/2 ) ; %0.04/3/2 [frames2,descr2...

    Linux IO数据通道我理解之分享

    ### Linux IO数据通道详解 #### 一、IO数据通道处理层次 在Linux系统中,输入/输出(Input/Output,简称IO)操作是一项基础而重要的功能。为了更好地管理和优化IO操作,Linux内核设计了一套复杂的IO数据通道处理...

    VB6提取文本数据,生成EXCEL

    在VB6(Visual Basic 6)环境中,我们可以利用其强大的编程能力来处理各种数据操作,如从文本文件中提取数据并生成Excel报表。这个过程通常包括以下步骤: 1. **读取文本文件**:VB6提供了`OpenTextFile`函数,通过...

    提取word表格数据到Excel的vba程序代码

    这个VBA程序适用于需要定期或一次性从大量Word文档的表格中提取数据到Excel的工作场景,比如数据整理、报告生成或分析。通过自定义VBA代码,可以轻松调整数据提取的规则,适应不同格式的Word表格,提高工作效率。

    自动用ping命令测试网络状态并写到日志文件_Linux_shell编程

    在Linux系统中,shell脚本是一种强大的工具,可以自动化执行...结合日志文件,我们可以方便地查看历史数据,分析网络稳定性,及时发现并解决网络问题。在实际应用中,还可以根据具体需求进一步定制脚本,提高运维效率。

Global site tag (gtag.js) - Google Analytics