通过Nginx日志,可以简单分析WEB网站的运行状态、数据报表、IP、UV(unique visitor指独立访客访问数,一台电脑终端为一个访客。)、PV(page view即页面访问量,每打开一次页面PV计数+1,刷新页面也是)访问量等需求,如下为常用需求分析:

(1) 统计Nginx服务器独立IP数。 

awk '{print $1}' access.log |sort -r|uniq -c | wc -l

(2) 统计Nginx服务器总PV量。

awk '{print $7}' access.log |wc -l

(3) 统计Nginx服务器UV统计。

awk '{print $11}' access.log |sort -r|uniq -c |wc -l

(4) 分析Nginx访问日志截止目前为止访问量前20的IP列表。

awk '{print $1}' access.log|sort |uniq -c |sort -nr |head -20

(5) 分析Nginx访问日志早上9点至中午12点的总请求量。

sed -n "/2016:09:00/,/2016:12:00/"p access.log

awk '/2017:09:00/,/2017:12:00/' access.log|wc –l

(9) 分析Nginx访问日志状态码404、502、503、500、499等错误信息页面,打印错误出现次数大于20的IP地址。

awk '{if ($9~/502|499|500|503|404/) print $1,$9}' access.log|sort|uniq –c|sort –nr | awk '{if($1>20) print $2}'

(10) 分析Nginx访问日志访问最多的页面。

awk '{print \(7}' access.log |sort |uniq -c|sort -nr|head -20
(11) 分析Nginx访问日志请求处理时间大于5秒的URL,并打印出时间、URL、访客IP。
awk '{if (\)NF>5) print $NF,$7,$1}' access.log|sort -nr|more

新增匹配案例

1.首先定义日志格式:

'$remote_addr - \(remote_user [\)time_local] "$request" $status \(body_bytes_sent "
\)http_referer" "\(http_user_agent" "\)http_x_forwarded_for"'

统计访问 IP 次数:

awk '{a[$1]++}END{for(v in a)print v,a[v]}' access.log

统计访问访问大于 100 次的 IP:

awk '{a[$1]++}END{for(v in a){if(a[v]>100)print v,a[v]}}' access.log

统计访问 IP 次数并排序取前 10:

awk '{a[$1]++}END{for(v in a)print v,a[v] |"sort -k2 -nr |head -10"}' access.log

统计时间段访问最多的 IP:

awk '$4>="[02/Jan/2017:00:02:00" && $4<="[02/Jan/2017:00:03:00"{a[$1]++}END{for(v in a)print v,a[v]}' access.log

统计上一分钟访问量:

date=$(date -d '-1 minute' +%d/%b/%Y:%H:%M)

awk -vdate=$date '$4~date{c++}END{print c}' access.log

统计访问最多的 10 个页面:

awk '{a[$7]++}END{for(v in a)print v,a[v] |"sort -k1 -nr|head -n10"}' access.log

统计每个 URL 数量和返回内容总大小:

awk '{a[$7]++;size[$7]+=$10}END{for(v in a)print a[v],v,size[v]}' access.log

首先使用$7 ++ 赋值数组a,将收集到的下标进行统计,然后再相加,++字符是代表从0开始,然后每遇到一个相同的字段就+1,又定义了一个size 数组,匹配$7的地址,然后利用+=符号,计算每个网页的大小,遇到$7相同的网页就$10就相加,所以匹配的条件的书籍都被写入到awk 内部中的数组表内,最后利用for 循环赋值v 进行循环读取awk数组表内的每个值,进行输出。

统计每个 IP 访问状态码数量:

awk '{a[$1" "$9]++}END{for(v in a)print v,a[v]}' access.log

统计访问 IP 是 404 状态的次数:

awk '{if ($9~/404/)a[$1" "$9]++}END{for(i in a)print i,a[i]}' access.log

查询18:00-18:09分日志

grep '2019-10-30 18:0[0-9]' info.log

