- - PR -
Apacheのログについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-08-15 09:35
いつもお世話になっています。
Apacheをインストールしたマシンを三台利用して、 DNSでラウンドロビンして負荷分散させています。 アクセスログをwebalizerやanalogで解析したいのですが、 それぞれのマシンのログが記録されているので それらのログをすべて一箇所に集めて統計したいと考えています。 ですが、具体的にどうすればよいのかが分りません。 よい方法をご存知の方、ご教示いただけませんでしょうか。 |
|
投稿日時: 2004-08-15 19:55
こんにちわ.
今週は皆さん,夏休みのようでレス付きにくいかもしれませんねぇ apache はご存知のように,syslogd とは独立して logging しますけど,errorlog だけは syslogd へ送り込むことが出来るみたいです.純一郎様のご希望はおそらくこの errorlog ではなく,accesslog を3台->一箇所に纏めたいという理解でよろしいでしょうか? 調べてみた限りでは,accesslog を直接 syslog へは送り込めないようですが,|(pipe)に続けて command line を "" で囲んで記述してやると,出力を command に渡してやれるみたいです.例えば logger で syslogd に投げてやり,syslogd がさらに特定の loghost に投げてやれば,複数の apache の accesslog を単一の file に書き込めないかな〜と思うです.logger には任意の tag を付けたり,facirity や level を指定したりできるようですし... 「ちゃんとしたやり方」ではなく小細工じみてますが,ご参考までに. |
|
投稿日時: 2004-08-15 23:29
こんばんわ。
参考にならないかもしれませんが。 「accesslog を3台->一箇所に纏めたい」という理解から、 kaz さんと違う切り口で、 swatch を使用する方法もあるかと思います。 #シンプルじゃないですね・・・(´ヘ`;) |
|
投稿日時: 2004-08-16 01:14
いろいろ方法はあるでしょうが、単純にログスイッチの後でFTPで一箇所に集めるのが一番単純でよいように思います。
|
|
投稿日時: 2004-08-16 14:19
こんにちは〜。
こちらの記事の 第7〜10回あたりも参考になりそうでしょうか。 ・ [連載] 止められないUNIXサーバのセキュリティ対策 (@IT さんより) ちなみに、ftp で集約さる運用をしているところは知っていますです。 # きちんと転送できたかのチェックとか、面倒そうなカンジでしたが… |
|
投稿日時: 2004-08-16 15:59
アクセスログの解析結果を CGI 等でリアルタイムで見たい
場合は、syslogd を利用する方法が簡単なのではないで しょうか。 access_log を DB に出力する DSO もあるようですが、 詳しい事は知りません。 一定時間毎にファイルを転送して解析する場合、 webalizer や analog は知らないですが、 AWStats は一仕事必要です。 AWStats は解析情報作成時に、解析の終了したログ日時を 記録しているので、同じ時間帯の複数ログファイルを処理 できないので、予めマージ & ソートが必要になります。 [ メッセージ編集済み 編集者: はしもと 編集日時 2004-09-07 15:13 ] |
|
投稿日時: 2004-08-16 17:55
Perlを利用してsyslogに書き込む方法もあります。
適当な場所に以下のPerlスクリプトを記述して 適切な権限を与えます。 (ここでは/usr/local/apache/bin/syslog.pl) ===================================================== #!/usr/bin/perl use Sys::Syslog qw( :DEFAULT setlogsock ); setlogsock('unix'); openlog('[apache]','cons','pid','user'); while ($log = <STDIN>) { syslog('notice',$log); } closelog; ===================================================== Apacheのhttpd.confのTransferLog(もしくはCustomLog)ディレクティブで syslog.plを指定します。 ===================================================== CustomLog |/usr/local/apache/bin/syslog.pl combined ===================================================== これでApacheを再起動すればアクセスログがsyslogに渡されます。 Perlスクリプトの、openlog関数の第一引数がタグの、 第四引数がsyslogファシリティの指定になります。 syslog関数の第一引数がsyslogプライオリティの指定になります。 あとはsyslogの設定で@loghostを指定すれば1つのログサーバで まとめて管理することができると思います。 NTP等による時刻同期と、syslogを-rオプション付で起動することを お忘れなく。 [ メッセージ編集済み 編集者: Uta 編集日時 2004-08-16 17:56 ] [ メッセージ編集済み 編集者: Uta 編集日時 2004-08-16 17:57 ] [ メッセージ編集済み 編集者: Uta 編集日時 2004-08-16 17:57 ] |
|
投稿日時: 2004-08-20 12:26
みなさんお返事ありがとうございます。
ログのローテーション後にrsyncで転送するという方法も考えたのですが 1日分のログが複数のファイルに出力されるので アクセス解析の際に面倒かなと考えていました。 Utaさんに教えていただいたperlを使う方法でやってみたいと思います。 ありがとうございました。 |
1