`
bit1129
  • 浏览: 1069648 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Spark七十七】Spark分析Nginx和Apache的access.log

 
阅读更多

Spark分析Nginx和Apache的access.log,第一个问题是要对Nginx和Apache的access.log文件进行按行解析,按行解析就的方法是正则表达式:

 

Nginx的access.log解析正则表达式

 

val PATTERN = """([^ ]*) ([^ ]*) ([^ ]*) (\\[.*\\]) (\".*?\") (-|[0-9]*) (-|[0-9]*) (\".*?\") (\".*?\")""".r

  

 

Apache的access.log解析正则表达式

val PATTERN = """^(\S+) (\S+) (\S+) \[([\w:/]+\s[+\-]\d{4})\] "(\S+) (\S+) (\S+)" (\d{3}) (\d+)""".r

 

注意最后一行的.r用于指明PARTTERN是一个正则表达式对象,String.r返回的是Regex类型的对象

 

 

ApacheAccess日志解析工具类

 

/**
 * information container,like JavaBean
 */
case class ApacheAccessLog(
                            ipAddress: String,
                            clientIdentd: String,
                            userId: String,
                            dateTime: String,
                            method: String,
                            endpoint: String,
                            protocol: String,
                            responseCode: Int,
                            contentSize: Long) {

}

/**
 * Retrieve information from log line using Regular Expression
 */
object ApacheAccessLog {
  val PATTERN = """^(\S+) (\S+) (\S+) \[([\w:/]+\s[+\-]\d{4})\] "(\S+) (\S+) (\S+)" (\d{3}) (\d+)""".r

  def parseLogLine(log: String): ApacheAccessLog = {
    val res = PATTERN.findFirstMatchIn(log)
    if (res.isEmpty) {
      throw new RuntimeException("Cannot parse log line: " + log)
    }
    val m = res.get
    ApacheAccessLog(m.group(1), m.group(2), m.group(3), m.group(4),
      m.group(5), m.group(6), m.group(7), m.group(8).toInt, m.group(9).toLong)
  }

  def main(args: Array[String]) {
    val line = """192.13.212.25 - - [04/Aug/2014:15:18:27 +0800] "GET /abc/ HTTP/1.1" 200 280"""
    val log = ApacheAccessLog.parseLogLine(line);
    println(log.ipAddress)
    println(log.clientIdentd)
    println(log.userId)
    println(log.dateTime)
    println(log.method)
    println(log.endpoint)
    println(log.protocol)
    println(log.responseCode)
    println(log.contentSize)

  }

}

 

 

 

http://www.iteblog.com/archives/1250

分享到:
评论

相关推荐

    nginx日志测试使用 access.log.zip

    总之,`access.log`是Nginx服务器的重要组成部分,它提供了宝贵的服务器运行数据,通过有效的日志分析,我们可以更好地理解用户行为,优化网站性能,以及确保系统的稳定性和安全性。`access.log.zip`压缩文件的解压...

    Nginx的error_log和Access_log分析.docx

    Nginx 的 error_log 和 Access_log 分析 Nginx 是一个轻量级的 Web 服务器,常用于高流量的网站和应用程序。Nginx 的日志系统是其核心组件之一,为我们提供了对服务器性能、访问情况和错误信息的跟踪和监控。今天,...

    nginx服务器中access_log日志分析与配置详解

    在Nginx的配置文件(如`nginx.conf`或服务器块配置文件)中,可以通过以下方式启用和配置Access Log: ``` server { location / { access_log /var/log/nginx/access.log main; } } ``` 上述配置将把Access...

    实战Nginx取代Apache的高性能Web服务器_文字版

    1. 日志格式:自定义`access_log`和`error_log`的格式,便于日志分析。 2. 日志切割:使用外部工具如logrotate定期切割和压缩日志文件,节省磁盘空间。 3. 日志优化:关闭无用的日志记录,减少不必要的I/O操作。 七...

    access.log数据、用户日志分析数据

    "access.log"文件是Web服务器(如Apache或Nginx)记录所有HTTP请求的标准日志文件,它包含了用户访问网站时的各种详细信息。通过分析这些日志数据,我们可以获取到丰富的用户行为信息,帮助优化网站性能,提升用户...

    nginx-1.21.6.zip和nginx-1.21.6.tar.gz

    - Linux安装:通常通过编译源码完成,首先解压nginx-1.21.6.tar.gz,然后执行./configure,make,sudo make install等步骤,最后编辑/etc/nginx/nginx.conf配置文件并启动服务。 4. Nginx核心功能 - 静态文件服务...

    nginx1.21.5 nginx.conf配置文件

    nginx1.21.5 nginx.conf配置文件

    多线程自定义规则 Nginx Access Log 分析器(比AWK快)

    因此,我们探讨的是如何利用多线程和自定义规则来构建一个比AWK更快的Nginx Access Log分析器。 首先,我们要理解Nginx Access Log的格式。通常,它遵循Common Log Format或Combined Log Format,包含以下字段:...

    nginx.conf下载

    nginx.conf配置文件,反向代理,负载均衡--轮询、权重、IPHASH等

    nginx-accesskey

    4. 定位到 Nginx 或 Tengine 的主配置文件,通常为 `conf/nginx.conf` 或 `conf/tengine.conf`,根据你的实际情况选择。 5. 在 `nginx.conf` 或 `tengine.conf` 中添加模块配置,例如: ``` http { ... # 添加 ...

    nginx-log-analysis:用于分析 nginx 日志文件的很棒的 linux shell 命令的精选列表

    默认情况下,Nginx的主要访问日志文件通常位于`/var/log/nginx/access.log`,采用combined日志格式,内容包括客户端IP、时间戳、请求方法、请求URL、HTTP状态码、请求大小、用户代理等信息。例如: ``` 127.0.0.1 -...

    nginx-accesskey-2.0.3.tar.gz

    要安装 Nginx AccessKey 插件,首先需要确保你的 Nginx 环境支持模块的编译和安装。在下载 "nginx-accesskey-2.0.3" 压缩包后,解压并进入目录,按照以下步骤操作: - 使用 `./configure` 指令配置 Nginx,确保...

    可自动按天分割日志的nginx (根据nginx源代码修改得来)

    将在 logs目录下生成类似 2014-01-21.access.log 的log文件,这个日期会根据服务器的时间变化) 配置可参照 nginx目录下的 conf/nginx.conf 文件进行log配置 源码留给有特殊需要的朋友自己编译。此源码就是修改后的...

    Nginx配置文件(nginx.conf)配置详解[定义].pdf

    Nginx配置文件(nginx.conf)是Nginx服务器的核心配置文件,用于定义Nginx服务器的行为和配置。下面是Nginx配置文件的详细配置解释: 用户和组 Nginx配置文件中指定了用户和组,用于定义Nginx服务器的运行用户和组。...

    Nginx+Apache负载均衡

    - 直接运行 `nginx.exe`,此方式会在命令行界面显示日志信息,但关闭命令行窗口会导致服务停止。 - 使用 `start nginx.exe` 后台启动服务,这样即使关闭命令行窗口也不会影响服务运行。 - 停止服务:运行 `nginx ...

    实战Nginx.取代Apache的高性能Web服务器

    实战Nginx.取代Apache的高性能Web服务器 电子工业出版社 319页 第1部分 基础篇 第1章 Nginx简介 1.1 常用的Web服务器简介 1.2 Nginx简介 1.3 选择Nginx的理由 1.4 Nginx与Apache、Lighttpd的综合对比 第2章 ...

    实战Nginx取代Apache的高性能Web服务器.rar

    《实战Nginx取代Apache的高性能Web服务器》一书,主要探讨了如何利用Nginx这一现代、高性能的Web服务器来替代传统的Apache服务器,以提升网站的运行效率和响应速度。Nginx以其异步非阻塞的I/O模型、模块化设计以及...

    Nginx.conf配置安全优化

    在 Nginx.conf 文件中,可以使用 error_log 指令来指定错误日志的文件名和日志级别,例如: error_log logs/error.log debug; Rewrites Rewrites 是 Nginx 中的一种配置指令,用于将某些 URL 重定向到其他 URL。...

    nginx+apache+mysql+php+memcached+squid搭建门户网站

    Nginx的核心配置文件位于`/usr/local/server/nginx/conf/nginx.conf`。以下是一个简单的配置示例: ```nginx # 运行用户 user nobody nobody; # 启动进程数量 worker_processes 2; # 全局错误日志及PID文件 error...

    nginx 1.17.9.1 Unicorn.zip

    2. `nginx.exe` 和 `nginx_basic.exe` - 这两个可能是Nginx服务器的不同版本或配置,其中`nginx_basic.exe`可能是一个简化版或者基础配置的启动程序。 3. `Tweak-Optimize tcpip parameters for nginx connections....

Global site tag (gtag.js) - Google Analytics