Nginx日志分析 awk 命令的更多相关文章

  1. (转载)shell日志分析常用命令

    shell日志分析常用命令总结 时间:2016-03-09 15:55:29来源:网络 导读:shell日志分析的常用命令,用于日志分析的shell脚本,统计日志中百度蜘蛛的抓取量.抓取最多的页面.抓 ...

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

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

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

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

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

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

  5. nginx日志分析利器GoAccess

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

  6. Nginx日志分析及脚本编写

    在我们日常的运维中,当Nginx服务器正常运行后,我们会经常密切关注Nginx访问日志的相关情况,发现有异常的日志信息需要进行及时处理. 那今天我将跟大家一起来研究和分析Nginx日志,nginx默认 ...

  7. linux服务器上nginx日志访问量统计命令

    linux服务器上nginx日志访问量统计命令 日志文件所在地方:/var/log/nginx/access_iqueendress.com.log/var/log/nginx/access_m.iq ...

  8. nginx日志分析利器GoAccess(转)

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

  9. Nginx日志分析脚本

    目录 一.简介 二.脚本 一.简介 运维工作是一个比较复杂的工作,有时候面对上万条的日志,如何作分析?难道一条条的分析? 这估计看两眼就要打哈欠了吧?聪明的人会选择脚本,这就是为什么现在提倡自动化运维 ...

随机推荐

  1. 微信公众号 & 付费阅读

    微信公众号 & 付费阅读 付费功能 付费阅读 付费功能使用说明 1.付费功能介绍 开通了付费功能的公众号,运营者可以在编辑时对原创文章的部分或全部内容设置收费.对于付费图文,用户未付费前可免费 ...

  2. 超详细Openstack核心组件——nova部署

    目录 OpenStack-nova组件部署 nova组件部署位置 计算节点Nova服务配置(CT配置) 计算节点配置Nova服务-c1节点配置 计算节点-c2(与c1相同)(除了IP地址) contr ...

  3. 一周精彩内容分享(第 3 期):开工大吉的 B 面

    这里记录过去一周,我看到的值得分享的东西. 一方面是整理记录一下自己一周的学习,另一方面也是期待自己有更多的输出,有更多的价值. 周刊开源(Github:wmyskxz/weekly),欢迎提交 is ...

  4. (1)MySQL进阶篇在linux环境下安装

    1.概述 对于mysql二进制安装,优点是可以安装到任何路径下,灵活性好,一台服务器可以安装多个mysql.缺点是已经编译过,性能不如源码编译得好,不能灵活定制编译参数.如果用户即不想安装最简单却不够 ...

  5. Warning: Cannot update during an existing state transition (such as within `render`). Render 报错

    原来 修改(不用在构造函数里面定义)

  6. SQL Server中DELETE和TRUNCATE的区别

    ​DELETE和TRUNCATE语句之间的区别是求职面试中最常见的问题之一.这两条语句都可以从表中删除数据.然而,也有不同之处. 本文将重点讨论这些差异,并通过实例加以说明. TRUNCATE DEL ...

  7. Hbase ——Not only SQL

    HBase -- NoSQL_Not Only SQL NoSQL数据库: 不遵循传统的RDBMS模型 解决数据库的可伸缩性和可用性(多机器) 数据是非关系的(可切分),不使用sql语句 不针对原子性 ...

  8. python进阶(3)序列化与反序列化

    序列化与反序列化 按照某种规则,把内存中的数据保存到文件中,文件是一个字节序列,所以必须要把内存数据转换成为字节序列,输出到文件,这就是序列化:反之,从文件的字节恢复到内存,就是反序列化: pytho ...

  9. 微信小程序:快速生成less文件类嵌套的结构

    全部选中标签结构,按住ctrl+shift+p,选中插件Generate CSS tree(提前安装CSS Tree),先删除undefined,将img替换成image,删除标签名view. 完整的 ...

  10. JS把数组元素分组

    有一个数组,把其中的元素按照每5个进行重新分组,新的数组放到放到大数组中,且看代码 let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...