`
xitongyunwei
  • 浏览: 930038 次
文章分类
社区版块
存档分类
最新评论

apache访问日志access.log的解析以及如何将其导入mysql

 
阅读更多

首先,我们对apache访问日志进行一个解读,

220.181.108.92 - - [22/Aug/2013:23:59:59 +0800] "GET /min/f=/media/js/jquery-1.7.2.media/js/global_interaction.js&201308221836 HTTP/1.1" 200 70550 "http://adfdfs.com.cn1071-2130-1.html" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko Minefield/3.0"

第一项信息是远程主机的地址,即它表明访问网站的究竟是谁。

第二项是空白,用一个“-”占位符替代。实际上绝大多数时候这一项都是如此。这个位置用于记录浏览者的标识,这不只是浏览者的登录名字,而是浏览者的email地址或者其他唯一标识符,通常只是"-";

第三项也是空白用一个占位符"-"来替代。这个位置用于记录浏览者进行身份验证时提供的名字。当然,如果网站的某些内容要求用户进行身份验证,那么这项信息是不会空白的。但是,对于大多数网站来说,日志文件的大多数记录中这一项仍旧是空白的。

第四项,表示访问者的访问时间记录,无需多解释,时间信息最后的“+800”表示服务器所处时区位于UTC之后的8小时。

第五项,是整个日志记录中最有用的信息,它告诉我们服务器收到的是一个什么样的请求

第六项,200状态代码

第七项,70500,是服务器发送给客户端的总字节数

第八项,客户在提出请求时所在的目录或URL。

第九项,客户端的详细信息

根据需求可以建张表

CREATE TABLE IF NOT EXISTS `apache_log` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id号',
`hostip` char(32) NOT NULL DEFAULT '0.0.0.0' COMMENT '远程主机的IP地址',
`marking` char(30) COMMENT '浏览者的标识',
`client_name` char(30) COMMENT '浏览者的名字',
`addtime` char(64) NOT NULL COMMENT '浏览时间',
`time_zone` char(8) NOT NULL COMMENT '时区',
`method` char(8) NOT NULL COMMENT '方法',
`resource` char(64) NOT NULL COMMENT ' 请求的资源',
`protocol` char(8) COMMENT '请求使用的协议',
`status` int(5) COMMENT '状态代码',
`bytes` int(5) COMMENT '发送给客户端的总字节数',
`refer` char(128) COMMENT '客户在提出请求时所在的目录或URL',
`client_info` char(128) COMMENT '客户在提出请求时所在的目录或URL',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

先用awk处理apache日志,将每一项都用空格分开,那么大家看到下面的好多数字就迷惑了,这到底是个什么东西呢。首先awk '{print 0 ,像apache日志的文本中每行写入一个0,原因是,表结构的第一个字段是自增列,我只要把0导入,0表示默认值,它就可以自动增长了。
cat apache_log|awk '{print 0 " "$1 " "$2 " "$3" " for (i=4;i<=NF;i++) printf $i;printf "\n"}'>> apache_log.txt


mysql>load data infile "/root/apache_log.txt" into table apache_log fields terminated by " " lines terminated by '\n';

ERROR 13 (HY000): Can't get stat of '/root/apache_log.txt' (Errcode: 13 - Permission denied)

mysql>load data local infile "/root/apache_log.txt" into table apache_log fields terminated by " " lines terminated by '\n';

Query OK, 2000 rows affected, 2672 warnings (0.61 sec)
Records: 2000 Deleted: 0 Skipped: 0 Warnings: 2672

顺便比较一下load data infile 和load data local infile 区别

如果你没有给出local,则服务器按如下方法对其进行定位:
1)如果你的filename为绝对路径,则服务器从根目录开始查找该文件.
2)如果你的filename为相对路径,则服务器从数据库的数据目录中开始查找该文件.
如果你给出了local,则文件将按以下方式进行定位:
1)如果你的filename为绝对路径,则客户机从根目录开始查找该文件.
2)如果你的filename为相对路径,则客户机从当前目录开始查找该文件.

mysql> desc apache_log;
+--------------+-----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-----------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| hostip | char(32) | NO | | 0.0.0.0 | |
| marking | char(30) | YES | | NULL | |
| browser_name | char(30) | YES | | NULL | |
| addtime | char(64) | NO | | NULL | |
| time_zone | char(8) | NO | | NULL | |
| method | char(8) | NO | | NULL | |
| resource | char(64) | NO | | NULL | |
| protocol | char(8) | YES | | NULL | |
| status | int(5) | YES | | NULL | |
| bytes | int(5) | YES | | NULL | |
| refer | char(128) | YES | | NULL | |
| client_info | char(128) | YES | | NULL | |
+--------------+-----------+------+-----+---------+----------------+
13 rows in set (0.00 sec)

mysql> select * from apache_log limit 3;
+----+-----------------+---------+--------------+-----------------------+-----------+--------+--------------------------------------------+----------+--------+-------+-------+------------------------------------------------------------------------------------+
| id | hostip | marking | browser_name | addtime | time_zone | method | resource | protocol | status | bytes | refer | client_info |
+----+-----------------+---------+--------------+-----------------------+-----------+--------+--------------------------------------------+----------+--------+-------+-------+------------------------------------------------------------------------------------+
| 1 | 220.181.108.116 | - | - | [21/Aug/2013:23:59:59 | +0800] | "GET | /search/prj/tag/2089-2124-2350-2354-1.html | HTTP/1.1 | 200 | 8181 | "-" | "Mozilla/5.0(compatible;Baiduspider/2.0;+http://www.baidu.com/search/spider.html)" |
| 2 | 220.181.165.5 | - | - | [21/Aug/2013:23:59:59 | +0800] | "GET | /event/bushanping/admin_login.php | HTTP/1.1 | 200 | 32095 | "-" | "Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.1.1)Gecko/20090715Firefox/3.5.1" |
| 3 | 220.181.165.136 | - | - | [21/Aug/2013:23:59:59 | +0800] | "GET | /search/diy/server-status/ | HTTP/1.1 | 404 | 21795 | "-" | "Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.1.1)Gecko/20090715Firefox/3.5.1" |
+----+-----------------+---------+--------------+-----------------------+-----------+--------+--------------------------------------------+----------+--------+-------+-------+------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

导入成功



分享到:
评论

相关推荐

    MySQL 5.1中文手冊

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    MySQL 5.1参考手册

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    MySQL 5.6 Reference Manual

    1.14. Apache log4j Version 1.2.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....

    MySQL 5.1参考手册 (中文版)

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    MySQL 5.1参考手册中文版

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    MYSQL中文手册

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并...

    mysql官方中文参考手册

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    MySQL 5.1官方简体中文参考手册

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    php_6_fast_and_easy_web_development.pdf

    Installing and Configuring MySQL. . . . . . . . . . . . . . . . 3 Various MySQL Distributions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Installing MySQL on Windows. . . . . . . . . ...

    MySQL5.1参考手册官方简体中文版

    这是MySQL参考手册的翻译版本,关于MySQL参考手册,请访问dev.mysql.com。 原始参考手册为英文版,与英文版参考手册相比,本翻译版可能不是最新的。 This translation was done by MySQL partner GreatLinux, ...

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

    我们将在这篇文章中着重讲解 Apache HTTP web server 生成的 Apache access 日志。 这次,我们会通过另类的途径来分析 Apache access 日志,我们使用的工具是 asql。asql 是一个开源的工具,它能够允许使用者使用 ...

    mysql5.1中文手册

    mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并...

    Awstats access_log Exporter-开源

    这个简单的脚本将允许您将MySQL数据库中的Apache访问日志导出到平面文件中,以供Awstats和其他程序使用。 请参阅自述文件以了解更多信息。

    配置阿帕奇1.PHP4.23在WindowsXP下的IIS和Apache2两种服务器上的安装实例 http://www.phpe.net/articles/260.shtml

    在WinMySQLAdmin1.4没有启动前,点击mysql\bin下的mysql.exe时,只显示黑屏,或很快闪过出现 "ERROR 2003: Can''t connect to MySQL server on ''localhost'' (10061)“,。 而启动后,显示mysql&gt;提示符。

    计算每个省份的网页访问量。保存到问价里。

    忽略:将结果放入到mysql中。 access.log 先把ip转换成10进制。ip -&gt; longip-&gt; t_access ip.txt 取出来三个字段,startip、endip、province -&gt;t_ip select province,count(1) from t_access join t_ip on longip ...

    ekbforum:没有用户授权的简单php论坛

    安装 将此ekbforum文件夹设为您的 Web ... CustomLog "logs/forumproject-access.log" common 重新启动 Apache 服务器以使更改生效。 该站点应在以下位置可用: : : 编辑文件中的MySQL连接详细信息: config / co

    java连接数据库工具类--DBConnection(java源码)

    import org.apache.log4j.Logger; public class DBConnection { /** * 获得与数据库的连接 * * @param path * @return Connection */ public static Connection getConn(String classDriver, String ...

Global site tag (gtag.js) - Google Analytics