• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >oracle > 使用MySQL语句来查询Apache服务器日志的方法

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

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了apache php mysql,apache php mysql配置,mysql php apache集成,apache mysql,apache mysql php安装等相关知识,希望本文的分享对您有所帮助

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 的详细程度,不过在这篇文章中,我们会使用默认的配置,如下:
   

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

   

但是 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 以及其依赖会被自动安装。

  # aptitude install asql

</div>

在 Fedora,CentOS,RHEL 上安装 asql

在 CentOS 或 RHEL 上,你需要启用 EPEL repository,然后运行以下代码。在 Fedora 中,直接运行以下代码:

  # sudo yum install perl-DBD-SQLite perl-Term-Readline-Gnu
  # wget http://www.steve.org.uk/Software/asql/asql-1.7.tar.gz
  # tar xvfvz asql-1.7.tar.gz
  # cd asql
  # make install

</div>

asql 是如何工作的?

从上面代码中的依赖中你就可以看出来,asql 转换未结构化的明文 Apache 日志为结构化的 SQLite 数据库信息。生成的 SQLite 数据库可以接受正常的 SQL 查询语句。数据库可以通过当前以及之前的日志文件生成,其中也包括压缩转换过的日志文件,类似 access.log.X.gz 或者 access_log.old。

首先,从命令行启动 asql:

  # asql

</div>

你会进入 asql 内置的 shell 交互界面。

2015626152358755.png (325×77)

输入 help 列表可执行的命令:

2015626152422067.png (599×475)

首先在 asql 中加载所有的 access 日志:

   

比如在 Debian 下:

   

在 CentOS/RHEL 下:

   

当 asql 完成对 access 日志的加载后,我们就可以开始数据库查询了。注意一下,加载后生成的数据库是 "temporary" (临时)的,意思就是数据库会在你退出 asql 的时候被清除。如果你想要保留数据库,你必须先将其保存为一个文件。我们会在后面介绍如何这么做(参考 example 3 和 4)。

2015626152440806.png (395×120)

生成的数据库有一个名为 logs 的表。输入下面的命令列出 logs 表中提供的域:

2015626152501628.png (564×364)

一个名为 .asql 的隐藏文件,保存于用户的 home 目录下,记录用户在 asql shell 中输入的命令历史。因此你可以使用方向键浏览命令历史,按下 ENTER 来重复执行之前的命令。
asql 上的示例 SQL 查询

下面是几个使用 asql 针对 Apache 日志文件运行 SQL 查询的示例:

Example 1:列出在 2014 年 10 月中请求的来源 / 时间以及 HTTP 状态码。

  SELECT source, date, status FROM logs WHERE date >= '2014-10-01T00:00:00' ORDER BY source;


</div>

2015626152520020.jpg (640×92)

    Example 2:从小到大显示单个客户端处理的请求大小(bytes)。

   

 SELECT source, SUM(size), AS NUMBER FROM logs GROUP BY source ORDER BY Number DESC;

</div>

2015626152552610.jpg (640×197)    Example 3:在当前目录中保存数据库为 [filename]。

   

2015626152616152.png (401×153)

    这样做可以避免使用 load 命令对日志的语法分析所占用的处理时间。

Example 4:在重新进入 asql 后载入数据库。

   

2015626152712677.png (581×208)

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-05-11Oracle 8x监控sysdba角色用户登陆情况
  • 2017-05-11Oracle 多参数查询语句
  • 2017-05-11MySQL安全性指南 (2)(转)
  • 2017-05-11Oracle中备份表的简单sql命令语句
  • 2017-09-08oracle中的ash的采样机制
  • 2017-05-11oracle中的trim函数使用介绍
  • 2017-05-11详解Oracle dg 三种模式切换
  • 2017-05-11oracle中schema指的是什么意思
  • 2017-05-11oracle em 按钮乱码解决办法及em网页变成英文
  • 2017-05-11使用Oracle的Decode函数进行多值判断

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 常见数据库系统比较 Oracle数据库
    • 优化Oracle库表设计的若干方法
    • Oracle 数据库 临时数据的处理方法
    • Oracle数据库opatch补丁操作流程
    • 使用geotools导入shp文件到Oracle数据库时表名带下划线问题的解决方法
    • oracle 常见等待事件及处理方法
    • Oracle回滚段的概念,用法和规划及问题的解决
    • 详解oracle 日期格式(总结)
    • 教你怎样用Oracle方便地查看报警日志错误
    • oracle 发送邮件 实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有