通过对awk, wc, uniq, grep, sort等命令的组合,分析nginx的access和error日志。
统计各种总量、单位时间量。
access.log日志格式(见下图)
说明:
a). 按照Tab键拆分每项数据
b). 字段含义(如下说明)
column1:ip_address
column2:log_time
column3:request
column4:status_code
column5:send_bytes
column6:referer
需求一:统计总记录数,总成功数,各种失败数:404,403,500
1. 提取总数
思路:拆分原始文件,找到状态列,按照不同条件值,分别获取总数。
a). 使用awk拆分并提取状态码列,并保证该列值大于0,并使用wc命令计算总行
wc -l 对结果进行汇总
awk使用-F来指定数据项分隔符。一个字符可是直接使用,比如-F:(英文逗号分隔),否则应该使用英文‘’将分隔符括起来,比如
-F'\t'。
b). 添加说明信息
wc -l 的结果作为awk的第一列,所以取$1
2. 提取成功、各种失败总数
a). 200成功总数
在使用awk时,针对变量使用条件执行过滤
b). 404失败总数
c). 403失败总数
d).500失败总数
需求二:各种错误中,哪类URL出现的次数最多,要求剔除重复项,并倒叙给出结果
思路:
1). 拆分获取request和StatusCode
2). 对request再拆分获取真实URL
3). 对URL排序,排重,再计算总数,最后再倒叙给出结果
a). 使用awk得到某类错误(status=500)包含request的中间结果。注意request和status之间使用空格连接
b). 针对中间结果再次使用空格进行拆分,获取request中的URL
当内容默认使用空格或tab来分隔数据项时,使用awk拆分时,不需要使用-F来执行分隔符。
如下面命令中的 awk '{print $2}' 没有使用-F指定分隔符。
c). 排序、去除重复项
使用sort对结果进行默认排序
使用uniq -c去除重复项并给出计数结果
d). 根据图上结果,发现重复的URL会被自动计数,但是计数的结果顺序是随机的。我们需要再次针对结果进行排序,使用sort 中的 -k指定列,并指明要求是按照数字的倒叙
去除重复项后,希望对结果进行倒叙
-k指明使用哪一列进行排序,-k1:表示使用第一列进行排序
n指明排序列为数字
r代表使用倒叙
所以-k1nr 代表:要进行排序的第一列请作为数字看待,并且结果要进行倒叙
注意:在去重前,最好先使用sort对结果进行排序,然后才能顺利合并。
需求三:要统计URL中文件名出现的次数,结果中要包含Code 和 Referer。但是 URL和 Referer中都包含 / 字符,对于过滤有干扰,尝试去解决。
思路:
1). 先拆分获取必要数据
2). 想办法将URL中文件名之前的部分去除
3). 然后再排序等
a). 查看原始文件内容
使用cat命令查看原始文件内容。
b). 获取必要信息
由于是\t分隔各个数据项,所以符合默认拆分,不需要-F指明分隔符
c).将URL中文件名之前的部分剔除,但保留referer中的"/"。
这部分重点:使用了sed命令对URL进行过滤,只保留URL中的文件名部分,其余部分不再要。
本sed命令只对第一列数据进行应用过滤操作。
#.*/.∗#\1#解释:
整个内容被#分成两部分
第一部分(两个#号中间的内容).*/.∗,用来匹配URL中的两部分内容
比如URL为:/koubei/2012/11/19/60/abc.jpg (注意最后有一个空格)
.*/用来匹配:"/koubei/2012/11/19/60/"
.∗用来匹配:"abc.jpg "
第二部分
\1,用来匹配第一部分中()中的内容,即 "文件名.扩展名 "
整个命令的含义是:
将URL替换成文件名
即将 "/koubei/2012/11/19/60/abc.jpg "替换成"abc.jpg "
d). 执行排序
注意这里要对第一列先进行排序,否则会影响去重。
e).去重
f).倒叙出结果
相关推荐
最后,如果你想要进行更深度的分析或自动化处理,可以考虑使用脚本语言(如Python或Perl)编写更复杂的工具,或者使用专门的日志分析软件,如Logstash、ELK Stack(Elasticsearch、Logstash、Kibana)等。...
本文主要给大家总结了关于Nginx日志统计分析的一些常用命令,分享出来供大家参考学习,下面来一起看看详细的介绍: 一、IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一...
分析日志文件通常使用命令行工具,如`grep`、`awk`、`sort`和`uniq`,或者使用专门的日志分析软件如Logstash、Splunk和ELK(Elasticsearch、Logstash、Kibana)堆栈。对于大型日志,可能需要实时分析,这时可以考虑...
通过编写和使用shell脚本,我们可以实现Linux环境下Web服务器日志的自动化管理,包括日志生成、归档、切割、分析和安全控制。结合`cron`和`logrotate`工具,可以实现高效的日志维护流程,同时确保日志数据的安全性和...
首先,用`ack`(或`grep`)组合日期和IP地址,然后`sort`和`uniq`去除重复,最后使用`awk`进一步统计每一天的UV次数。 这些命令和技巧是Linux系统中进行日志分析的基础工具,掌握它们能帮助IT从业者有效地监控和...
在IT行业中,对服务器的监控和日志分析是运维工作中不可或缺的部分。对于Nginx,一个流行的高性能HTTP和反向代理服务器,了解如何监控其状态和解析日志至关重要。本文将详细阐述Nginx的状态监控和日志分析。 首先,...
netstat -an | grep ESTABLISHED | grep -v '127.0.0.1' | awk '{print $5}' | cut -d: -f1 | sort | uniq | wc -l ``` 这个命令首先筛选出连接,然后提取第五列的IP地址,进一步处理为只取IP部分,去重后计算...
在实际操作中,这些脚本(如`topquery.sh`和`urlcode.sh`)可能会结合使用,先对日志进行切割,然后提取出查询并解码,最后统计和展示最频繁的查询。这样的流程对于网站运营、搜索引擎优化(SEO)以及服务器性能优化...
而后,可以使用如awk、grep、sort等Linux命令行工具对日志文件进行处理,以得到PV、UV和独立IP的统计数据。例如,通过awk命令提取日志文件中的cookie值,并通过sort和uniq命令进行统计,就可以得到UV数据;对于独立...
这条命令将取出日志文件的最后一万条记录,然后用 awk 取得日志文件中表示时间的一列,接着再对该列进行一次排序,最后是用 uniq 把这一列相邻的重复行合并,并计算合并的条数。 通过这种方法,可以计算出服务器每...
了解常用的Shell命令如awk、sed、cut、sort和uniq的使用,将有助于编写更复杂的脚本。同时,理解Shell脚本中的I/O重定向和文件描述符,以及如何调试和优化Shell脚本也是非常重要的。 通过这个课程,你将能够熟练地...
- 使用`cat`、`awk`、`uniq`、`sort`和`head`命令组合,可以统计Nginx访问日志中每个IP地址的访问次数,并列出前10名。 - `awk`用于提取日志中的IP地址并计数。 - `uniq`与`sort`结合使用来排序计数结果。 8. **...
使用`ifconfig`命令结合`grep`、`awk`和`cut`,可以轻松获取当前网络接口的IP地址: ```bash ifconfig eth0 | grep "inet addr:" | awk '{print $2}' | cut -c 6- ``` 这里`ifconfig eth0`显示eth0接口的信息,`grep...
本文主要介绍了在Linux系统上,特别是使用Nginx作为Web服务器时,如何查看和分析搜索引擎爬虫的活动。以下是具体的步骤和命令详解: 1. **查看搜索引擎爬虫访问次数** 使用`grep`命令筛选出特定爬虫的访问记录,...
这里首先使用`cut`命令以空格为分隔符提取第一列(客户端IP地址),然后通过`sort`命令排序,接着使用`uniq`命令去除重复项,最后使用`wc -l`统计剩余行数,即为UV的值。 #### 三、独立IP统计方法 **独立IP**统计...
`awk`命令用于提取日志中的IP地址(`$1`),`sort -u`进行排序和去重,`uniq -c`统计每个唯一IP的数量。 5. **计算所有进程占用内存的总和**: `ps aux`列出所有进程的信息,`tail -n +2`跳过第一行(标题行),`...
Linux中的`grep`命令是系统管理员和程序员的得力助手,它通过正则表达式对文本进行高效且精准的搜索。`grep`这个名字来源于“Global search for a Regular Expression and Print”,意味着全局搜索正则表达式并打印...