【02:サーバログについて】
SVシリーズでは、以下に示す 4 種類のログ ファイルが使われます。 E-mail ログファイル (/var/log/maillog に保存されます) FTP ログ ファイル (/var/log/messages に保存されます) Web ログ ファイル (/usr/local/apache/logs に保存されます) System logs (/var/log に保存されます) 各ログ ファイルに記録される情報は、サーバ動作診断時に役立ちます。ログデータは非常に役に立つものですが、定期的に管理しないと問題の原因になることもあります。 |
|||||||||||||||||||||||||||||||||||||||||||
■メールのログ ファイル | |||||||||||||||||||||||||||||||||||||||||||
バーチャル SMTP サーバに届いたメールがダウンロードされると、sendmail によってその処理が /var/log/maillog にログ記録されます。POP や IMAP アカウントに対するアクセスも、このファイルにログ記録されます。 デフォルトの設定では、/var/log/maillog が毎日循環され、8 日分のデータがバックアップとして保存されます。sendmail.st (sendmail 統計ファイル) は、一週間に 1 回循環され、/etc/syslog.conf に設定されています。 | |||||||||||||||||||||||||||||||||||||||||||
/var/log/maillog ファイルの表示 maillog は、メールに関する問題を解決するときに役立ちます。 以下のように入力します。 |
|||||||||||||||||||||||||||||||||||||||||||
% tail -f /var/log/maillog |
|||||||||||||||||||||||||||||||||||||||||||
tail コマンドを実行すると、指定したファイルの最後の10行が表示されます。 ファイルに記録される情報をリアル タイムで確認する場合は、-f オプションを指定します。 tail を終了するには、 -c を押します。 | |||||||||||||||||||||||||||||||||||||||||||
ログをリセットする場合は、tar や zip を使ってアーカイブ コピーを作成し、FTPを利用してサーバからローカル コンピュータに転送しておくとよいでしょう。 | |||||||||||||||||||||||||||||||||||||||||||
maillog のデータは、以下に示す 2 つの部分で構成されたメッセージと同じような形式で記録されています。このメッセージは、Sendmail の設定のレベル 9 のサンプルです。 |
|||||||||||||||||||||||||||||||||||||||||||
パート 1 Mar 19 18:10:19 envy sm-mta[4247]: h2JIAImx004247: from=, size=978, class=0, nrcpts=1, msgid=<20030319113738.W87363-100000@your_company.com>, proto=ESMTP, daemon=MTA, relay=other_company.com [199.104.125.167] |
|||||||||||||||||||||||||||||||||||||||||||
このメッセージの送信者は bob@your_company.com であり、キュー識別子は h2JIAImx004247 です。メッセージの本文のサイズは 978 バイトです。 優先度は、最上位 (class=0) に設定されています。受信者は 1 名です。 メッセージ ID は 20030319113738.W87363-100000@your_company.com. であり、ESMTP プロトコルを使って送信されています。 メッセージは、メール転送エージェント デーモンが受信しました。また、メッセージを送信したホストは other_company.com であり、IP アドレスは 199.104.125.167 です。 | |||||||||||||||||||||||||||||||||||||||||||
パート 2 Mar 19 18:10:25 envy sm-mta[4283]: h2JIAImx004247: to=, delay=00:00:06, xdelay=00:00:06, mailer=esmtp, pri=30899, relay=personalmailserver.com. [128.121.230.54], dsn=2.0.0, stat=Sent (h2JIAKFq089777 Message accepted for delivery) |
|||||||||||||||||||||||||||||||||||||||||||
メッセージの宛先は bob@your_company.com です。配信するのに 6 秒かかっており、トランザクションの遅れ (このアドレスのみ) も6秒でした。(このメッセージの受信者はひとりしかいないので、どちらも 6 秒というのは当然のことであると言えます。
ログの最初の項目を参照してください。) virtusertable が入力されていることから、このメッセージはほかのサーバの別のアドレスに宛てられたものであり、配信途中であることがわかります。したがって、このメッセージは ESMTP メーラーで「配信」されます。 配信試行の優先度は 30899 に設定されています。このメールを中継するサーバは personalmailserver.comであり、その IP アドレスは128.121.230.54 です。配信ステータス (DSN=配信ステータス通知) の値 2.0.0 は、配信が成功したことを表しています。 DSN (配信ステータス通知) : o 2.x.x は配信が成功したことを示します。 o 4.x.x は一時的なエラーが発生したことを示します(メールはキューに入れられ、あとで配信の再試行が行われます)。 o 5.x.x は完全なエラーが発生したことを示します。メールは返送または拒否されます。 メールは正常に送信されました (stat=Sent)。Sent のあとの括弧内に記述された内容は、受信したサーバの応答メッセージを表します。 以下の表で、maillog のエントリ例を詳しく説明します。 |
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
/var/log/maillog ファイルのリセット方法 /var/log/maillog ファイルをリセットするには、以下のように入力します。 |
|||||||||||||||||||||||||||||||||||||||||||
% cat /dev/null > /var/log/maillog | |||||||||||||||||||||||||||||||||||||||||||
このコマンドを実行すると、ファイル内のデータが消去されます。 | |||||||||||||||||||||||||||||||||||||||||||
■FTP ログ ファイル | |||||||||||||||||||||||||||||||||||||||||||
FTP のトランザクションとアクセスは /var/log/messages ファイルに記録されます。デフォルトの設定では、メッセージ ファイルは、定期的に循環されます。各エントリは 1 行で記録されます。以下の項目があります。 | |||||||||||||||||||||||||||||||||||||||||||
タイム スタンプ (ログ エントリの日時が記録されます) 送信側プログラムの名前 ログ エントリのテキスト | |||||||||||||||||||||||||||||||||||||||||||
/var/log/messages ファイルの表示 メッセージ ファイルは、以下の手順で表示します。以下のように入力します。 |
|||||||||||||||||||||||||||||||||||||||||||
% tail -f /var/log/messages | |||||||||||||||||||||||||||||||||||||||||||
tail コマンドを実行すると、指定したファイルの最後の10 行が表示されます。ファイルに記録される情報をリアル タイムで確認する場合は、-f オプションを指定します。tail を終了するには、 -c を押します。 | |||||||||||||||||||||||||||||||||||||||||||
/var/log/message ファイルのリセット ログをリセット (クリア) する場合は、必要に応じてアーカイブ ファイルを作成してください。具体的には、tar や zip を使ってファイルをアーカイブし、FTP を利用してサーバからローカル コンピュータにファイルをコピーしておくとよいでしょう。 /var/log/messages ファイルをリセットするには、以下のように入力します。 |
|||||||||||||||||||||||||||||||||||||||||||
% cat /dev/null > /var/log/messages | |||||||||||||||||||||||||||||||||||||||||||
このコマンドを実行すると、ファイル内のデータが消去されます。 | |||||||||||||||||||||||||||||||||||||||||||
■Web ログ | |||||||||||||||||||||||||||||||||||||||||||
SVサーバのWeb サービスでは、Web サイトのすべてのトラフィックに関するログ、/usr/local/apache/logs ディレクトリ内のログ ファイルに記録されます。 SVサーバでは、複合ログ フォーマット (Combined Log Format) が使われるように設定されています。このフォーマットは、以下の 2 つのログ ファイルを統合したものです。 |
|||||||||||||||||||||||||||||||||||||||||||
access_log error_log |
|||||||||||||||||||||||||||||||||||||||||||
ほとんどのケースでは、/www/conf/httpd.conf に設定されているデフォルトのディレクティブ定義で問題ありません。ただし、このようなディレクティブを変更する必要がある場合は、127 ページの「Web サーバの高度な設定」で、詳細を確認してください。 | |||||||||||||||||||||||||||||||||||||||||||
access_log ファイルの表示 アクセス ログには、TransferLog、AgentLog、ReferrerLog のデータが記録されています。ログ ファイルが空でない場合に tail コマンドを実行すると、アクセス ログ ファイルの最後のエントリがエコー表示されます。各エントリ行は、リソースの要求です。 /usr/local/apache/logs/access_log ディレクトリに移動します。 tail コマンドを実行して、指定したファイルの最後の 10 行を表示します。ファイルに記録される情報をリアル タイムで確認する場合は、-f オプションを指定します。 |
|||||||||||||||||||||||||||||||||||||||||||
% cat /dev/null > /var/log/messages | |||||||||||||||||||||||||||||||||||||||||||
アクセス ログの各エントリは6 つの部分で構成されています。以下の例を使って説明します。 | |||||||||||||||||||||||||||||||||||||||||||
some.remote.host - user - [19/Aug/1998:13:48:56 -0600] "GET /index.html HTTP/1.0" 200 4817 "http://www.yahoo.com" "Mozilla/4.75 [en] (Windows NT 5.0; U)" | |||||||||||||||||||||||||||||||||||||||||||
このエントリからわかることは、山岳標準時 (600 タイムゾーン) の 1998 年8 月19 日 13 時48 分56 秒に、some.remote.host というリモート ホストから HTTP/1.0 に準拠したブラウザを使って、index.html という URL が要求されたということです。 サーバは要求されたリソースを発見 (status code 200) して、クライアントに返しました。ドキュメントの長さは、4817 バイトで、要求の送信元は、Yahoo のホームページ (参照元サイト) のリンクです。 また、使われたブラウザは、Netscape Navigator v4.75 であることもわかります (Mozilla は、Web サーバでの Netscape の識別名です)。 以下の表を使って、前述のエントリをさらに詳しく説明します。 | |||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
access_log ファイルを終了するには、ctrl-c を押します。 |
|||||||||||||||||||||||||||||||||||||||||||
■access_log ファイルのテスト | |||||||||||||||||||||||||||||||||||||||||||
ブラウザを使って、SVサーバのインデックスファイルにアクセスします。ページにアクセスすると、新しいログ エントリがログ ファイルに記録されます。以下に、エントリの例を示します。 | |||||||||||||||||||||||||||||||||||||||||||
some.IP.address - user - [access date and time] "request" status bytes_sent file_sent referrer agent |
|||||||||||||||||||||||||||||||||||||||||||
■error_log ファイルの表示 | |||||||||||||||||||||||||||||||||||||||||||
エラー ログには、ユーザが Web サイトからページをダウンロードしようとしたときに発生したエラーが記録されます。エラー ログは、時々ダウンロードして内容を確認する事をお薦めいたします。エラー ログの内容をチェックすることによって、自社のサイト内のリンク切れやほかのサイトに対するリンクエラーなどを見つけることができます。 /usr/local/apache/logs/error_log に移動します。次に、tail コマンドを実行して、指定したファイルの最後の10 行を表示します。ファイルに記録される情報をリアル タイムで確認する場合は、-f オプションを指定します。 |
|||||||||||||||||||||||||||||||||||||||||||
% tail -f error_log |
|||||||||||||||||||||||||||||||||||||||||||
tail を終了するには、ctrl-c を押します。エラー ログの詳細レベルを変更する場合は、/www/conf/httpd.conf ファイルに記述されている LogLevel ディレクティブを使います。 |
|||||||||||||||||||||||||||||||||||||||||||
■error_log ファイルのテスト | |||||||||||||||||||||||||||||||||||||||||||
ブラウザを起動して、http://www.your_company.com/bogus-filename.htmlにアクセスします。bogus-filename.html ファイルが存在しない場合は、エラー ログ ファイルに以下のようなエントリが記録されます。 | |||||||||||||||||||||||||||||||||||||||||||
[date and time] access to /usr/local/etc/httpd/htdocs/bogus-filename.html failed for some.remote.host, reason: File does not exist |
|||||||||||||||||||||||||||||||||||||||||||
■access_log と error_log のリセット | |||||||||||||||||||||||||||||||||||||||||||
スケジュールの確認は、/etc/syslog.conf ファイルで行います。 ツールを使って手動でログ ファイルをクリアしたい場合は、Savelogs をインストールしてください。rotatelogs は、/usr/local/apache/conf/httpd.conf の Log 定義で設定されているラッパー プログラムです。 | |||||||||||||||||||||||||||||||||||||||||||
■システム ログ | |||||||||||||||||||||||||||||||||||||||||||
SVサーバ環境でシステム ログを処理するのは、ほかのログを処理する場合よりも複雑さが増します。システム ログとは、プロセスに関する詳細な情報を記録するためにコンピュータ上に作成されるファイルを指します。何を記録して何を記録しないかについては、ユーザが決定します。 このセクションでは、もっと一般的なログやファイルに記録されるデータについて説明します。サービスの大半では、独自のログや各ファイルの内容を設定することもできます。これらのログの一般的な保存場所は /var/log ディレクトリです。 メインとなる設定ファイルは /etc/syslog.conf です。syslog プロセスを使ってログを設定する場合は、FreeBSD ハンドブックに記載されている補足情報を参照してください。/etc/syslog.conf がデフォルトのファイルです。 このファイルに変更を加える場合は、プロセスに HUP を送信して、設定ファイルの再読み込みを行ってください。これは、syslog デーモンを停止することによって行います。具体的には、以下のように入力します。 |
|||||||||||||||||||||||||||||||||||||||||||
% kill -HUP pid |
|||||||||||||||||||||||||||||||||||||||||||
このコマンドを実行すると、syslog.conf の記述は以下のようになります。 | |||||||||||||||||||||||||||||||||||||||||||
# $FreeBSD: src/etc/syslog.conf,v 1.13.2.3 2002/04/15 00:44:13 dougb Exp $ # # Spaces ARE valid field separators in this file. However, other *nix-like systems still insist on using tabs as field # separators. If you are sharing this file between systems, you # may want to use only tabs as field separators here. # Consult the syslog.conf(5) man page. *.notice;lpr.info;mail.crit;news.err /var/log/messages security.* /var/log/security auth.info;authpriv.info /var/log/auth.log mail.info /var/log/mailloglpr.info /var/log/lpd-errs cron.* /var/log/cron *.emerg * # uncomment this to enable logging of all log messages to /var/log/all.log # touch /var/log/all.log and chmod it to mode 600 before it will work #*.* /var/log/all.log # uncomment this to enable logging to a remote loghost named loghost #*.* @loghost # uncomment these if you're running inn # news.crit /var/log/news/news.crit # news.err /var/log/news/news.err # news.notice /var/log/news/news.notice | |||||||||||||||||||||||||||||||||||||||||||
システムが受信するすべてのメッセージを記録するログ ファイルを有効にしてもかまいませんが、ディスクの空き容量をしっかりと管理しているのでないかぎり、このログ ファイルを有効にすることはお勧めしません。リモート ログも有効にできますが、マシンの負荷が著しく増大する可能性があります。 以下に、syslog.conf に設定されている優先レベルを示します。 | |||||||||||||||||||||||||||||||||||||||||||
LOG_EMERG - パニック状態。通常は、すべてのユーザに送信されます。 LOG_ALERT - 早急に修正する必要がある状態 (システム データベースの破損など) LOG_CRIT - 深刻な状態 (システム エラーなど) LOG_ERR - エラー LOG_WARNING - 警告メッセージ LOG_NOTICE - エラーではないが、特別な処理を行う必要がある状態 LOG_INFO - 情報メッセージ LOG_DEBUG - プログラムのデバッグ時の正常な使用に関する情報が記述されたメッセージ |
|||||||||||||||||||||||||||||||||||||||||||
syslog.conf によって、/var/log ディレクトリに以下のファイルが作成されます。それぞれのファイルに記録されている正確な情報を確認する場合はsyslog.conf をチェックします。
緊急メッセージは、アカウントの画面に表示されるメッセージです (マシンの再起動など)。 |
|||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||
syslog は、自動的にログの循環を行うことによって、ディスク クォータに悪影響が出ないようにするための強力な機能です。ただし、予期しない問題が発生して、各ログのサイズに大きな影響が与えられることもあります。 | |||||||||||||||||||||||||||||||||||||||||||
■ログ ファイルの解析 | |||||||||||||||||||||||||||||||||||||||||||
トラフィックが比較的少ないサイトの場合でも、Web サーバのログ ファイルに実際に記録さるデータの量は膨大なものになります。 記録されたデータの意味を理解するには、ログ ファイル解析プログラムを使ってデータの処理や解析を行い、レポートを作成する必要があります。 Web サーバログ ファイルを解析して、Web サーバのトラフィックに関するレポートをHTML形式やテキスト形式で作成したり、このようなレポートをメールで送信したりする機能が備わったプログラムにはさまざまなものがあります。 ログ解析プログラムによっては、特定のログ フォーマット (複合ログ フォーマットまたはコモン ログ フォーマット) で記録されたデータしか処理できないものもあります。使用するログ解析プログラムが、SVサーバ に設定されているログ フォーマットに対応していることを確認してください(デフォルトの設定では、複合ログ フォーマットが使われます)。 さまざまなツールが存在しますが、例として Urchin と Analog という 2 つのツールを挙げておきます。ソフトウェア パッケージの中には、コマンド プロンプトでしか実行できないため使い方が難しいものもありますが、このようなプログラムには、インストールが簡単な上に無償で利用できるというメリットがあります。 |
|||||||||||||||||||||||||||||||||||||||||||
■ログ ファイルの循環とデータの消去 | |||||||||||||||||||||||||||||||||||||||||||
以下に説明する各プログラムでは、SVサーバのログが循環されます。 SVサーバのデフォルトの解析プログラムは syslog です。このプログラムに備わった強力な機能を利用すると、ログを自動循環することによって、ディスク クォータを大量に消費しないようにできます。メインとなる設定ファイルは /etc/syslog.conf です。 syslog によって生成されるログ ファイルは /var/log に保存されます。循環させるファイルとその循環スケジュールについては、もう 1 つの設定ファイル (/etc/syslog.conf) を使って設定します。デフォルトの設定では、/var/log/maillog と /var/log/messages が循環しますが、Apache ログは循環しません。 rotatelogs (/usr/local/apache/bin/rotatelogs) は、ログ定義に設定できるラッパー プログラムです。Web ログ ファイルを循環さるには、以下の 2 行を Web サーバ設定ファイル (/www/conf/httpd.conf ) に記述します。 |
|||||||||||||||||||||||||||||||||||||||||||
TransferLog "|/usr/local/apache/bin/rotatelogs /path/to logs/access_log 86400" CustomLog "|/usr/local/apache/bin/rotatelogs /path/to logs/error_log 86400" combined |
|||||||||||||||||||||||||||||||||||||||||||
「path/to/logs」には、SVサーバのアクセス ログとエラー ログへのパスを指定します。最後の引数 (86400) は、ログ ファイルを循環させる頻度を秒単位で表わしたものです。 savelogs は、vinstall を使ってインストールできるアーカイブ プログラムです。このプログラムを利用すると、ログ ファイルの移動 (ファイル名の変更)、ログ ファイルのデータのフィルタリング処理、ログ ファイルのアーカイブ保存 (tar や gtar を利用)、アーカイブの圧縮 (gzip またはcompress を利用) を行うことができます。 ログ ファイルが正しく圧縮できたら、元のファイルは削除します。 |
|||||||||||||||||||||||||||||||||||||||||||