nginx web日志介绍和分析

nginx web日志介绍和分析

Nginx访问日志打印的格式可以自定义,例如Nginx日志打印格式配置如下,Log_format 用来设置日志格式,Name(模块名) Type(日志类型),可以配置多个日志模块,分别供不同的虚拟主机日志记录所调用:

log_format

log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                  ‘$status $body_bytes_sent "$http_referer" ‘
              ‘"$http_user_agent"  $request_time‘;
access_log /spool/logs/nginx-access.log compression buffer=32k;

log_format 指定日志格式 niginx日志格式及其内部变量函数参数说明:

  1. $remote_addr 记录客户端IP地址
  2. $server_name 虚拟机主机名称
  3. $http_x_forwarded_for HTTP请求的真实IP
  4. $remote_user 记录客户端用户名称
  5. $request 记录请求的URL和Http协议版本
  6. $status 记录返回http请求的状态
  7. $upstream_status upstream的状态
  8. $ssl_protocol SSL协议版本
  9. $body_bytes_sent 发送客户端的字节数,不包括响应头的大小
  10. $bytes_sent 发送客户端的总字节数
  11. $connection_requests 当前通过一个连接获得的请求数量
  12. $http_referer 记录从哪个页面链接过来的
  13. $http_user_agent 记录客户端浏览器的相关信息
  14. $request_length 请求的长度,包括请求行,请求头和正文
  15. $msec 日志写入时间
  16. $request_time 请求处理的时间,单位为秒,精度毫秒,nginx发送第一个字节到发送完响应数据的时间。
  17. $upstream_response_time 应用程序响应的时间,nginx响应向后端服务器建立连接开始到接受完数据然后关闭连接为止的总时间。

access_log

access_log /spool/logs/nginx-access.log compression buffer=32k;access_log off;

access_log: 为访问日志设置路径,格式和缓冲区的大小(nginx访问日志支持缓存)。 在同一个配置层级里可以指定多个日志。 特定值off会取消当前配置层级里的所有access_log指令。 如果没有指定日志格式则会使用预定义的“combined”格式。

日志文件的路径可以包含变量,但此类日志存在一些限制:

  1. 工作进程使用的user 应拥有在目录里创建文件的权限;
  2. 写缓冲无效;
  3. 每条日志写入都会打开和关闭文件。然而,频繁使用的文件描述符可以存储在缓存中, 在open_log_file_cache指令的valid参数指定的时间里,

    写操作能持续写到旧文件

  4. 每次日志写入的操作都会检查请求的 根目录是否存在, 如果不存在则日志不会被创建。

    因此在一个层级里同时指定root 和access_log是一个不错的想法。

open_log_file_cache

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;

open_log_file_cache: 定义一个缓存,用来存储频繁使用的文件名中包含变量的日志文件描述符。 该指令包含以下参数:

  1. max : 设置缓存中描述符的最大数量;如果缓存被占满,最近最少使用(LRU)的描述符将被关闭。
  2. inactive : 设置缓存文件描述符在多长时间内没有被访问就关闭; 默认为10秒。
  3. min_uses : 设置在inactive参数指定的时间里, 最少访问多少次才能使文件描述符保留在缓存中;默认为1。
  4. valid : 设置一段用于检查超时后文件是否仍以同样名字存在的时间; 默认为60秒。
  5. off : 禁用缓存功能

IP PV UV VV的介绍

IP:独立的IP,一天内相同的访问相同的IP地址被计算一次。

PV:Page View,就是页面浏览量或者点击量,就是每次打开一个页面就算作一次PV,也指页面刷新的次数,每一次页面刷新,就算做一次PV流量。

UV:Unique Visitor,独立访客数,一天内访问某站点的人数,以COOKIE为依据,一天内相同客户端的IP只被计算为一次访客。

用Cookie分析UV值 : 当客户端第一次访问某个网站服务器的时候,网站服务器会给这个客户端的电脑发出一个Cookie,通常放在这个客户端电脑的C盘当中。在这个Cookie中会分配一个独一无二的编号,这其中会记录一些访问服务器的信息,如访问时间,访问了哪些页面等等。当你下次再访问这个服务器的时候,服务器就可以直接从你的电脑中找到上一次放进去的Cookie文件,并且对其进行一些更新,但那个独一无二的编号是不会变的。

VV : Visit View,访客访问的次数,当访客完成所有的浏览并最终关掉该网站的所有页面时,便完成了一次访问,同一访客一天内可能有多次访问行为,访问次数累计。

实例说明

小明在家用ADSL拨号上网,早上8点访问了www.jj.com下的2个页面,下午2点又访问了www.jj.com的3个页面。那么,对于www.jj.com来讲,今天的PV、UV、VV、IP各项指标该如何计算呢?

