2018/10/10 awk 分析 nginx 日志

废话不多说,简单了解一下 awk

  - 强大的文本分析工具,也就是分析日志

最常用的就是分析日志了吧,做统计什么,这里也拿 nginx 日志来做分析

1:统计出现次数

- 比如状态码出现次数

- 先直接上命令

awk ‘{print $9}‘ access_log  | sort | uniq -c | sort -rn

- 可能会有一些疑惑,这个$9 是什么?

- 我们拿出一条日志来看一下先

123.124.16.83 - - [10/Oct/2018:10:24:56 +0800] "GET /static/favicon.ico HTTP/1.0" 200 5430 "https://xxx.com/" "Hm_lvt_d0ce2d118b3d24552ed32f2e7328f548=1534905921; ZYBUSS=R2ccj7ZaT-_bVrhEd_nra2QQB8vcYqWqdRAIXYZlhj07qNVt05nxfnRZB-IU75Yn" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" 0.001 1496233492 123.124.16.83 192.168.240.255

- 我们可以看到我们需要状态码的状态码,但是,他在第几位呢?

- 在 awk 中,只要碰到空格,就说明它占了一位,也就是说

$1   123.124.16.83
$2   -
$3   -
$4   [10/Oct/2018:10:24:56
....
SO
$9   状态码

这样我们就找到我们的状态码,之后的 sort | uniq 命令,可以自己看下,会更好的理解这个命令

2:筛选特定的日志

- 比如我们发现了异常,要找到所有状态码为 302 的 access_log

- 直接上命令

awk ‘$9~/302/{print}‘ accrss_log

- 之前我们已经找到了 $9 是我们的状态码

- 这里使用了 正则 匹配所有等于 302 的状态码

- 当然,awk 也支持其他的方式

比如,使用  == 来匹配

awk ‘$9=="302" {print}‘ access_log

- 这里列出条件操作符

<       小于
<=      小于等于
==      等于
!=      不等于
>       大于
>=      大于等于
~       匹配正则表达式
!~      不匹配正则表达式

原文地址:https://www.cnblogs.com/25-lH/p/9765644.html

时间: 2024-07-31 19:12:54

2018/10/10 awk 分析 nginx 日志的相关文章

awk分析nginx日志里面的接口响应时间

最近,有客户反应客户端卡,老板集合技术人员开会讨论,找出慢的原因,由此产生了分析nginx响应时间,由于线上环境nginx日志格式带上了引号,处理起来有点麻烦,以下是处理过程 一.nginx日志格式 log_format main '$remote_addr – $remote_user [$time_iso8601] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user

awk分析nginx日志中响应时间的方法

针对响应时间慢的问题,我们在nginx日志格式中增加响应时间,现在需要针对响应时间进行分析,查找出相对较慢的响应时间. 1.确认下日志文件格式 日志格式: log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_for

shell脚本分析nginx日志

第一版,比较粗糙,仅限于能用 正在写入的文件不能用tar进行压缩 --------压缩日志---------------------- 94 access.log 95 tar: access.log: file changed as we read it 96 #### 压缩日志失败 #### #!/bin/sh #分析nginx日志 DATE=`date '+%Y%m%d-%H%M'` ARCHIVE=/usr/log_bak/nginx_$DATE.tar.gz MESSAGE=/usr/

python分析nginx日志

问题:分析nginx日志并找出访问最多10个IP地址的来源以及次数 使用python模块IP 使用方法以及下载地址:https://pypi.python.org/pypi/17MonIP 相关python脚本: #!/usr/bin/env python #coding:utf8 #Auth: lad #date:2016-12-05 #desc:parser the nginx's log,the head of 10  import sys reload(sys) sys.setdefau

python 正则分析nginx日志

有个需求要分析nginx日志,也懒得去研究logstach之类的开源工具,干脆直接写一个脚本,自己根据需求来实现: 先看日志格式:我们跟别人的不太一样,所以没办法了: 12.195.166.35 [10/May/2015:14:38:09 +0800] "list.xxxx.com" "GET /new/10:00/9.html?cat=0,0&sort=price_asc HTTP/1.0" 200 42164 "http://list.zhon

python分析nginx日志的ip,url,status

Python 脚本如下: #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'lvnian' #!/usr/bin env python # coding: utf-8 import MySQLdb as mysql import sys, os db = mysql.connect(user="root",passwd="[email protected]",db="intest",

awk 分析web日志(页面执行时间)

shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询) 当服务器压力比较大,跑起来很费力时候.我们经常做站点页面优化,会去查找那些页面访问次数比较多,而且比较费时. 找到那些访问次数高,并且比较耗时的地址,就行相关优化,会取得立竿见影的效果的. 下面是我在做优化时候,经常用到的一段shell 脚本. 这个也可以算是,统计web页面的slowpage 慢访问页面,象mysql slowquery . 以下是我的:nginx 配制 log_format main '$remote_a

awstats分析nginx日志文件

awstats分析nginx日志文件,将生成的结果(为txt文件)保存在/var/www/awstats目录下,通过apche来 显示生成的结果. nginx的域名为:www.a.com:80 LogFile="/usr/local/mybin/nginx/logs/access.log"  #nginx的日志文件路径 DirData="/var/www/awstats/" #awstats生成结果的保存路径 SiteDomain="www.a.com&q

烂泥:利用awstats分析nginx日志

昨天把nginx的日志进行了切割,关于如何切割nginx日志,可以查看<烂泥:切割nginx日志>这篇文章. 今天打算分析下nginx日志,要分析nginx日志,我们可以通过shell脚本和第三方软件awstats进行分析,在此我们选择的是通过第三方软件awstats进行分析. 要使用awstats分析nginx日志,我们要安装awstats,而在安装awstats之前,我们需要先来介绍下awstats是什么? 一.awstats是什么 awstats是一个免费非常简洁而且强大有个性的基于Pe