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
相关推荐
总之,`access.log`是Nginx服务器的重要组成部分,它提供了宝贵的服务器运行数据,通过有效的日志分析,我们可以更好地理解用户行为,优化网站性能,以及确保系统的稳定性和安全性。`access.log.zip`压缩文件的解压...
Nginx 的 error_log 和 Access_log 分析 Nginx 是一个轻量级的 Web 服务器,常用于高流量的网站和应用程序。Nginx 的日志系统是其核心组件之一,为我们提供了对服务器性能、访问情况和错误信息的跟踪和监控。今天,...
在Nginx的配置文件(如`nginx.conf`或服务器块配置文件)中,可以通过以下方式启用和配置Access Log: ``` server { location / { access_log /var/log/nginx/access.log main; } } ``` 上述配置将把Access...
1. 日志格式:自定义`access_log`和`error_log`的格式,便于日志分析。 2. 日志切割:使用外部工具如logrotate定期切割和压缩日志文件,节省磁盘空间。 3. 日志优化:关闭无用的日志记录,减少不必要的I/O操作。 七...
"access.log"文件是Web服务器(如Apache或Nginx)记录所有HTTP请求的标准日志文件,它包含了用户访问网站时的各种详细信息。通过分析这些日志数据,我们可以获取到丰富的用户行为信息,帮助优化网站性能,提升用户...
- Linux安装:通常通过编译源码完成,首先解压nginx-1.21.6.tar.gz,然后执行./configure,make,sudo make install等步骤,最后编辑/etc/nginx/nginx.conf配置文件并启动服务。 4. Nginx核心功能 - 静态文件服务...
nginx1.21.5 nginx.conf配置文件
因此,我们探讨的是如何利用多线程和自定义规则来构建一个比AWK更快的Nginx Access Log分析器。 首先,我们要理解Nginx Access Log的格式。通常,它遵循Common Log Format或Combined Log Format,包含以下字段:...
nginx.conf配置文件,反向代理,负载均衡--轮询、权重、IPHASH等
4. 定位到 Nginx 或 Tengine 的主配置文件,通常为 `conf/nginx.conf` 或 `conf/tengine.conf`,根据你的实际情况选择。 5. 在 `nginx.conf` 或 `tengine.conf` 中添加模块配置,例如: ``` http { ... # 添加 ...
默认情况下,Nginx的主要访问日志文件通常位于`/var/log/nginx/access.log`,采用combined日志格式,内容包括客户端IP、时间戳、请求方法、请求URL、HTTP状态码、请求大小、用户代理等信息。例如: ``` 127.0.0.1 -...
要安装 Nginx AccessKey 插件,首先需要确保你的 Nginx 环境支持模块的编译和安装。在下载 "nginx-accesskey-2.0.3" 压缩包后,解压并进入目录,按照以下步骤操作: - 使用 `./configure` 指令配置 Nginx,确保...
将在 logs目录下生成类似 2014-01-21.access.log 的log文件,这个日期会根据服务器的时间变化) 配置可参照 nginx目录下的 conf/nginx.conf 文件进行log配置 源码留给有特殊需要的朋友自己编译。此源码就是修改后的...
Nginx配置文件(nginx.conf)是Nginx服务器的核心配置文件,用于定义Nginx服务器的行为和配置。下面是Nginx配置文件的详细配置解释: 用户和组 Nginx配置文件中指定了用户和组,用于定义Nginx服务器的运行用户和组。...
- 直接运行 `nginx.exe`,此方式会在命令行界面显示日志信息,但关闭命令行窗口会导致服务停止。 - 使用 `start nginx.exe` 后台启动服务,这样即使关闭命令行窗口也不会影响服务运行。 - 停止服务:运行 `nginx ...
实战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服务器》一书,主要探讨了如何利用Nginx这一现代、高性能的Web服务器来替代传统的Apache服务器,以提升网站的运行效率和响应速度。Nginx以其异步非阻塞的I/O模型、模块化设计以及...
在 Nginx.conf 文件中,可以使用 error_log 指令来指定错误日志的文件名和日志级别,例如: error_log logs/error.log debug; Rewrites Rewrites 是 Nginx 中的一种配置指令,用于将某些 URL 重定向到其他 URL。...
Nginx的核心配置文件位于`/usr/local/server/nginx/conf/nginx.conf`。以下是一个简单的配置示例: ```nginx # 运行用户 user nobody nobody; # 启动进程数量 worker_processes 2; # 全局错误日志及PID文件 error...
2. `nginx.exe` 和 `nginx_basic.exe` - 这两个可能是Nginx服务器的不同版本或配置,其中`nginx_basic.exe`可能是一个简化版或者基础配置的启动程序。 3. `Tweak-Optimize tcpip parameters for nginx connections....