1. 利用grep ,wc命令统计某个请求或字符串出现的次数

比如统计GET /app/kevinContent接口在某天的调用次数,则可以使用如下命令:
[root@Fastdfs_storage_s1 ~]# cat /usr/local/nginx/logs/access.log | grep 'GET /app/kevinContent' | wc -l 其中cat用来读取日志内容,grep进行匹配的文本搜索,wc则进行最终的统计。
当然只用grep也能实现上述功能:
[root@Fastdfs_storage_s1 ~]# grep 'GET /app/kevinContent' /usr/local/nginx/logs/access.log -c
 
2. 统计所有接口的调用次数并显示出现次数最多的前二十的URL
 
[root@Fastdfs_storage_s1 ~]# cat /usr/local/nginx/logs/access.log|awk '{split($7,b,"?");COUNT[b[1]]++;}END{for(a in COUNT) print  COUNT[a], a}'|sort -k1 -nr|head -n20

 /
/group1/M00///wKgKylqT3OCAUrqYAAAwK2jUNaY262.png
/group1/M00///wKgKylqUxBOAFo8hAAKHUIZ3K9s443.jpg
/group1/M00///wKgKylqUrceAGkPOAAAwK2jUNaY843.png
/group1/M00///wKgKylqTsFCAdeEuAAKHUIZ3K9s287.png
/group2/M00///wKgKy1qUtu2Acai1AAKHUIZ3K9s555.jpg
/favicon.ico
/group2/M00///wKgKy1qT3P-Ae-vQAAKHUIZ3K9s459.png
/group2/M00///wKgKy1qT3P-Ae-vQAAKHUIZ3K9s459.jpg
/group1/M00///wKgKylqUyMuAdkLwAAAwK2jUNaY176.png
/group1/M00///wKgKylqUtuyAA5xrAAKHUIZ3K9s226.jpg
/group1/M00///wKgKylqUscKAa4NXAAKHUIZ3K9s530.jpg
/group1/M00///wKgKylqTsFCAdeEuAAKHUIZ3K9s287.jpg
/group1/M00///wKgKylqT4ESAHdNjAAKHUIZ3K9s730.jpg
/group1/M00///wKgKylqT3-6AbEeUAAKHUIZ3K9s742.png
解释说明:
这里awk是按照空格把每一行日志拆分成若干项,其中$7对应的就是URL,当然具体对应的内容和使用nginx时设置的日志格式有关。
这样就可以通过拆分提取出IP,URL,状态码等信息。splitawk的内置函数,在此的意思是按照“?”将URL进行分割得到一个数组,并赋值给b。
COUNT[b[1]]++表示相同的接口数目加1。sort用来排序,-k1nr表示要把进行排序的第一列作为数字看待,并且结果倒序排列。
head -n20意为取排名前二十的结果。
 

3. 统计报错的接口 

统计nginx日志中报错较多的接口,对于分析服务器的运行情况很有帮助,也可以有针对性的修复bug和性能优化。
[root@Fastdfs_storage_s1 ~]# cat /usr/local/nginx/logs/access.log|awk '{if($9==500) print $0}'|awk '{split($7,b,"?");COUNT[b[1]]++;}END{for(a in COUNT) print COUNT[a], a}'|sort -k -nr|head -n10 先用awk’{if(==)print0}’过滤出500错误的日志,然后在此基础上做统计,其思路同2类似!
4. 统计HTTP响应状态码
通过统计响应状态码可以看出服务器的响应情况,比如499较多时可以判断出服务器响应缓慢,再结合3可以找出响应慢的接口,
这样就能有针对性进行性能分析和优化。 [root@Fastdfs_storage_s1 ~]# cat /usr/local/nginx/logs/access.log |awk '{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'| sort -k -nr

5. 统计服务器并发量

[root@Fastdfs_storage_s1 ~]# cat /usr/local/nginx/logs/access.log |grep '10.15.19.138'| awk '{COUNT[$4]++}END{for( a in COUNT) print a,COUNT[a]}'
|sort -k -nr|head -n20 nginx转发请求时可以记录响应请求的服务器IP,先通过grep过滤出某个服务器所有的请求,然后统计各个时间点的并发请求响应的数量即可得到某个服务器的并发量。
$4对应的是响应时间。当然,如果把grep的内容更换成某个接口也就可以统计出该接口对应的并发量了。

6. grep多条件与或操作

有时候我们需要在nginx日志通过多个条件来查找某些特定请求,比如我需要找个某个用户浏览文章的请求,则可以需要同时匹配两个条件:
浏览文章接口GET /app/kevinContent和userId=59h7hrrn。 grep对应的与操作命令如下:
[root@Fastdfs_storage_s1 ~]# grep -E "GET /app/kevinContent.*userId=59h7hrrn" /usr/local/nginx/logs/access.log grep与命令格式: grep -E “a.*b” file,ab条件同时成立
而grep或命令的格式为:grep -E “a|b” file ,ab两个条件有一个成立即可。

7. grep打印匹配的前后几行

