【導入実績300社以上】AWS 構築・運用保守サービス

【導入実績300社以上】AWS 構築・運用保守サービス

【サーバー管理不要】WordPress専用クラウド『WebSpeed』

【サーバー管理不要】WordPress専用クラウド『WebSpeed』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【CPU】AMD EPYC 技術検証(PoC)サービス

【CPU】AMD EPYC 技術検証(PoC)サービス

【Webシステム / サービス開発】SAKARAKU Lab(セカラクラボ)

【Webシステム / サービス開発】SAKARAKU Lab(セカラクラボ)

【取材記事】サーバー系企業ビヨンドが サーバーサイドエンジニアを募集中

【取材記事】サーバー系企業ビヨンドが サーバーサイドエンジニアを募集中

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

複数サーバーのアクセスログを統合するのにAWStatsが便利だった件

システム部の山田です。
今回は複数のWEBサーバーに分散されたApacheのアクセスログを一つにまとめる方法について。

事のはじまり

先日とあるサイトのアクセスログを解析することがあったのですが、
そのサイトはWEBサーバーがバランシングされた環境下で複数存在していました。

もちろん、アクセスログもサーバー毎にバラバラ。
ずいぶん昔からあるサイトで、fluentdみたいな素敵ツールも入ってない状態です。

で、ちょっと急ぎの要件だったのでとにかく手っ取り早く、時系列ごとに1ファイルで統合したいなーと。
ありました。ありましたよ。いいツールが。

「logresolvemerge.pl」

これは最近ちょっと見なくなった「awstats」というアクセス解析ツールの中にあるスクリプトです。
いまではアクセス解析といえば「GoogleAnalytics」なんかが超有名ですが、
一昔前は当たり前の様に「awstats」を入れてた記憶があります。(山田調べ)

これでどんなことができるかとゆーと、

This runs logresolvemerge in command line to open one or several
server log files to merge them (sorted on date) and/or to make a reverse
DNS lookup (if asked). The result log file is sent on standard output.

logresolvemergeはコマンドライン上で動作するウェブサーバーログファイルを一つ、
またはいくつかのサーバーログファイルを(日付で並び替えて)統合し、
(任意で)DNSを逆引きします。実行結果のログ内容は標準出力されます。
引用元: AWStats logfile analyzer 7.5 Documentation

おお!これこれ!

Usage:
  logresolvemerge.pl [options] file (1ファイルのみの日付ソート)
  logresolvemerge.pl [options] file1 ... filen (複数ファイルの日付ソート&統合)
  logresolvemerge.pl [options] *.*  (ディレクトリ内のログ全部を日付ソート&統合)
  perl logresolvemerge.pl [options] *.* > newfile 
(ディレクトリ内のログ全部を日付ソート&統合してnewfile に書き込み)

Options:
  -dnslookup      make a reverse DNS lookup on IP adresses
                  (IPアドレスをDNSから逆引きする)
  -dnslookup=n    same with a n parallel threads instead of serial requests
                  (dnslookupをn個の並列スレッドで実行する)
  -dnscache=file  make DNS lookup from cache file first before network lookup
                  (ネットワーク参照前にキャッシュファイル「file」からDNSルックアップを行う)
  -showsteps      print on stderr benchmark information every 8192 lines
                  (8192行毎にstderrのベンチマーク情報を出力する)
  -addfilenum     if used with several files, file number can be added in first
                  (複数ファイルの場合、ファイル番号を最初に追加する)
  -addfilename    if used with several files, file name can be added in first 
                  field of output file. This can be used to add a cluster id
                  when log files come from several load balanced computers.
                  (複数ファイルの場合、バランシングされたコンピューターのクラスタIDを追加するためにファイル名を出力ファイルの最初のフィールドに追加する)
  -stoponfirsteof Stop processing when any logfile reaches end-of-file.
                  (複数ファイルのうち一個でも最後の行に到達したら処理を止める)
  -printfields    For IIS or W3C logs, prints the latest field header for
                  the currentlog file when switching between log file entries
                  so that the parsercan automatically determine which fields
                  are avaiable.
                  (IISまたはW3Cログの場合、最新のフィールドヘッダを出力する)
 -ignoremissing will not fail if a log file is missing
                  (ログファイルに欠陥がある場合でも処理を落とさない) 

注意として、「無保証である」「ソートは厳密ではない」「単一ファイルを並び替えるためのツールではない」ということが書かれています。
フリーのツールなので何か問題があっても怒らないでください。

やってみよう

まずはインストール

このサーバーには運よく「awstats」が入ってたんですが、
お手元のサーバーに入ってなければ以下のコマンドで入れてください。

cd /usr/src/
wget http://prdownloads.sourceforge.net/awstats/awstats-7.3.tar.gz
tar zxvf awstats-7.3.tar.gz

yumで入れる場合はこっち。(ぶっちゃけlogresolvemerge.plだけ使いたいならソースだけでいいと思います。)

yum install --enablerepo=epel awstats

では実際にツールを使っていきましょう。

ログ統合

作業ディレクトリは適当に[/var/tmp]にしてますが、適宜変更してください。
※awstatsのインストールディレクトリはソースで入れた場合の「/usr/src/awstats-7.3」とします。
とりあえず、作業ディレクトリに必要なアクセスログを置いてあるものとします。

いざ!アクセスログ統合!

cd /var/tmp/
perl /usr/src/awstats-7.3/tools/logresolvemerge.pl web01-access_log web02-access_log > merged-access_log
less merged-access_log

どやさ!
ちなみにawstatsのtoolディレクトリ以下には他にもいろんなツールがあるようです。

maillogconvert.pl … postfix、sendmail、qmailのログを人が読める形式に変換する
urlaliasbuilder.pl … URLのリストファイルからURLエイリアスファイルを生成する

よかったら参考にしてみてください!
面倒なログ解析があるサーバー管理は丸投げしてもいいんですよ!

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
1,957
facebook twitter はてなブックマーク

この記事をかいた人

About the author