Nginx 日志分析

root
233
文章
0
评论
2020年5月26日00:42:22 评论 2575字阅读8分35秒

Nginx web日志分析

Nginx是一款Web软件,生产环境应用场景:
1、做为web服务器,发布网站代码(处理静态);
2、做为负载均衡软件,可以均衡后端业务
3、做为会话保持软件,将某个会话固定在后端某个机器(ip_hash)
4、做反向代理,将后端数据反馈给用户
5、做为图片服务器,利用Nginx高性能
6、做为高速缓存服务器,可以缓存静态文件,提升访问效率
    (Nginx_cache模块、Squid、Varnish、ATS-Apache traffic Server)
做为Web服务器软件,必然对外提供页面访问,可以根据Nginx日志文件分析web软件运行情况,Nginx日志文件(access_log|error_log)记录:
1、记录Nginx服务启停的信息
2、记录客户端访问Nginx的信息
    客户端IP、代理软件、访问URL、访问时间、访问状态等等
3、记录Nginx运行的异常情况,错误信息等
在企业服务器运维中,当Nginx服务器正常运行后,SA会经常密切关注Nginx的访问日志,发现有异常的日志信息需要进行及时处理。
SA = 系统分析师
SD = 系统设计师
SE = 系统工程师
Nginx默认日志路径/usr/local/nginx/logs/,其中包含访问日志access.log 和错误记录日志error.log,查看nginx访问日志:cat /usr/local/nginx/logs/access.log |more
Nginx访问日志打印的格式可以自定义,例如Nginx日志打印格式配置如下,Log_format 用来设置日志格式,Name(模块名)  Type(日志类型),可以配置多个日志模块,分别供不同的虚拟主机日志记录所调用:
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent"  $request_time';

Nginx日志格式内部变量及函数参数说明:

$remote_addr                记录客户端IP地址;
$server_name            虚拟主机名称;
$http_x_forwarded_for   HTTP的请求端真实的IP;
$remote_user                记录客户端用户名称;
$request                    记录请求的URL和HTTP协议;HTTP1.0  1.1 2.0
$status                     记录返回HTTP请求的状态;
$uptream_status         upstream的状态;
$ssl_protocol             SSL协议版本;
$body_bytes_sent            发送给客户端的字节数,不包括响应头的大小;
$bytes_sent                 发送给客户端的总字节数;
$connection_requests        当前通过一个连接获得的请求数量;
$http_referer               记录从哪个页面链接访问过来的;
$http_user_agent            记录客户端浏览器相关信息;
$request_length             请求的长度,包括请求行,请求头和请求正文;
$msec                   日志写入时间;
$request_time           请求处理时间,单位为秒,精度毫秒,Nginx接受用户请求的第一个字节到发送完响应数据的时间,包括:接收请求数据时间、程序响应时间、输出、响应数据时间。
$upstream_response_time 应用程序响应时间,Nginx向后端服务建立连接开始到接受完数据然后关闭连接为止的总时间。

通过Nginx日志,可以简单分析WEB网站的运行状态、数据报表、IP、UV(unique visitor)、PV(page view)访问量等需求,如下为常用需求分析:

统计Nginx服务器独立IP数。 

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

统计Nginx服务器总PV量。

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

统计Nginx服务器UV统计。

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

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

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

 

分析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

 

分析Nginx访问日志总的独立IP数。

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

 

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

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

 

分析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}'

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

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

分析Nginx访问日志请求处理时间大于5秒的URL(统计处理请求慢的网页 -- 客户流失 -- 优化 --> 跟开发聊 & 自己优化),并打印出时间、URL、访客IP。

awk  '{if ($NF>5)  print $NF,$7,$1}'  access.log|sort -nr|more

 

 

 

 

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年5月26日00:42:22
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
Nginx 性能调优 Nginx

Nginx 性能调优

Nginx 性能调优 Nginx.conf配置文件常用参数详解 #定义Nginx运行的用户和用户组 user  www  www; #启动进程,通常设置成和cpu的数量相等 worker_proces...
Nginx Rewrite Nginx

Nginx Rewrite

Nginx Rewrite Rewirte规则也称为规则重写,主要功能是实现浏览器访问HTTP URL的跳转(当访问不存在的路径时 -- 跳转到首页  通常而言,几乎所有的WEB服务器均可以支持URL...
NginxLB,LB动静分离 Nginx

NginxLB,LB动静分离

Nginx负载均衡 Nginx WEB默认发布静态页面,也可以均衡后端动态网站,用户发起HTTP请求,如果请求静态页面,Nginx直接处理并返回,如果请求的是动态页面,Nginx收到请求之后会进行判断...
NginxLB单点问题之VIP漂移 Nginx

NginxLB单点问题之VIP漂移

NginxLB单点问题之VIP漂移   当前拓扑存在的问题:  Nginx具备单点故障 解决方案: 使用VIP漂移 原理就是两台负载均衡服务器使用相同的子网卡配置信息,虚拟IP地址,通过sh...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: