这是要注意的

可能因为 线上 nginx日志输出格式的不一样,一下命令未能展示正确的结果

流量速率分析的第三个命令

慢查询分析的第一二个命令

参考文档,nginx日志输出格式为
$remote_addr - $remote_user [$time_local] "$retuqest" $status $body_bytes_sent $request_time $upstream_response_time $upstream_addr "$http_referer" "$http_user_agent" "$http_x_forwarded_for";
线上,nginx日志格式
$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for";

请求访问分析:

1. 请求总数
less access.log-20170716 | wc -l
2. 平均每秒的请求数
less access.log-20170716  | awk '{sec=substr($4,2,20);reqs++;reqsBySec[sec]++;} END{print reqs/length(reqsBySec)}'
3. 峰值每秒的请求数
less access.log-20170716  | awk '{sec=substr($4,2,20);requests[sec]++;} END{for(s in requests){printf("%s %s\n",requests[s],s)}}' sort -nr | head -n 3

流量速率分析:

1. 带宽资源占用情况
less access.log-20170716  | awk '{url=$7;requests[url]++;bytes[url]+=$10} END{for (url in requests){printf("%sMB %sKB/req %s %s\n",bytes[url] / 1024 / 1024,bytes[url] /requests[url] / 1024,requests[url],url)}}' sort -nr | head -n 15
2. URL占用cpu的时间
less access.log-20170716 | awk '{url=$7; times[url]++} END{for(url in times){printf("%s %s\n",times[url],url)}}' sort -nr | more
3. 精准 URL占用cpu的时间(优化后)
原命令:
less access.log-20170716  | awk '{print $7}' sed -re 's/(.*)\?.*/\1/g' -e 's/(.*)\..*/\1/g' -e 's:/[0-9]+:/*:g' awk '{requests[$1]++;time[$1]+=$2} END{for (url in requests){printf("%smin %ss/req %s %s\n",time[url] / 60 , time[url] / requests[url],requests[url],url)}}' sort -nr | head -n 50
现命令:
less access.log-20170716  | awk '{print $7}' sed -re 's/(.*)\?.*/\1/g' -e 's/(.*)\..*/\1/g' -e 's:/[0-9]+:/*:g' awk '{requests[$1]++;time[$1]+=$1} END{for (url in requests){printf("%smin %ss/req %s %s\n",time[url] / 60 , time[url] / requests[url],requests[url],url)}}' sort -nr | head -n 50

慢查询分析:

下面命令,执行期间,键盘操作可能会卡住,是不是因为awk占用cpu的问题》?

1. 慢查询所占比例:
less access.log-20170716 | awk -v limit=2 '{min=substr($4,2,17);reqs[min]++;if($9>limit){slowReqs[min]++}} END{for(m in slowReqs) {printf("%s %s%s %s %s\n", m , slowReqs[m] / reqs[m] * 100,"%",slowReqs[m],reqs[m])}}' more
2. 慢查询所占比例,根据 应用服务器返回 时间 与 nginx服务器的处理时间进行分析
less access.log-20170716 | awk '{upServer=$10;upTime=$9;if(upServer == "-"){upServer="Nginx"};if(upTime == "-"){upTime=0};upTimes[upServer]+=upTime;count[upServer]++;totalCount++;} END{for (server in upTimes ){printf("%s %s%s %ss %s\n",count[server],count[server]/totalCount * 100, "%",upTimes[server]/count[server],server)}}' sort -nr | less
3. 快速查看一下每秒的 流量
less access.log-20170716 | awk '{second=substr($4,2,20);bytes[second]+=$10;} END{for(s in bytes){printf("%sKB %s\n",bytes[s]/1024,s)}}' less
4. 查看有没有被爬虫爬过
原命令:
    less access.log-20170716 | egrep "spider|bot" awk '{name=$17;if(index($15,"spider")>0) {name=$15};spiders[name]++} END{for(name in spiders){printf("%s %s\n",spiders[name],name)}}' sort -nr | less
    现命令:
    less access.log-20170716 | egrep "spider|bot" awk '{name=$14;if(index($12,"spider")>0) {name=$15};spiders[name]++} END{for(name in spiders){printf("%s %s\n",spiders[name],name)}}' sort -nr | less

