mysqlにsquidログを格納する
squidのログを解析するために、mysqlにimportした時のメモです。
ログ解析用のテーブルを作成
格納用のcolumnは以下を参考にして作成しました。
--
-- テーブルの構造 `access_log`
--CREATE TABLE IF NOT EXISTS `access_log` (
`time` decimal(65,3) NOT NULL,
`duration` int(11) NOT NULL,
`client_address` text NOT NULL,
`result_codes` text NOT NULL,
`byte` int(11) NOT NULL,
`request_method` text NOT NULL,
`URL` text NOT NULL,
`rfc931` int(11) NOT NULL,
`hierarchy_code` text NOT NULL,
`type` varchar(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ログファイルをimportし易い形に変換する
今回扱ったログファイルは、apache準拠ではなく標準フォーマットだったため、少し加工しました。通常、ログはタブ区切りなどですが、squidはそうではない模様。そこで、スペースをタブに変換するため、sedを使って加工しました。
※/*と/gの間はタブを入力しています。ターミナルでCTRL+vを入力したのち、タブキーを入力すると打てるはず。
注意
ターミナルの文字コードが日本語(UTF-8)になっている場合、「sed: RE error: illegal byte sequence」というエラーが出る場合があります。その場合はLANG設定を「C」に変更して上記コマンドを実行して下さい。
phpmyadminを使ってmysqlにimportする
phpmyadminのインポートタブでインポートをします。
この時、【フォーマット】は「CSV」を選択し、「カラムの区切り記号」には「\t」を記入。この時「円マーク」だとうまくいきませんでした。バックスラッシュじゃなと駄目な感じです。