有时候我们需要查找某个特定请求的前后几行的请求,以观察用户的关联操作情况。grep提供了一下几条命令:
# grep -C 'parttern' inputfile //打印匹配行的前后5行。
# grep -A 'parttern' inputfile //打印匹配行的后5行
# grep -B 'parttern' inputfile //打印匹配行的前5行 grep -An 或grep -A n
grep -Bn 或grep -B n
grep -Cn 或grep -C n
如下,打印出access.log日志文件中匹配/app/kevinContent关键字符所在行的前后各10行
[root@Fastdfs_storage_s1 ~]# grep -C 10 'GET /app/kevinContent' /usr/local/nginx/logs/access.log

转自

针对Nginx日志的相关运维操作记录 - 散尽浮华 - 博客园 https://www.cnblogs.com/kevingrace/p/8483089.html

 

在分析nginx日志时常用命令总结【转】的更多相关文章

  1. Nginx Access Log日志统计分析常用命令

    Nginx Access Log日志统计分析常用命令 IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时 ...

  2. 转 Nginx Access Log日志统计分析常用命令

    Nginx Access Log日志统计分析常用命令Nginx Access Log日志统计分析常用命令IP相关统计 统计IP访问量 awk '{print $1}' access.log | sor ...

  3. 烂泥:利用awstats分析nginx日志

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 昨天把nginx的日志进行了切割,关于如何切割nginx日志,可以查看<烂泥:切割 ...

  4. 使用Docker快速部署ELK分析Nginx日志实践

    原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...

  5. elk实战分析nginx日志文档

    elk实战分析nginx日志文档 架构: kibana <--- es-cluster <--- logstash <--- filebeat 环境准备:192.168.3.1 no ...

  6. 使用Docker快速部署ELK分析Nginx日志实践(二)

    Kibana汉化使用中文界面实践 一.背景 笔者在上一篇文章使用Docker快速部署ELK分析Nginx日志实践当中有提到如何快速搭建ELK分析Nginx日志,但是这只是第一步,后面还有很多仪表盘需要 ...

  7. elk平台分析nginx日志的基本搭建

    一.elk套件介绍 ELK 由 ElasticSearch . Logstash 和 Kiabana 三个开源工具组成.官方网站: https://www.elastic.co/products El ...

  8. 一天,python搞个分析NGINX日志的脚本

    准备给ZABBIX用的. 统计接口访问字次,平均响应时间,4XX,5XX次数 以后可以再改进.. #!/usr/bin/env python # coding: utf-8 ############# ...

  9. 利用python分析nginx日志

    最近在学习python,写了个脚本分析nginx日志,练练手.写得比较粗糙,但基本功能可以实现. 脚本功能:查找出当天访问次数前十位的IP,并获取该IP来源,并将分析结果发送邮件到指定邮箱. 实现前两 ...

随机推荐

  1. 自学Zabbix7.1 IT services

    自学Zabbix7.1 IT services 1. 概念IT Services 服务器或者某项服务.业务的可用率,不懂技术的上级领导会过问最近服务器可用率如何.所有api的状况怎么样?通常一些技术人 ...

  2. 全面深入介绍C++字符串:string类

    http://blog.csdn.net/liuliming3000/article/details/1809385 1 从C到C++ string类 2 string类的构造函数 3 string类 ...

  3. Python(四)——PyCharm的安装和使用

    python开发IDE: #专业版 #不要汉化 快捷键:Ctrl + ? = 整体注释

  4. 在windows上部署使用redis出现的问题及解决方法

    在windows上部署使用Redis出现问题的解决方法  原文链接:https://www.cnblogs.com/herry52/p/5938902.html 下载Redis 在Redis的官网下载 ...

  5. Log4j 2X 日志文件路径问题

    关于路径问题网上说啥的都有,但是也不能说人家错,只能说不适合你这个. 一开始,我用的   ${webapp.root} <RollingFile name="rollingFileSy ...

  6. mac burp suite https证书安装

    1. 下载burp suite 2.安装,设置并代理上 3. 打开http://burp并且下载证书 4. 点击打开选择始终信任并且导出桌面 5. 火狐打开设置至证书一栏[证书机构]导入切信任 6.大 ...

  7. Spark集群之yarn提交作业优化案例

    Spark集群之yarn提交作业优化案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.启动Hadoop集群 1>.自定义批量管理脚本 [yinzhengjie@s101 ...

  8. IP路由原理

    IP路由原理 一.什么是路由 路由是指导IP报文发送的路径信息. 二.路由表的构成 路由表是路由器转发报文的判断依据 三.路由器单跳操作 四.路由表查找规则 1.选择度量值小的进行转发 2.永远将下一 ...

  9. 关于Springboot打包错误的问题 | Failed to execute goal org.springframework.boot:spring-boot-maven-plugin

    最近在使用spring-boot整合多模块,但是在父pom中打包maven install时总会报错:Failed to execute goal org.springframework.boot:s ...

  10. BigDecimal最基础用法【转】

    BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...