Sun ONE Web Server 6.1 管理者ガイド |
第 10 章
ログファイルの使用複数の方法で、サーバーのアクティビティを監視することができます。この章では、ログファイルを記録して参照することによって、サーバーを監視する方法について説明します。組み込み型のパフォーマンス監視サービス、サービス品質機能、SNMP の使用の詳細は、「サーバーの監視」を参照してください。
この章では、次の項目について説明します。
ログファイルについてサーバーのログファイルには、サーバーのアクティビティが記録されます。このようなログを使用してサーバーを監視すると、障害追跡時に役立ちます。サーバーのルートディレクトリの https-server_name/logs/errors に保存されるエラーログファイルには、サーバーで検出されたすべてのエラーのリストがあります。サーバーのルートディレクトリの https-server_name/logs/access に保存されるアクセスログには、サーバーに対する要求とサーバーの応答に関する情報が記録されます。Sun ONE Web Server の access ログファイルに記録される情報を指定することができます。サーバーの統計情報を生成するには、ログアナライザを使用します。サーバーのエラーログファイルとアクセスログファイルをアーカイブし、バックアップをとっておくことができます。
注
オペレーションシステムでの制限によって、Linux 上で稼動している Sun ONE Web Server では 2G バイトを超えるログファイルを処理できません。最大サイズに達すると、ロギングが終了します。
UNIX および Windows プラットフォームへのログオンこの節では、ログファイルがどのように作成されるのかについて説明します。さらに、この節では、次の項目についても説明します。
デフォルトのエラーログ
UNIX と Windows のどちらのプラットフォームでも、管理サーバーからのログは、管理サーバーの https-admserve/logs/ ディレクトリに収集されます。サーバーインスタンスからのログは、https-server_name/logs/ ディレクトリで収集されます。
サーバー全体のデフォルトのログレベルを設定することができます。stdout と stderr をサーバーのイベントログにリダイレクトし、ログをオペレーティングシステムのシステムログに出力できます。さらに、stdout と stderr の内容をサーバーのイベントログに出力することもできます。デフォルトでは、ログメッセージは stderr と、指定のサーバーログファイルに送信されます。
また、ログメッセージと共に仮想サーバー ID を記録する機能も用意されています。これは、複数の仮想サーバーがメッセージの記録に同じログファイルを使用している場合に便利です。ログメッセージをシステムログに書き込むこともできます。この場合は、ログの記録はエラーログファイルでは行われません。その代わりに、ログの生成と管理は UNIX のシステムロギングサービス、または Windows プラットフォームのシステムロギングサービスによって行われます。
server.xml 属性を使用して、このファイルの内容を制御することもできます。server.xml ファイルの詳細については、『Sun ONE Web Server 6.1 Administrator's Configuration File Reference』を参照してください。
syslog を利用したログ
一元的なログ記録が必要となる安定した操作環境では、syslog が適しています。診断とデバッグのためにログ出力が頻繁に必要となる環境では、各サーバーインスタンスまたは仮想サーバーのログのほうが管理が容易です。
syslog ログファイルを syslogd およびシステムログデーモンと組み合わせて使用することで、syslog.conf ファイルを設定して次の処理を行うことができます。
syslog へのログ記録では、Sun ONE Web Server およびその他のデーモンアプリケーションからのログが同じファイルに収集されるため、Sun ONE Web Server に固有のメッセージと、特定のサーバーまたは仮想サーバーインスタンスのメッセージを区別するために、ログメッセージに次の情報が追加されます。
server.xml ファイルでは、管理サーバーとサーバーインスタンスの両方に合わせて LOG 要素を設定することができます。
UNIX オペレーティング環境で使用される syslog のロギングメカニズムの詳細を参照するには、端末のプロンプトで次の man コマンドを使用します。
man syslog
man syslogd
man syslog.conf
Windows の eventlog を利用したログ
Windows オペレーティング環境で使用されるイベントログメカニズムの詳細を参照するには、Windows のヘルプシステムの索引から「イベントログ」を参照してください。
ログレベル次の表は、ログレベルと Sun ONE Web Server のメッセージを重要度の順に示しています。
仮想サーバーとログの記録についてSun ONE Web Server では、仮想サーバーインスタンスを利用できます。Sun ONE Web Server インスタンス内の各仮想サーバーは独自の ID を持ち、それぞれに専用のログファイルを持つこともあります。各仮想サーバーで独立したログファイルを使用することで、特定のトランザクションやリソースに関するサーバーのアクティビティを容易に追跡できます。
また、ログに記録されたメッセージを、複数の仮想サーバーから 1 つのサーバーログファイルに出力することもできます。この場合、server.xml ファイルの LOG 要素に含まれる logvsid を有効にすることができます。これにより、ログメッセージがどの仮想サーバーから出力されたものであるかを識別できます。
<SERVER>
...
<LOG file="/export//https-iws-files2.red.iplanet.com/logs/errors" loglevel="finest" logtoconsole="true" usesyslog="false" createconsole="false" logstderr="true" logstdout="true" logvsid="true"/>
</SERVER>
この例では、<LOG logvsid="true"> という設定によって、すべてのログメッセージに仮想サーバー ID が記録されます。この記録された ID で、メッセージを出力した仮想サーバーを識別できます。VS 要素に errorlog 属性を指定しない場合、すべての仮想サーバーのメッセージが 1 つのファイルに記録されます。
アプリケーションとサーバーのログ出力のリダイレクト開発者にとっては、Web アプリケーションコンポーネントと J2EE アプリケーションの単体テストの段階では、アプリケーションログとサーバーログをすぐに参照できることが重要です。Windows プラットフォームでは、デスクトップのコマンドウィンドウでログメッセージを確認する方法を開発者は主に使用します。UNIX プラットフォームでは、サーバーインスタンスを開始した端末ウィンドウで stderr にログメッセージを出力するか、ログファイルに書き込まれたメッセージを tail -f コマンドを使用して確認する方法を多くの開発者が使用しています。
server.xml ファイルには、ログに記録されたメッセージをログファイルまたは端末ウィンドウに出力するように stdout および stderr を設定するための属性が含まれています。stdout と stderr の使用方法の詳細については、『Sun ONE Web Server 6.1 Administrator's Configuration File Reference』を参照してください。
ログファイルの保管アクセスログファイルとエラーログファイルが自動的にアーカイブされるように設定することができます。指定の時刻、または指定の間隔で、ログがローテーションされます。Sun ONE Web Server は、古いログファイルを保存し、そのファイルに保存日時を含む名前を付けます。
たとえば、ファイルを毎時間ローテーションするように設定すると、Sun ONE Web Server は「access.200307152400」という名前を付けてファイルを保存します。この名前は、ログファイル名、年、月、日、24 時間形式の時刻が 1 つの文字列で表わされます。ログアーカイブファイルの形式は、設定したログローテーションのタイプによって異なります。
Sun ONE Web Server では、内部デーモンログローテーションと Cron ベースのログローテーションの 2 つのタイプのアーカイブファイルのログローテーションを使用できます。
内部デーモンログローテーション
このタイプのログローテーションは HTTP デーモン内で行われ、起動時にだけ設定を変更できます。内部デーモンログローテーションでは、サーバーの再起動を必要とせず、サーバーで内部的にログをローテーションできます。この方法でローテーションされるログは、次の形式で保存されます。
access.<YYYY><MM><DD><HHMM>
error. <YYYY><MM><DD><HHMM>
ログファイルをローテーションし、新しいログファイルでの記録を開始する間隔として使用される時間を指定できます。たとえば、ローテーションの開始時刻が午前 0 時であれば、ローテーション間隔は 1440 分 (1 日) となり、変更を保存して適用すると、現在の時刻に関係なく新しいログファイルが直ちに作成されます。ログファイルは毎日午前 0 時にローテーションされ、アクセスログのタイムスタンプは午前 0 時になり、access.200307152400 という名前で保存されます。同様に、間隔を 240 分 (4 時間) に設定した場合、午前 0 時から 4 時間おきにログがローテーションされます。アクセスログファイルには、午前 0 時から午前 4 時まで、午前 4 時から午前 8 時まで、それ以降同様に 4 時間で収集された情報が保存されます。
ログローテーションが有効になっている場合、サーバーの起動時にログファイルのローテーションが開始されます。ローテーションされる最初のログファイルでは、現在時刻から次のローテーションまでの間の情報が収集されます。前の例を使用して、開始時刻を午前 0 時に設定し、ローテーションの間隔を 240 分に設定した場合、現在時刻が午前 6 時とすると、ローテーションされる最初のログファイルには午前 6 時から午前 8 時の間に収集された情報が保存され、次のログファイルには午前 8 時から午後 12 時 (正午) までの間に収集された情報が保存されます。
スケジューラベースのログローテーション
このタイプのログローテーションは、server_root/https-admserv/config/ ディレクトリの scheduler.conf ファイルに記録される時間を基準にします。この方法では、すぐにログファイルをアーカイブすることも、サーバーで特定の日の特定の時間にログファイルをアーカイブするように設定することもできます。サーバーのスケジューラ設定オプションは、server_root/https-admserv/config/ ディレクトリの schedulerd.conf に保存されます。スケジューラベースの方法でローテーションされるログは、次の形式で保存されます。
<original_filename>.<YYYY><MM><DD><HHMM>
たとえば、午後 4 時 30 分にローテーションされる access は access.200307151630 という名前になります。
ログローテーションは、サーバーの起動時に初期化されます。ローテーションを有効にすると、Sun ONE Web Server はタイムスタンプの付いたアクセスログファイルを作成し、ローテーションがサーバーの起動時に開始されます。
ローテーションが開始されると、アクセスログファイルまたはエラーログファイルに記録する必要のある要求やエラーがあり、事前にスケジュールされている「次のローテーション時」の後にその要求やエラーが発生した場合、Sun ONE Web Server で新しいタイムスタンプが付いたログファイルが作成されます。
ログファイルをアーカイブし、内部デーモンの方法とスケジュールベースの方法のどちらを使用するかを指定するには、サーバーマネージャで「Archive Log Files」ページを使用します。
アクセスログの詳細設定インストール中、サーバーに access という名前のアクセスログファイルが作成されます。アクセスをログに記録するか否か、ログの記録に使用する形式、クライアントがリソースにアクセスした場合にサーバーでそのクライアントのドメイン名を検索する必要があるか否かを指定することによって、リソースへのアクセスログをカスタマイズできます。
ログファイルの書式文字列に %vsid% を追加するには、次の手順を実行します。
既存のログファイルの形式を変更する場合は、最初に既存のログファイルを削除するか、名前を変更します。あるいは、別のファイル名を使用します。
サーバーアクセスログは、共通ログファイル形式、フレキシブルログ形式、または独自のカスタマイズ可能な形式にすることができます。共通ログファイル形式は一般的にサポートされている形式で、サーバーに関する一定量の情報が提供されます。フレキシブルログ形式では、(Sun ONE Web Server から) ログに記録する内容を選択できます。カスタマイズ可能な形式では、パラメータブロックを指定してログの内容を制御します。カスタマイズ可能な形式のパラメータのリストについては、『NSAPI Programmer's Guide』を参照してください。
リソースのアクセスログが作成されると、そのログをアーカイブする場合や、同じリソースに対して新しいアクセスログファイルを作成する場合を除いて、アクセスログの形式を変更することはできません。
ログの詳細設定を指定するには、サーバーマネージャの「Access Log Preferences」ページを使用するか、または obj.conf ファイルで次の指令を手動で変更します。magnus.conf では、サーバーは関数 flex-init を呼び出してフレキシブルロギングシステムを初期化し、obj.conf で関数 flex-log を呼び出して要求された特定のデータをフレキシブルログ形式で記録します。共通ログファイル形式を使用して要求をログに記録するには、サーバーは init-clf を呼び出して obj.conf で使用される共通ログのサブシステムを初期化し、common-log を呼び出して要求された特定のデータを (ほとんどの HTTP サーバーで使用される) 共通ログ形式で記録します。
NSAPI ロギング関数と有効な指令とパラメータの詳細は、『NSAPI Programmer's Guide』を参照してください。
Cookie を使用した簡易ロギング
Sun ONE Web Server には、flexlog 機能を使用して簡単に特定の cookie のログをとる方法もあります。obj.conf 設定ファイル内の flex-log サブシステムを初期化する行に「Req->headers.cookie.cookie_name」を追加します。これによって、要求のヘッダーに cookie 変数がある場合は cookie 変数 cookie_name の値がログに記録され、ない場合は「-」が記録されます。
エラーロギングオプションの設定Sun ONE Web Server 6.1 では、サーバーのエラーログに記録される情報を設定することができます。
管理サーバーインスタンスの設定
サーバーインスタンスの設定
LOG 要素の設定次の表は、server.xml ファイル内で設定できる LOG 要素の属性を示しています。
アクセスログファイルの参照サーバーで使用中のアクセスログファイル、およびアーカイブされたアクセスログファイルを参照できます。
管理サーバーのアクセスログを管理サーバーから参照するには、「Preferences」タブを選択し、「View Access Log」ページを選択します。
サーバーマネージャから サーバーインスタンスのアクセスログを参照するには、「Logs」タブを選択し、 「View Access Log」ページを選択します。
クラスマネージャから個々の仮想サーバーのアクセスログを参照するには、強調表示されている「Manage Virtual Servers」ページから管理する仮想サーバーを選択し、仮想サーバーマネージャのページで「Access Log」という見出しの横のリンクをクリックします。参照するエントリ数、または参照したい条件修飾子付きのエントリを指定できます。
次の内容は、共通ログファイル形式のアクセスログの例です。ログファイルの形式は、「Log Preferences」ウィンドウで指定します。詳細は、「アクセスログの詳細設定」を参照してください。
表 10-3 では、このサンプルアクセスログの最後の行について説明します。
表 10-3 サンプルアクセスログファイルの最後の行のフィールド
アクセスログフィールド
例
Hostname or IP address of client
arrow.a.com。(この場合、Web サーバーの DNS 検索の設定が有効になっているため、ホスト名が表示される。DNS 検索が無効になっている場合は、クライアントの IP アドレスが表示される
RFC 931 information
- (RFC 931 の識別情報は表示されない)
Username
john (認証のためにクライアントによって入力されたユーザー名)
Date/time of request
29/Mar/1999:4:36:53 -0800
Request
GET /help
Protocol
HTTP/1.0
Status code
401
Bytes transferred
571
次の内容は、フレキシブルロギング形式を使用したアクセスログの例です。ログファイルの形式は、「Log References」ページで指定します。詳細は、「アクセスログの詳細設定」を参照してください。
wiley.a.com - - [25/Mar/2001:12:55:26 -0800] "GET /index.htm HTTP/1.0" "GET" "/?-" "HTTP/ 1.0" 304 0 - Mozilla/2.0 (WinNT; I)
wiley.a.com - - [25/Mar/2001:12:55:26 -0800] "GET / HTTP/1.0" "GET" "/?-" "HTTP/1.0" 304 0 - Mozilla/2.0 (WinNT; I)
wiley.a.com - - [25/Mar/2001:12:55:26 -0800] "GET / HTTP/1.0" "GET" "/?-" "HTTP/1.0" 304 0 - Mozilla/2.0 (X11; I; IRIX 5.3 IP22)
エラーログファイルの参照エラーログファイルには、ログファイルが作成されてからサーバーで検出されたエラーが記録されます。また、このログファイルにはサーバーの起動時などのサーバーに関する情報メッセージも記録されます。エラーログには、失敗したユーザー認証も記録されます。エラーログを使用して、誤った URL パスや不足しているファイルを見つけることもできます。
管理サーバーから管理サーバーのエラーログファイルを参照するには、「Preferences」タブを選択し、「View Error Log」ページを選択します。
サーバーマネージャからサーバーインスタンスのエラーログファイルを参照するには、「Logs」タブを選択し、「View Error Log」ページを選択します。
クラスマネージャから個々の仮想サーバーのエラーログを参照するには、強調表示されている「Manage Virtual Servers」ページから管理する仮想サーバーを選択し、仮想サーバーマネージャのページで「Error Log」という見出しの横のリンクをクリックします。参照するエントリ数、または参照したい条件修飾子付きのエントリを指定できます。
次の内容には、エラーログ内のエントリの 2 つの例が含まれています。最初の例は、サーバーの起動に成功したことを示す情報メッセージです。2 番目の例は、クライアントの wiley.a.com が report.html ファイルを要求したが、ファイルがサーバーのプライマリドキュメントディレクトリに存在しなかったことを示します。
[[22/Jan/2001:14:31:41] info (39700): successful server startup [22/Jan/2001:14:31:41] info (39700): SunONE-WebServer/6.1 BB1-01/22/2001 01:45
[22/Jan/2001:14:31:42] warning (13751): for host wiley.a.com trying to GET /report.html, send-file reports: can't find /usr1/irenem/ES60-0424/docs/report.html (File not found)
ログアナライザの実行server-root/extras/log_anly ディレクトリには、サーバーマネージャのユーザーインタフェースから実行するログ分析ツールがあります 。このログアナライザは、共通ログ形式のファイルだけを分析します。log_anly ディレクトリにある HTML ドキュメントに、このツールのパラメータが説明されています。server-root/extras/flex_anlg ディレクトリには、フレキシブルログファイル形式用のコマンド行ログアナライザがあります。ただし、サーバーマネージャのデフォルト設定では、共通ログファイル形式とフレキシブルログファイル形式のどちらを選択したかに関係なく、フレキシブルログファイルレポートツールを使用するように設定されています。
ログアナライザを使用して、アクティビティの要約、もっとも頻繁にアクセスされる URL、サーバーがもっとも頻繁にアクセスされる時間など、デフォルトサーバーの統計情報を生成します。ログアナライザは Sun ONE Web Server から実行することも、コマンド行から実行することもできます。ログアナライザでは、デフォルトサーバー以外の仮想サーバーの統計情報を生成することはできません。ただし、「アクセスログファイルの参照」で説明されているように、各仮想サーバーの統計情報を参照することはできます。
flexanlg コマンド行ユーティリティを実行する前に、ライブラリパスを設定する必要があります。各種プラットフォームでの設定は、次のとおりです。
Solaris および Linux:
LD_LIBRARY_PATH=server_root/bin/https/lib:$LD_LIBRARY_PATH
AIX:
LIBPATH=server_root/bin/https/lib:$LIBPATH
HP-UX:
SHLIB_PATH=server_root/bin/https/lib:$SHLIB_PATH
Windows:
path=server_root¥bin¥https¥bin;%path%
注
ログアナライザを実行する前に、サーバーログをアーカイブする必要があります。サーバーログのアーカイブの詳細は、「ログファイルの保管」を参照してください。
サーバーマネージャからログアナライザを実行するには、次の手順を実行します。
詳細は、オンラインヘルプの「Generate Report ページ」を参照してください。
コマンド行からアクセスログファイルを分析するには、flexanlg ツールを実行します。このツールは server-install/extras/flex_anlg ディレクトリにあります 。
flexanlg を実行するには、コマンドプロンプトに以下のコマンドとオプションを入力します。
flexanlg [ -P ] [-n name] [-x] [-r] [-p order] [-i file]* [ -m metafile ]* [ o file][ c opts] [-t opts] [-l opts]
次に構文を説明します。
flexanlg -h.):
-P: proxy log format Default:no
-n servername: The name of the server
-x : Output in HTML Default:no
-r : Resolve IP addresses to hostnames Default:no
-p [c,t,l]: Output order (counts, time stats, lists) Default: ctl
-i filename: Input log file(s) Default:none
-o filename: Output log file Default:stdout
-m filename: Meta file(s) Default:none
-c [h,n,r,f,e,u,o,k,c,z]: Count these item(s) - Default: hnreuokc
h: total hits
n: 304 Not Modified status codes (Use Local Copy)
r: 302 Found status codes (Redirects)
f: 404 Not Found status codes (Document Not Found)
e: 500 Server Error status codes (Misconfiguration)
u: total unique URL's
o: total unique hosts
k: total kilobytes transferred
c: total kilobytes saved by caches
z: Do not count any items.
-t [sx,mx,hx, xx,z]: Find general stats - Default:s5m5h24x10
s(number): Find top (number) seconds of log
m(number): Find top (number) minutes of log
h(number): Find top (number) hours of log
u(number): Find top (number) users of log
a(number): Find top (number) user agents of log
r(number): Find top (number) referers of log
x(number): Find top (number) for miscellaneous keywords
z: Do not find any general stats.
-l [cx,hx]: Make a list of - Default: c+3h5
c(x,+x): Most commonly accessed URLs
(x: Only list x entries)
(+x: Only list if accessed more than x times)
h(x,+x): Hosts (or IP addresses) most often accessing your server
(x: Only list x entries)
(+x: Only list if accessed more than x times)
z: Do not make any lists
イベントの表示 (Windows)Sun ONE Web Server は、サーバーエラーログにエラーを記録します (「エラーログファイルの参照」を参照) が、深刻なシステムエラーのログはイベントビューアにも記録します。イベントビューアでは、システム上のイベントを監視できます。イベントビューアを使用して、基本設定での問題によって発生したエラーを参照します。この問題は、エラーログが開けるようになる前に発生する可能性があります。
イベントビューアを使用するには、次の手順を実行します。
- 「スタート」メニューから、「プログラム」、「管理ツール」を順に選択します。「管理ツール」プログラムグループで「イベントビューア」を選択します。
- 「ログ」メニューの「アプリケーション」を選択します。
「イベントビューア」に「アプリケーションログ」が表示されます。Sun ONE Web Server でのエラーには、https-serverid または WebServer6.1 というソースラベルが付いています。
- 「表示」メニューの「検索」を選択すると、ログ内でこのようなラベルを検索できます。「表示」メニューの「最新の情報に更新」を選択すると、更新されたログエントリを表示できます。
イベントビューアの詳細は、使用しているシステムのマニュアルを参照してください。