首页 > 数据库 > MySQL > 正文

使用MySQL语句来查询Apache服务器日志的方法

2024-07-24 13:07:34
字体:
来源:转载
供稿:网友
这篇文章主要介绍了使用MySQL语句来查询Apache服务器日志的方法,五个实例均基于Linux系统进行演示,需要的朋友可以参考下
 

Linux 有一个显著的特点,在正常情况下,你可以通过日志分析系统日志来了解你的系统中发生了什么,或正在发生什么。的确,系统日志是系统管理员在解决系统和应用问题时最需要的第一手资源。我们将在这篇文章中着重讲解 Apache HTTP web server 生成的 Apache access 日志。

这次,我们会通过另类的途径来分析 Apache access 日志,我们使用的工具是 asql。asql 是一个开源的工具,它能够允许使用者使用 SQL 语句来查询日志,从而通过更加友好的格式展现相同的信息。
Apache 日志背景知识

Apache 有两种日志:

  •     Access log:存放在路径 /var/log/apache2/access.log (Debian) 或者 /var/log/httpd/access_log (Red Hat)。Access Log 记录所有 Apache web server 执行的请求。
  •     Error log:存放在路径 /var/log/apache2/error.log (Debian) 或者 /var/log/httpd/error_log (Red Hat)。Error log 记录所有 Apache web server 报告的错误以及错误的情况。Error 情况包括(不限于)403(Forbidden,通常在请求被拒绝访问时被报告),404(Not found,在请求资源不存在时被报告)。

虽然管理员可以通过配置 Apache 的配置文件来自定义 Apache access log 的详细程度,不过在这篇文章中,我们会使用默认的配置,如下:
   

复制代码代码如下:
远程 IP - 请求时间 - 请求类型 - 响应代码 - 请求的 URL - 远程的浏览器信息 (也许包含操作系统信息)

 

因此一个典型的 Apache 日志条目就是下面这个样子:

   

复制代码代码如下:
192.168.0.101 - - [22/Aug/2014:12:03:36 -0300] "GET /icons/unknown.gif HTTP/1.1" 200 519 "http://192.168.0.10/test/projects/read_json/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:30.0) Gecko/20100101 Firefox/30.0"

 

但是 Apache error log 又是怎么样的呢?因为 error log 条目主要记录 access log 中特殊的请求(你可以自定义),所以你可以通过 access log 来获得关于错误情况的更多信息(example 5 有更多细节)。

此外要提前说明的, access log 是系统级别的日志文件。要分析虚拟主机的日志文件,你需要检查它们相应的配置文件(例如: 在 /etc/apache2/sites-available/[virtual host name] 里(Debian))。
在 Linux 上安装 asql

asql 由 Perl 编写,而且需求以下两个 Perl 模块:SQLite 的 DBI 驱动以及 GNU readline。
在 Debian, Ubuntu 以及其衍生发行版上安装 asql

使用基于 Debian 发行版上的 aptitude,asql 以及其依赖会被自动安装。
 

  1. # aptitude install asql 
?
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表