PV:5 PV指浏览量,因此PV指等于上午浏览的2个页面和下午浏览的3个页面之和;

UV:1 UV指独立访客数,因此一天内同一访客的多次访问只计为1个UV;

VV:1 VV指访客的访问次数,上午和下午分别有一次访问行为,因此VV为2

IP:2 IP为独立IP数,由于ADSL拨号上网每次都IP不同,因此独立IP数位2;

日志分析

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

使用的日志格式

log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
              ‘$status $body_bytes_sent "$http_referer" ‘
          ‘"$http_user_agent"  $request_time‘;
  • 统计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|wc -lawk  ‘/2017:09:00/,/2017:12:00/‘ access.log|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
时间: 2024-12-20 01:47:16

nginx web日志介绍和分析的相关文章

logstash通过rsyslog对nginx的日志收集和分析

logstash通过rsyslog对nginx的日志收集和分析 http://bbotte.blog.51cto.com/6205307/1613571 logstash&elasticsearch&kibana的安装和配置 http://bbotte.blog.51cto.com/6205307/1614453  这一篇文章里面是以nginx打补丁的方式实现rsyslog把nginx的日志同步到logstash做分析,不过线上环境种种不一样,下面是把nginx的日志直接通过rsyslog

web日志分析脚本nginx&http

1,http日志分析 #!/bin/bash for i in [email protected];do         echo ===================== "$i" =============================>>weblog.txt         echo "IP data">>weblog.txt         awk '{print $1}' $i |wc -l>>weblog.txt

海量WEB日志分析

Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, Flume, Bigtop, Crunch, Hue等. 从2011年开始,中国进入大数据风起云涌的时代,以Hadoop为代表的家族软件,占据了大数据处理的广阔地盘.开源界

Hadoop应用开发实战案例 第2周 Web日志分析项目 张丹

课程内容 本文链接: 张丹博客 http://www.fens.me 用Maven构建Hadoop项目 http://blog.fens.me/hadoop-maven-eclipse/程序源代码下载:https://github.com/bsspirit/maven_hadoop_template/releases/tag/kpi_v1Flume部署:  http://blog.csdn.net/zhouleilei/article/details/8568147  周雷雷博客Chukwa部署

海量Web日志分析 用Hadoop提取KPI统计指标

前言 Web日志包括着站点最重要的信息,通过日志分析.我们能够知道站点的訪问量,哪个网页訪问人数最多,哪个网页最有价值等.一般中型的站点(10W的PV以上),每天会产生1G以上Web日志文件. 大型或超大型的站点,可能每小时就会产生10G的数据量. 对于日志的这样的规模的数据,用Hadoop进行日志分析,是最适合只是的了. 文件夹 Web日志分析概述 需求分析:KPI指标设计 算法模型:Hadoop并行算法 架构设计:日志KPI系统架构 程序开发1:用Maven构建Hadoop项目 程序开发2:

Hadoop 提取KPI 进行海量Web日志分析

Hadoop 提取KPI 进行海量Web日志分析 Web日志包含着网站最重要的信息,通过日志分析,我们可以知道网站的访问量,哪个网页访问人数最多,哪个网页最有价值等.一般中型的网站(10W的PV以上),每天会产生1G以上Web日志文件.大型或超大型的网站,可能每小时就会产生10G的数据量. Web日志分析概述 需求分析:KPI指标设计 算法模型:Hadoop并行算法 架构设计:日志KPI系统架构 程序开发:MapReduce程序实现 1. Web日志分析概述 Web日志由Web服务器产生,可能是

linux系统web日志分析脚本

linux系统web日志分析这方面工具比较多,比如logwatch或awstats等使用perl语言开发,功能都非常强大.但这些软件都需要进行一些配置,很多朋友往往在技术方面没有投入太多力量,即便参照互联网上图文教程也无从下手.对于此情况我编写了一个web日志分析脚本,功能比较简单,无需配置,有需要的朋友可以再尝试一下.  脚本地址: gbk版(一般ssh客户端不用调整直接可用: wget http://jinxiang.oss-cn-hangzhou.aliyuncs.com/weblogch

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

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

在Linux中使用GoAccess分析Nginx的日志

一 GoAccess简介 GoAccess是一款日志分析工具,可以用来分析Apache,IIS,Nginx的日志,或者一些其他web服务的日志.其特点是安装简单,使用方便,分析速度快 二 GoAccess的安装 (1)下载: [[email protected] src]# wget http://sourceforge.net/projects/goaccess/files/0.7.1/goaccess-0.7.1.tar.gz (2)安装依赖的库文件: [[email protected]