shell脚本死循环判断nginx日志reqest_time时间大于3秒是否增加,若增加发送相关日志信息到开发人员

#!/bin/bash

while [ 1 ]

do 

      pre_request_time_count=`cat /var/log/nginx/access.log |awk ‘{print $NF}‘|awk -F ‘"‘ ‘ $2>3 ‘|awk -F ‘"‘ ‘{print $2}‘|wc -l`   # 取 request_tme 大于3秒的计数值

     echo $pre_request_time_count

      sleep 300 

      last_request_time_count=`cat /var/log/nginx/access.log |awk ‘{print $NF}‘|awk -F ‘"‘ ‘ $2>3 ‘|awk -F ‘"‘ ‘{print $2}‘|wc -l` # 取5分钟后 request_time 大于3秒的计数值

     echo $last_request_time_count

     if [ $pre_request_time_count -lt $last_request_time_count ]; then  # 若计数值增加 , 则发送邮件关于 request_time 大于3秒的日志信息到相关收件人员

          cat /var/log/nginx/access.log |awk ‘{print $0}‘|awk -F ‘"‘ ‘ $(NF-1)>3 ‘ | /bin/mail -s "dataline-prod nginx request_time 超过3秒" [email protected]&&***.cn  157[email protected]****.com

     fi

done

  

并加入开机启动 :

[[email protected] ~]# cat /etc/rc.local 

sh /etc/zabbix/scripts/nginx_request_time.sh & > /dev/null 2>&1

  

邮件配置参考:

https://www.cnblogs.com/weifeng1463/p/7508485.html

原文地址:https://www.cnblogs.com/weifeng1463/p/9870110.html

时间: 2024-07-29 17:45:14

shell脚本死循环判断nginx日志reqest_time时间大于3秒是否增加,若增加发送相关日志信息到开发人员的相关文章

Shell脚本中判断输入参数个数的方法投稿:junjie 字体:[增加 减小] 类型:转载

Shell脚本中判断输入参数个数的方法 投稿:junjie 字体:[增加 减小] 类型:转载 这篇文章主要介绍了Shell脚本中判断输入参数个数的方法,使用内置变量$#即可实现判断输入了多少个参数,需要的朋友可以参考下 $#代表了命令行的参数数量,可以看以下实例: 复制代码 代码如下: if [ $# != 1 ] ; then echo "USAGE: $0 TABNAME" echo " e.g.: $0 CDR_CALL_20040701" exit 1; f

Shell脚本---条件判断

面向过程     顺序执行     选择执行:if;case     循环执行:for;while;until   循环需有退出条件 选择执行(选择执行的前提,就是条件测试)    条件测试方式(测试条件)     bash命令测试          bash命令有命令执行状态返回值          $?:用于上一条执行的命令状态返回值          0:成功执行          1-255:失败          可以使用exit命令,在脚本中自定义脚本状态返回值,如果不定义,脚本的状

shell脚本真假判断(0为真,非0为假?或0为假,非0为真?)

在网络上,总有人说shell脚本的真假判断,有说0位真的,非0为假,但真的是这样吗? 做个实验,写个0的判断语句 执行结果是0 is true,那么我们想当然1是false了,做下测试: 然而执行的结果却大相径庭,0是ture,1也是ture 也就是说其他语言中(0为真,非0为假?或0为假,非0为真?)的理论均不成立. 那么linux是以什么来作为判断的呢 答案就是以命令执行后的状态,状态可用$?查看(echo $?显示0,表示执行成功,1表示执行失败) shell脚本真假判断(0为真,非0为假

Linux | shell脚本-比较判断和运算语句

一.简介 在我们写shell脚本的过程中,经常需要作比较判断,例如比较哪个数字大,判断文件是否存在,判断文件是否是目录,判断是否为真等操作.有时候我们还需要做运行,例如加减乘除等等,今天就来简单介绍比较表达式和运行表达式. 二.shell比较判断 1.文件状态:表达式:[ -e 文件路径 ] 有空格隔开 例如:[ -e /root ] 判断/root 是否存在(1) -e 是否存在 存在为真(2) -d 是否是目录 是目录为真(3) -f 是否是文件 是文件 为真(4) -x 是否有执行权限 有

处理nginx访问日志,筛选时间大于1秒的请求

#!/usr/bin/env python ''' 处理访问日志,筛选时间大于1秒的请求 ''' with open('test.log','a+',encoding='utf-8') as f_a: with open('wkxz-api.access.log') as f: for line in f.readlines(): if line[-2:] == "-\n" : num =float(line[-7:-2]) else: num=float(line[-6:]) if

shell脚本第二篇——将指定目录下大于200K的文件移动到/tmp下

shell脚本第二篇--将指定目录下大于200K的文件移动到/tmp下 # vim  /tmp/files.sh #!/bin/bash #将指定目录下大于200K的文件移动到/tmp下 read  -p  "请输入您要将目录下大于200K文件移动的目录路径:" $1 for FILE in `ls  $1` do if [ -f  $FILE ] ; then if [ `ls -l $FILE | awk `{print $5}` -gt 204800 ] ; then mv  $

Linux | shell脚本-条件判断if和循环语句for

一.简介 上个章节中,我们学习了判断语句和运算语句.shell脚本中,这些判断语句一般都是和if.else.elif.for和while等语句一起使用. 在脚本编写中,条件判断语句常常用于多种情况的判断,符合哪一种情况就执行哪一种的命令. 二.shell条件判断语句:if 1.流程控制:if单分支结构 语法: if 条件判断:then 条件判断成功时执行的操作 ... fi 例子: 结合整数值比较-eq:检查主机是否在线 vim test1.sh运行结果:2.流程控制:if双分支结构 语法: i

Shell脚本变量判断参数命令

系统变量 $n 传递给脚本或函数的参数.n 是一个数字,表示第几个参数.例如,第一个参数是$1,第二个参数是$2 $? 上个命令的退出状态,或函数的返回值.成功返回0,失败返回1 $# 传递给脚本或函数的参数个数 $* 所有这些参数都被双引号引住.若一个脚本接收两个参数,$*等于$1$2 $0 正在被执行命令的名字.对于shell脚本而言,这是被激活命令的路径 [email protected] 被双引号(” “)包含时,与 $* 稍有不同.若一个脚本接收到两个参数,[email protect

python ,shell 脚本 执行同样操作,花费时间效率对比

废话不说,直接上图(第一个是python写的脚本,第二个和第三个是shell): 文件是一份nginx的log文件,总共583万行,然后是统计各个ip出现次数,各个脚本的执行时间如上所示. 测试环境是:centos 6.5,四核cpu,8g内存. 下面是python脚本 结果是:单核情况下,awk 自增运算最快,python脚本次之,awk和sort等命令的组合最次,猜测awk 是c/c++写的,python解释执行,awk | sort |uniq 的组合,估计哪衔接不好,效率最差. pyth