#!/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
您还没有登录,请您登录后再发表评论
- **邮件报警机制**:当检测到流量异常(如超出阈值)时,通过发送邮件等方式及时通知管理员。 - **支持多个网卡**:修改脚本使其能够支持监控多个网卡的流量信息。 - **图形化展示**:使用`gnuplot`等工具绘制流量...
### Linux下的流量监控Shell脚本知识点详解 #### 一、脚本概述 本文将详细介绍一个用于Linux环境下的网络流量监控Shell脚本。该脚本能够适用于任何Linux版本,并且已经过CentOS系统的测试验证。其核心功能是实时...
本文将详细介绍几个常用的Linux监控脚本,涵盖主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等多方面的自动监控与报警功能。 #### 1. 查看主机网卡流量 这个脚本用于监控特定网络接口(如eth0)的...
3. 日志分析:从日志文件中提取特定信息,进行统计或报警。 总之,Linux Shell脚本编程是Linux环境下的强大工具,能够帮助我们简化重复性工作,提升工作效率。理解其基本概念、语法和常见命令,将有助于你在Linux...
特别是在Linux环境下,通过编写Shell脚本来自动完成这一过程非常常见且有效。本文将详细介绍如何利用Linux Shell脚本实现CPU预警功能,包括脚本的设计思路、关键命令解析及实际应用。 #### 一、需求分析与设计思路 ...
5. **资源监控与报警**:当内存低于500MB且根分区空间低于1000MB时,发送警告邮件给root管理员: ```bash mem_size=$(free | awk '/Mem/{print $4}') disk_size=$(df / | awk '/\//{print $4}') if [ $disk_size...
相关推荐
- **邮件报警机制**:当检测到流量异常(如超出阈值)时,通过发送邮件等方式及时通知管理员。 - **支持多个网卡**:修改脚本使其能够支持监控多个网卡的流量信息。 - **图形化展示**:使用`gnuplot`等工具绘制流量...
### Linux下的流量监控Shell脚本知识点详解 #### 一、脚本概述 本文将详细介绍一个用于Linux环境下的网络流量监控Shell脚本。该脚本能够适用于任何Linux版本,并且已经过CentOS系统的测试验证。其核心功能是实时...
本文将详细介绍几个常用的Linux监控脚本,涵盖主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等多方面的自动监控与报警功能。 #### 1. 查看主机网卡流量 这个脚本用于监控特定网络接口(如eth0)的...
3. 日志分析:从日志文件中提取特定信息,进行统计或报警。 总之,Linux Shell脚本编程是Linux环境下的强大工具,能够帮助我们简化重复性工作,提升工作效率。理解其基本概念、语法和常见命令,将有助于你在Linux...
特别是在Linux环境下,通过编写Shell脚本来自动完成这一过程非常常见且有效。本文将详细介绍如何利用Linux Shell脚本实现CPU预警功能,包括脚本的设计思路、关键命令解析及实际应用。 #### 一、需求分析与设计思路 ...
5. **资源监控与报警**:当内存低于500MB且根分区空间低于1000MB时,发送警告邮件给root管理员: ```bash mem_size=$(free | awk '/Mem/{print $4}') disk_size=$(df / | awk '/\//{print $4}') if [ $disk_size...