nginx日志分析命令记录的更多相关文章

  1. Nginx 日志分析命令

    查看日志存放目录 # find / -name access.log /var/log/nginx/access.log cd /var/log/nginx IP相关统计 统计IP访问量(独立ip访问 ...

  2. 分析nginx 日志常用命令

    一.概念 并发连接数    客户端向服务器发起请求,并建立了TCP连接.每秒钟服务器链接的总TCP数量,就是并发连接数.请求数    请求数指的是客户端在建立完连接后,向http服务发出GET/POS ...

  3. nginx常用运维日志分析命令

    nginx常用日志分析命令 运维人员必备 常用日志分析命令 1.总请求数 wc -l access.log |awk '{print $1}' 2.独立IP数 awk '{print $1}' acc ...

  4. Awk,Cat,Head分析Nginx日志常用命令

    Nginx 日志分析   1.根据访问IP统计UV   awk '{print $1}'  access.log|sort | uniq -c |wc -l   2.统计访问URL统计PV   awk ...

  5. ELK+redis搭建nginx日志分析平台

    ELK+redis搭建nginx日志分析平台发表于 2015-08-19   |   分类于 Linux/Unix   |  ELK简介ELKStack即Elasticsearch + Logstas ...

  6. nginx高性能WEB服务器系列之八--nginx日志分析与切割

    nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...

  7. Nginx 日志分析及性能排查

    Nginx 日志分析及性能排查 2017-03-04 Linux爱好者 (点击上方公众号,可快速关注) 作者:-外星人- my.oschina.net/362228416/blog/844713 如有 ...

  8. nginx日志分析利器GoAccess

    面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记 ...

  9. 使用elk+redis搭建nginx日志分析平台

    elk+redis 搭建nginx日志分析平台 logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态 ...

随机推荐

  1. Python标准库:1. 介绍

    标准库包括了几种不同类型的库. 首先是那些核心语言的数据类型库,比方数字和列表相关的库.在核心语言手冊里仅仅是描写叙述数字和列表的编写方式,以及它的排列,而未定义它的语义. 换一句话说,核心语言手冊仅 ...

  2. useradd umask报错 root用su 切换到普通用户提示输入密码并报密码错误

    添加新用户与以下文件有关联: /etc/default/useradd [root@localhost pam.d]# cat /etc/default/useradd # useradd defau ...

  3. 【Python】合并(拼接)字符串

    在很多情况下,我们都需要合并字符串.例如:需要将姓氏与名字存储在不同的变量中,然后显示的时候再将他们合二为一 first_name = 'oliver' last_name = 'smith' ful ...

  4. Spring技术笔记(一)

    一.控制反转(IoC)&依赖注入(DI) 1.控制反转: 所谓的控制反转就是应用本身不负责依赖对象的创建及维护, 依赖对象的创建及维护是由外部容器负责的. 这样控制权就由应用转移到了外部容器, ...

  5. java导出excel不须要额外jar包

    眼下我知道的在java中导出Excel能够用poi或在jsp的文件头改变输出流. 以下再介绍一种就用java基础包导出的Excel.导出的格式形如: 源代码例如以下: package csvExcel ...

  6. Hbase Basic

    启动:start-hbase.sh 停止:stop-hbase.sh 进入shell:hbase shell 状态:status 创建表:create 'tableName', 'colFam1' 查 ...

  7. WCF TCP通信方式 通过IIS承载调试

    http://www.cnblogs.com/nikymaco/archive/2012/10/08/2715954.html IIS Express服务器只支持http/https,不支持net.t ...

  8. 在 Selenium 中让 PhantomJS 执行它的 API

    from selenium import webdriver driver = webdriver.PhantomJS() script = "var page = this; page.o ...

  9. Android后退事件的处理

    当我们想退出应用程序时,一般都会采用按物理按键(后退键)的做法,当用户在按两次后退键的时候就将应用程序退出,即销毁当前的Activity(): 重写onBackPressed()方法即可: 代码如下: ...

  10. Theme.AppCompat.Light.DarkActionBar ActionBarActivity

    关于android-support-v7-appcompat.jar的引用.这个不单纯的把jar复制到项目lib目录下的,不然就会报一堆主题找不到的2b问题, 正确方法例如以下: 1.找到androi ...