apacheログを正規表現で切り分けてDBに格納して解析結果を表示・・・とか考えるだけでうんざりしてきたので、割り切ってmod_log_sqlをいれてみた。環境はFreeBSD6.0 + Apache2.2.0。
# cd /usr/ports/www/mod_log_sql2 # make install # vim /usr/local/etc/apache22/httpd.conf LoadModule log_sql_module libexec/apache22/mod_log_sql.so LoadModule log_sql_mysql_module libexec/apache22/mod_log_sql_mysql.so # apachectl configtest # apachectl restart
インストールして
# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 80635 to server version: 5.0.51a-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> CREATE DATABASE apachelogs; Query OK, 1 row affected (0.04 sec) mysql> GRANT INSERT,CREATE ON apachelogs.* TO loguser@localhost IDENTIFIED BY 'xxxxxx'; Query OK, 0 rows affected (0.07 sec) mysql> quit
データベースとユーザを作って
# vim /usr/local/etc/apache22/Includes/httpd.conf LogSQLLoginInfo mysql://loguser:xxxxxx@localhost/apachelogs LogSQLCreateTables on LogSQLDBParam socketfile /tmp/mysql.sock LogSQLTransferLogTable access_log
confに書く。VirtualHostディレクティブ単位で記述可能。
これだけでログ1行が1レコードとしてテーブルに格納されるようになります。滝のように流れるmysql.log。便利そうだけれども、これ、実用的なんだろうか・・・・。
参照
http://www.outoforder.cc/projects/apache/mod_log_sql/docs-2.0/
http://www.freewheelburning.com/linux/mod_log_sql.html
http://naoya.dyndns.org/~naoya/mt/archives/001042.html