精华内容
下载资源
问答
  • 查看各个时间段 请求接口的访问量 命令如下 cat tp_access.log | awk '{print $4}'|uniq -c|sort -n // tp_access.log 为日志名 // {print $4} 为输出以第四个参数为基础 日志中参数以空格区分 这里的参考点是时间 ...

    linux 下根据nginx 日志分析qps的高低(awk)

    • nginx 日志如下
      在这里插入图片描述

    查看各个时间段 请求接口的访问量 命令如下

     cat tp_access.log | awk '{print $4}'|uniq -c|sort -n
    // tp_access.log 为日志名
    // {print $4} 为输出以第四个参数为基础   日志中参数以空格区分  这里的参考点是时间
    // uniq -c 去重并统计
    // sort -n 排序由低到高
    

    结果如下 统计各个时间点 的qps
    在这里插入图片描述
    查看某个api各个时间段 请求接口的访问量 命令如下

    cat tp_access.log|grep "api/Smscode" | awk '{print $4}'|uniq -c|sort -n
    

    如下
    在这里插入图片描述

    展开全文
  • nginx日志截取示例 日志路径:/usr/local/nginx/logs, 截取access.log中2019年3月24日17点00~02之间的日志: 写法1: cat access.log | awk '$4 >="[24/Mar/2019:17:00:00" && $4 <="[24/Mar/2019:17...

    nginx日志截取示例

    日志路径:/usr/local/nginx/logs, 截取access.log中2019年3月24日17点00~02之间的日志:
     写法1:

    cat access.log | awk '$4 >="[24/Mar/2019:17:00:00" && $4 <="[24/Mar/2019:17:02:00"'

     写法2:

    cat access.log | egrep "24/Mar/2019" | awk -F':' '$2 = 17 && $3 >= 00 && $3 <= 02'

     写法3:

    cat access.log |egrep "24/Mar/2019" |sed -n '/17:00:00/,/17:02:00/p'

    tomcat日志截取示例

    日志路径:/usr/local/tomcat/logs, 截取catalina.out中2019年3月24日17点00~02之间的日志:
    写法1:

    sed -n '/2019-03-24 17:00:/,/2019-03-24 17:02:/p'  catalina.out

    写法2:

        cat catalina.out| egrep "2019-03-24" | awk -F':' '$2 = 17 && $3 >= 00 && $3 <= 02'

    awk统计nginx日志的ip访问量

    nginx日志事先截取一部分:tail -n500 access.log >access.log1

    第一种:使用awk sort,$1表示以空格为分割符的第一列,也就是文件中的ip地址,使用sort对结果排序,uniq -c进行计数,最后sort -n是以“数字”来排序,针对统计后的访问次数来排序

    awk '{print $1}' access.log1|sort |uniq -c|sort -n

    第二种:awk for,即数组; 默认变量为0,对每一行的$1作为key,count数组++,实现ip的计数。计数结束后END。然后把结果打印出来,最后sort -n以“数字”排序。

    awk '{count[$1]++;}END{for(i in count){printf("%s\t%s\n", count[i], i);}}' access.log1|sort -n

    取nginx日志访问接口次数

    通过上面的方法将某个时间段日志取出来,查询该时间段访问接口最多的前10:

    #!/bin/bash
     #统计接口的访问次数
     TODAY=`date +%d/%b/%Y`
     cat $1 |awk -F '"' '{print $2}'|awk '{split($2,res,"?") ; print res[1] }'|sort|uniq -c|sort -gr |head -n10
    展开全文
  • nginx日志详解,管理以及对应的打日志切割处理

    日志管理

    我们观察nginx的server段,可以看到如下类似信息

     #access_log  logs/host.access.log  main;

    这说明 该server, 它的访问日志的文件是 logs/host.access.log ,使用的 格式”main”格式.除了main格式,你可以自定义其他格式.

    main格式是什么?

    这里写图片描述

    main格式是我们定义好一种日志的格式,并起个名字,便于引用。以上面的例子, main类型的日志,记录的 remote_addr…. http_x_forwarded_for等选 项.

    1. 日志格式 是指记录哪些选项

      默认的日志格式: main
      如默认的main日志格式,记录这么几项

      远程IP- 远程用户/用户时间 请求方法(如GET/POST) 请求体body度referer来源信息
      http-user-agent用户代理/蜘蛛 ,被转发的请求的原始IP
      http_x_forwarded_for:在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP
      
    2. 声明一个独特的log_format并命名

      这里写图片描述

    3. Nginx允许针对不同的server做不同的Log ,(有的web服务器不支持,如lighttp)

    日志分割

    实际应用:shell+定时任务+nginx信号管理,完成日志按日期存储

    分析思路: 凌晨00:00:01,把昨天的日志重命名,放在相应的目录下 再USR1信息号控制nginx重新生成新的日志文件

    shell脚本:

    #!/bin/bash
    base_path='/usr/local/nginx/logs'
    log_path=$(date -d yesterday +"%Y%m")
    day=$(date -d yesterday +"%d")
    mkdir -p $base_path/$log_path
    mv $base_path/access.log $base_path/$log_path/access_$day.log
    #echo $base_path/$log_path/access_$day.log
    kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

    Contrab任务

    01 00 * * * /xxx/path/b.sh  每天0时1分(建议在02-04点之间,系统负载小)
    展开全文
  • 1. 将某个时间段nginx的access.log日志进行收集 access.log日志格式如: 1 10.0.0.1 - - [14/May/2020:16:25:15 +0800] "GET /undefined HTTP/1.1" 404 153 "http://10.0.0.127:8801/" "Mozilla/5.0 (Windows NT ...

    1. 将某个时间段的nginx的access.log日志进行收集

    access.log日志为:

    10.0.0.1 - - [14/May/2020:16:25:15 +0800] "GET /undefined HTTP/1.1" 404 153 "http://10.0.0.127:8801/" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko Core/1.63.6735.400 QQBrowser/10.2.2614.400" "-"
    10.0.0.1 - - [14/May/2020:16:25:25 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko Core/1.63.6735.400 QQBrowser/10.2.2614.400" "-"
    10.0.0.1 - - [14/May/2020:16:25:28 +0800] "GET /undefined HTTP/1.1" 404 153 "http://10.0.0.127:8801/" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko Core/1.63.6735.400 QQBrowser/10.2.2614.400" "-"
    

    思路:怎么进行时间段的比较,怎么将该时间段内产生日志的行号记录下来,怎么通过行号进行收集
    解决:
    (1)通过查找awk命令发现,它里面可以让格式一定的时间戳进行对比,而且能通过-v传变量,但是在执行过程中像bash 1.sh 1 2 不能将$1、$2传入一条命令的第二个awk的变量中;
    (2)#sed –n 数字+p 1.txt 则可以对特定行号的内容打印出来
    于是有方式一
    cat x.sh

    #!/bin/bash
    fx() {
    cat /usr/'local'/nginx/logs/access.log |awk  '{print $4}' >7.txt #截取日志的时间
    cat 7.txt|awk -v num1=$time1 -v num2=$time2  -F'/' '$3 >= num1 && $3 <= num2 {print NR}' > 55.log #截取时间段内日志在第几行
    >66.txt
    for i in `cat 55.log`
    do
      sed -n $i'p' /usr/'local'/nginx/logs/access.log >>66.txt #将日志存入66.txt
    done
        }
    
    while :
    do
     read  -ep "请输入开始时间
    (格式如: yyyy:mm:dd:ss):" time1
    
     read -ep "          请输入结束时间:" time2
    
     if echo $time1,$time2| grep -Eq "[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2}" > /dev/null 2>&1 #判断输入格式
       then
       fx
       exit
     else
        echo "时间格式错误!请重新输入!"
     fi
    done
    

    执行过程:
    在这里插入图片描述注意:这个不能精确到月和日,收集哪年的哪时哪分哪秒

    方式二,awk可以比较大小,所以也可以这样:
    cat xxx.sh

    #!/bin/bash
    tima=`echo $1|awk -F':' '{sum=$1*3600+$2*60+$3}{print sum}'`
    timb=`echo $2|awk -F':' '{sum=$1*3600+$2*60+$3}{print sum}'`
    awk  -v time1=$tima -v time2=$timb -F':' '{sum=$2*3600+$3*60+$4}sum >= time1 && sum <= time2 {print $0}'   /usr/'local'/nginx/logs/access.log
    

    执行过程:
    在这里插入图片描述注意:这个是收集哪时哪分哪秒,不管哪年哪月哪日

    方式三,后来又有发现:https://www.cnblogs.com/weiyiming007/p/12177429.html中,时间格式:

    14/May/2020:16:25:15
    

    这样的awk都可以直接比较
    在这里插入图片描述
    所以有:
    cat xx.sh

    #!/bin/bash
    #格式要对!
    awk -v time1=$1 -v time2=$2 '{split($4,array,"[");if(array[2]>=time1 && array[2]<=time2){print $0}}' /usr/'local'/nginx/logs/access.log                                                                                                          
    

    这样一条命令就可以截取日志。
    执行结果如图:
    在这里插入图片描述
    注意:这个是精确到哪年哪月哪日哪时哪分哪秒

    方式四;
    cat xxxx.sh

    tima=`echo $1|awk -F':' '{sum=$1*3600+$2*60+$3}{print sum}'`
    timb=`echo $2|awk -F':' '{sum=$1*3600+$2*60+$3}{print sum}'`
    
    cat 5.sh|while read line 
    do
    oo=`echo $line|awk '{print $4}'|awk -F':' '{su=$2*3600+$3*60+$4}{print su}'`
    if [[ $tima -le $oo && $timb -ge $oo ]];
    then
    echo $line
    fi
    done
    

    bash xxxx.sh 16:25:15 16:25:25

    展开全文
  • 为什么要针对配置 Nginx 日志? 优点: 在使用nginx进行服务器...需要对日志文件进行切割,一段时间后需要清理无用的日志文件 一、常规日志 nginx常规日志配置: 日志配置存放的位置: 日志设置可存在 http 中,也...
  • nginx 服务器运行项目日志查询

    千次阅读 2017-12-27 23:46:46
    二、日志查询  1. 切换到工程的后台日志目录下: cd /usr/local/yizhijie/ciq.yizhijie.com /logs  2. 查询所有文件: ll  3. 查询关键字,在某个日志文件下。如: grep 调用接口 app.2017-06-01.log   ...
  • nginx日志切割和日志定期清理

    千次阅读 2017-11-17 10:32:43
    nginx日志默认不做人为处理,日志文件会存放在access.log,error.log两个文件中,随着时间的推移,日志量会越来越大,不方便编辑查看,为了让日志按天存放,可以做一些配置,设置一个定时任务,每天凌晨00:00开始备份...
  • 所以我们需要针对Nginx日志进行分析,这里就需要去配置Nginx日志和每日的日志分割。 我们先来了解下Nginx日志功能。 nginx 日志相关指令主要有两条, log_format,用来设置日志格式, access_log,用来...
  • shell获取某个时间段nginx日志内容

    万次阅读 2014-04-06 16:40:36
    nginx日志中获取2014:04:01日 21:30至21:50的日志内容 # cat web.log 192.168.16.105 - - [01/Apr/2014:21:26:21 +0800] "GET / HTTP/1.1" 502 172 192.168.16.105 - - [01/Apr/2014:21:28:22 +0800] ...
  • 在我们开发一个程序,日志功能往往也是不可缺少的,今天我们就来讲讲这个Nginx日志是怎么样来玩的。 二、了解日志管理 我们查看nginx安装目录下有个logs,包含了三个文件 "access.log 、error.log、nginx....
  • nginx access_log日志

    千次阅读 2017-08-29 15:57:38
    nginx 日志主要有两条指令: log_format:用来设置日志格式;access_log:用来指定日志文件的存放路径、格式(把定义的log_format 跟在后面)和缓存大小;如果不想启用日志则access_log off ; log_format
  • 一、 Nginx访问日志  日志格式 搜索log_format:  vim /usr/local/nginx/conf/nginx.conf  各个的意思: 除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中...
  • nginx 按天分割日志

    千次阅读 2016-05-17 16:34:47
    nginx默认的日志是统一写到 安装目录的log下的 ,访问日志是 access.log,错误日志是error.log 而且并没有提供一个可配置的地方,对于生产环境,日志都集中在一块儿,没过几天日志文件就可以大到几个G,只能是使用...
  • nginx日志切割

    2019-08-05 17:25:37
    nginx切割nginx.conf日志
  • Nginx日志切割

    千次阅读 2019-08-25 16:53:51
    日志切割就是日志备份,用crontab表达式按时间段去执行shell脚本,把当前日志备份起来。把新的日志存入新的日志文件里。 2、shell脚本 #进入目录 cd /usr/local/nginx/sbin #!/bin/bash #设置日志的存放目录 LOG_...
  • 直接使用Nginx记录日志,在多台服务器的情况下日志会过于分散不容易管理,不过nginx在1.7.1版本以后,可以使用Rsyslog来记录日志。 Rsyslog可以作为集中日志服务器。使用Ryslog了解两个关键术语。 (1)facility:...
  • Nginx日志配置及日志分析脚本案例

    千次阅读 2018-08-29 19:30:16
    nginx的log日志分为access log 和 error log   其中access log 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息   error log 则是记录服务器错误日志   错误日志的形式如下:   201.158.69...
  • 1、Nginx状态监控 Nginx提供了一个内置的状态信息监控页面可用于监控Nginx的整体访问情况,这个功能由ngx_http_stub_status_module模块进行实现。 使用nginx -V 2>&1 | grep -o with-http_stub_status_module...
  • 短信接口是高风险被攻击的对象,如何避免被频繁调用: 一、可以针对系统接口调用前添加校验,通常使用的图片校验、数字校验等…(有很多成熟...2、在nginx的配置文件nginx.conf中加入include blocksip.conf,可用在htt
  • Nginx配置 // 全局区 worker_processes 1; // 有1个工作的子进程,可以自行修改,但太大无益,因为要争夺CPU,一般设置为 CPU数*核数 Event { // 一般是配置nginx连接的特性 // 如1个word能同时允许多少连接 ...
  • Nginx访问日志

    2017-10-09 22:02:40
    Nginx访问日志标签(空格分隔): nginx 日志对于统计排错来说非常有利的。nginx的log日志分为access log 和 error log.nginx。其中access log 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息。error...
  • nginx 日志配置

    千次阅读 2019-04-25 17:19:27
    nginx 日志说明 不同用户防卫Nginx会把每个用户访问往咱的日志信息记录到指定的日志文件里,供网站管理员分析用户浏览行为等,此功能又ngx_http_log_module 模块负责。 控制访问日志的参数 参数 说明 log_...
  • nginx日志配置

    2019-01-23 16:09:05
    Nginx 将遇到的不同严重级别问题的信息写入错误日志。 error_log 指令设置对特定文件,stderr 或 syslog 的日志记录,并指定要记录的消息的最低严重级别。 默认情况下,错误日志位于 logs/error.log(绝对路径取决于...
  • Nginx_nginx日志收集实战

    千次阅读 2019-01-21 17:49:04
    主要参考文章: ...nginx 日志收集 arg_xx 参数: Nginx变量使用方法详解 -&gt; 2.2 https://www.jianshu.com/p/44680c081ea0   nginx 按天切分/删除 : nginx日志按天生成&amp;定期删除日志 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,891
精华内容 16,356
关键字:

nginx查询时间段日志