nginx日志分析

转自: https://blog.csdn.net/u012467744/article/details/103821553

关键字:awk wc sort uniq head

Nginx日志分析

访问日志

access_log path(存放路径) [format(自定义日志格式名称) [buffer=size | off]]

access_log logs/access.log main;

 

错误日志

error_log path(存放路径) level(日志等级)

[ debug | info | notice | warn | error | crit ] 从左至右,日志详细程度逐级递减,即debug最详细,crit最少。

error_log logs/error.log info;

总请求数

 

 

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

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

wc -l access.log-20190922.gz |awk '{print $1}' 不行

独立IP数

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

每秒客户端请求数 TOP5

awk '{print $6}' access.log|sort|uniq -c|sort -rn|head -5

访问最频繁IP Top5

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

访问最频繁的URL TOP5

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

响应大于5秒的URL TOP5

awk '{if ($7 > 5){print $6}}' access.log|sort|uniq -c|sort -rn |head -5

HTTP状态码(非200)统计 Top5

awk '{if ($11 != 200){print $11}}' access.log|sort|uniq -c|sort -rn|head -5

分析请求数大于50000的源IP

cat access.log|awk '{print $NF}'|sort |uniq -c |sort -nr|awk '{if ($1 >50000){print $2}}'

 

 

| 管道符用法 上一条命令的输出,作为下一条命令参数
sort可针对文本文件的内容,以行为单位来排序。
sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

#-r 以相反的顺序来排序。

#-n 依照数值的大小排序

#-u 意味着是唯一的(unique),输出的结果是去完重了的。

# -t <分隔字符> 指定排序时所用的栏位分隔字符

# -k 列 -k 2.1 第二列第一个字符开始排序 -k 2.1,2.1按第二列第一个字符排序

# +<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

sort -rn -k 5 -t . access.log 分隔符.按第五列排序

 

uniq 可检查文本文件中重复出现的行列。
uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]

#-c或--count 在每列旁边显示该行重复出现的次数。

uniq -c testfile #删除重复行后的内容

3 test 30 #前面的数字的意义为该行共出现了3次

4 Hello 95 #前面的数字的意义为该行共出现了4次

2 Linux 85 #前面的数字的意义为该行共出现了2次

 

head显示文件的开头至标准输出中 默认显示文档的前 10 行
-n, --lines=[-]K  k,显示文档开始的前k行,-k,不显示文档结尾的最后 k 行

head -n -10 a.txt

 

wc 命令用于计算字数。
利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

wc [-clw][--help][--version][文件...]

-c或--bytes或--chars 只显示Bytes数。

-l或--lines 只显示行数。

-w或--words 只显示字数。

-clw在默认的情况下,wc将计算指定文件的行数、字数,以及字节数。

wc testfile testfile_1 testfile_2 #统计多个文件的信息

 

awk是一种处理文本文件的语言,是一个强大的文本分析工具。
awk [选项参数] 'script' var=value file(s)

awk [选项参数] -f scriptfile var=value file(s)

选项参数说明:

-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。

-v var=value or --asign var=value
赋值一个用户定义变量。

 

 

用法一:

awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号

# 每行按空格或TAB分割,输出文本中的1、4项

awk '{print $1,$4}' access.log

 

 

用法二:

awk -F #-F相当于内置变量FS, 指定分割字符

# 使用"."分割

awk -F. '{print $1,$2}' access.log

# 或者使用内建变量

awk 'BEGIN{FS="."} {print $1,$2}' access.log

# 使用多个分隔符

awk -F '[ .]' '{print $1,$2,$5}' access.log

 

用法三:

awk -v # 设置变量

awk -va=1 '{print $1,$1+a}' access.log # $1不是数字做0处理

awk -va=1 -vb=s '{print $1,$1+a,$1b}' access.log # 字符连接

用法四:

awk -f {awk脚本} {文件名}

awk -f cal.awk access.log

grep 命令用于查找文件里符合条件的字符串。
grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

-a :将 binary 文件以 text 文件的方式搜寻数据

-c :计算找到 '搜寻字符串' 的次数

-i :忽略大小写的不同,所以大小写视为相同

-n :顺便输出行号

-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!

--color=auto :可以将找到的关键词部分加上颜色的显示喔!

 

 

find查找指定目录下文件
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

 

-exec 参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。
{} 花括号代表前面find查找出来的文件名。

 

awk '{print $7}' access_2024-04-16_023001.log|sort |uniq -c |sort -nr |head -5


awk '{print $7}' access_2024-04-16_023001.log|sort |uniq -c |sort -nr |head -20


awk '$10 > 204800 {print $7 $10}' access_2024-04-16_023001.log > filtered_urls.txt


————————————————
版权声明:本文为CSDN博主「飞飞987」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012467744/article/details/103821553

posted @   仁义礼智信的  阅读(109)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
历史上的今天:
2019-09-19 Redis详解(六)------ RDB 持久化
点击右上角即可分享
微信分享提示