この章では、Oracle HTTP Serverログの管理方法について説明します。ここでは、サーバー・ログの管理方法、エラーの原因とその修正処置に関する情報を調べる方法、システム・アクティビティのモニタリングに役立つログ・ファイルを表示して管理する方法、および問題を診断する方法について説明します。
Oracle HTTP Serverでは、すべてのタイプのイベントを記録したメッセージが含まれるログ・ファイルが生成されます。これには、起動と停止の情報、エラー、警告メッセージ、HTTPリクエストに関するアクセス情報、および追加情報が含まれます。
この章の内容は、次のとおりです。
Oracle Fusion Middlewareのログ・ファイルは、Fusion Middleware Controlまたはテキスト・エディタのいずれかを使用して表示できます。Oracle HTTP Serverのログ・ファイルは、次のディレクトリに存在します。
ORACLE_HOME/user_projects/domains/<base_domain>/servers/componentName/logs
Oracle HTTP Serverには、次の2つのタイプのログがあります。
エラー・ログ: サーバーの問題が記録されます。
アクセス・ログ: どのコンポーネントとアプリケーションに誰がアクセスしたかが記録されます。
この項の内容は次のとおりです。
Oracle HTTP Serverでは、ログ・メッセージを生成する形式を選択できます。レガシーのApache HTTP Serverメッセージ形式でログ・メッセージを生成するか、エラー・ログ・メッセージ生成用のOracle標準に準拠するOracle Diagnostic Logging (ODL)を使用してテキストまたはXML形式のログにログ・メッセージを生成するかを選択できます。
デフォルトでは、Oracle HTTP Serverエラー・ログでは診断メッセージの生成用にODLが使用されます。これにより、すべての診断メッセージおよびログ・ファイルのための共通書式と、Oracle Fusion Middleware全体の様々なコンポーネントからの診断メッセージを相互に関係付ける仕組みが提供されます。
エラー・ログ・ファイルのデフォルト名は、instance_name.logです。
注意: ODLエラー・ロギングでは各仮想ホスト用に別個のログ・ファイルを持たせることはできません。グローバルにすべての仮想ホスト用に構成できるのみです。 |
アクセス・ログには、サーバーによって処理されたすべてのリクエストが記録されます。このログには、サーバーで処理されたすべてのHTTPトランザクションに関する基本情報が含まれます。アクセス・ログに含まれる情報は、次のとおりです。
ホスト名
リモート・ログ名
リモート・ユーザーおよび時間
リクエスト
レスポンス・コード
転送バイト数
アクセス・ログ・ファイルのデフォルト名は、access_logです。
アクセス・ログ形式
管理者は、アクセス・ログに含める情報とその書込み方法を指定できます。デフォルトの形式は共通ログ形式(CLF)です。
LogFormat "%h %l %u %t %E \"%r\" %>s %b" common
CLF形式には、次のフィールドが含まれます。
host ident remote_logname remote_usre date ECID request authuser status bytes
ident
: IdentityCheckが有効で、クライアント・システムによりidentdが実行されている場合のクライアントのアイデンティティ情報。ログにクライアント・アイデンティティ・フィールドを指定するには、%i
を使用します。
remote_logname
: リモート・ログ名(提供された場合、identd
から)。ログにリモート・ログ名を指定するには、%l
を使用します。
remote_user
: リクエストが認証された場合のリモート・ユーザー。ログにリモート・ユーザーを指定するには、%u
を使用します。
date
: day/month/year:hour:minute:second書式のリクエスト日時。ログに日時を指定するには、%t
を使用します。
ECID
: ECID情報を取得します。ログのECIDを取得するには、%E
を使用します。8.6.3項「ECID情報用アクセス・ログの構成」も参照してください。
status
: クライアントに戻される3桁のステータス・コードログにステータスを指定するには、%s
を使用します。リクエストが別のサーバーから転送される場合、ログに最後のサーバーを指定するには、%>s
を使用します。
bytes
: ヘッダーを除き、クライアントに返されるバイト数ログにバイト数を指定するには、%b
を使用します。ログにヘッダーを含めるには、%i
を使用します。
Oracle HTTP Serverでは、サイズベースと時間ベースの2種類のログ・ローテーション・ポリシーをサポートしています。ORACLE_HOME/ohs/binにあるodl_rotatelogs
を使用することで、2つのローテーション・ポリシーのいずれかを使用するようにOracle HTTP Serverログを構成することができます。デフォルトでは、Oracle HTTP Serverではエラー・ログとアクセス・ログの両方に対してodl_rotatelogs
を使用します。
odl_rotatelogs
は、Apache HTTP Serverのrotatelogs
のすべての機能と、ログ保存の追加機能をサポートします。
rotatelogs
によって提供される機能とオプションに関する情報は、次のURLで参照できます。
http://httpd.apache.org/docs/2.4/programs/rotatelogs.html
odl_rotatelogs
の一般構文は次のとおりです。
odl_rotatelogs [-u:offset] logfile {size-|time-based-rotation-options}
odl_rotatelogs
は、パイプ化されたログファイル機能で使用されます。この機能により、エラーおよびアクセス・ログ・ファイルが、ファイルに直接ではなく、別のプロセスへのパイプを通じて書き込むことができます。これによりロギングの柔軟性が高まるため、メイン・サーバーにコードを追加する必要はありません。ログをパイプに書き込むには、ファイル名を縦線「|
」で置き換え、続けて標準入力でログ入力を受け入れる実行可能ファイルの名前を指定します。パイプ化されたログファイル機能の詳細は、次のURLを参照してください。
http://httpd.apache.org/docs/2.4/logs.html#piped
パイプ化されたログファイル機能とともに使用される、odl_rotatelogs
の構文は次のようになります。
CustomLog " |${PRODUCT_HOME}/bin/odl_rotatelogs [-u:offset
]logfile
{size-|time-based-rotation-options}”log_format
odl_rotatelogs
への入力があるたびに、指定したローテーションの条件に合っているかがチェックされます。合っていれば、ファイルをローテーションします。合っていなければ、単にコンテンツに書き込みます。何も入力されていない場合は、何も起こりません。
表8-1にサイズベースおよび時間ベースのローテーションのオプションを示します。
表8-1 odl_rotatelogsのオプション
オプション | 説明 |
---|---|
|
UTCからオフセットする時間(秒)。 |
|
ログ・ファイルのパスと名前、その後にハイフン(-)そしてタイムスタンプ・フォーマットが続きます。 次に一般的なタイムスタンプ・フォーマット文字列を示します。
スラッシュを含むまで拡張されるフォーマットを含むことはできません。 |
|
ログ・ファイルのローテーションの間の時間(秒)。 |
|
ローテーションされたログ・ファイルが保存される最大時間。 |
|
時間ベースのローテーションが開始する時間。 |
|
ログ・ファイルの最大サイズ(MB)。 |
|
保存されたファイルの合計サイズ(MB)。 |
時間ベースのローテーションの場合、odl_rotatelogs
を使用したOracle HTTP Serverのログ・ローテーションは、デフォルトではUTC時間に従って計算されます。たとえば、ログ・ローテーションを86400 (24時間)に設定すると、UTCで真夜中の12:00になるたびにログがローテーションされます。Oracle HTTP Serverがインド標準時(IST)で実行されている場合、ISTはUTC+05:30であるので、ログは午前05:30にローテーションされます。
UTCオフセットに対して-u
オプションを使用するかわりに、Apacheによって提供される-l
オプションを使用することもできます。このオプションの場合、Oracle HTTP Serverでは間隔の基準としてローカル時間が使用されます。UTCオフセットを変更した環境(英国標準時(BST)またはサマータイム(DST)など)で-l
オプションを使用すると、予測できない結果につながる可能性があります。
次の例で、時間ベースとサイズベースのログのローテーションを設定するodl_rotatelogsの構文を示します。
時間ベースのローテーション
構文:
odl_rotatelogs u:offset
logfile
frequency
retentionTime
startTime
例:
CustomLog "| odl_rotatelogs u:-18000
/varlog/error.log-%Y-%m-%d21600
172800
2014-03-10T08:30:00
" common
これは、UTC-05:00 (18000 秒、ニューヨークなど)の場所に対して実行されるログ・ローテーションを構成します。このローテーションは、2014年3月10日の午前8時30分から21600秒(6時間)ごとに実行され、ローテーションされたログ・ファイルを172800秒(2日)間保存するように指定します。ログの形式はcommon
です。
構文:
odl_rotatelogs logfile frequency retentionTime startTime
例:
CustomLog "| odl_rotatelogs /varlog/error.log-%Y-%m-%d 21600 172800 2014-03-10T08:30:00" common
これは、2014年3月10日の午前8時30分から21600秒(6時間)ごとにログ・ローテーションを実行するように構成し、ローテーションされたログ・ファイルを172800秒(2日)間保存するように指定します。ログの形式はcommon
です。
サイズベースのローテーション
構文:
odl_rotatelogs logfile maxFileSize allFileSize
例:
これは、ログ・ファイルのサイズが10 MBに達するとログ・ローテーションを実行するように構成し、ローテーションされたすべてのログ・ファイルの最大サイズを70 MBと指定します(最大7個のログ・ファイル(=70/10)が保存されます)。ログの形式はcommon
です。
CustomLog "| odl_rotatelogs /var/log/error.log-%Y-%m-%d 10M 70M" common
Fusion Middleware Controlを使用してエラー・ログとアクセス・ログを構成できます。次の各項では、「ログ構成」ページから設定できるログ・タスクについて説明します。
Fusion Middleware Controlの「ログ構成」ページでエラー・ログを構成します。Fusion Middleware Controlを使用してOracle HTTP Serverのエラー・ログを構成するには、次の手順を実行します。
Oracle HTTP Serverのホームページに移動します。
「管理」メニューから「ログ構成」を選択します。
「ログ構成」ページが表示されます(次の図を参照)。
このページからは、次のエラー・ログ構成タスクを設定できます。
Fusion Middleware Controlの「ログ構成」ページでエラー・ログの形式および場所を変更できます。デフォルトで、Oracle HTTP Serverはエラー・ログ形式としてODL-Textを使用し、DOMAIN_HOME/servers/component_name/logsディレクトリ内にcomponent_name
.log
という名前のログ・ファイルを作成します。別の形式またはログ場所を使用するには、次の手順を実行します。
「ログ構成」ページから、「エラー・ログ」セクションの下の「一般」セクションに移動します。
目的のファイル形式を選択します。
ODL-Text: この形式の診断メッセージはOracle標準に準拠しており、テキスト形式で書き込まれます。
Apache: この形式の診断メッセージはレガシーのApache HTTP Serverメッセージ形式に準拠しています。
「ログ・ファイル/ディレクトリ」フィールドにエラー・ログのパスを入力します。このディレクトリは、ここに入力する前に存在している必要があります。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。4.3.5項を参照してください。
ログ・ファイルに書き込まれる情報の量とタイプは、メッセージのタイプおよびレベルを指定することによって構成できます。Oracle HTTP Serverのエラー・ログ・レベルは、デフォルトで「WARNING:32」に構成されています。別のエラー・ログ・レベルを使用するには、次の手順を実行します。
「ログ構成」ページから、「エラー・ログ」セクションの下の「一般」セクションに移動します。
「レベル」メニューからロギングのレベルを選択します。ロギング・レベルが高くなると、ログに含まれる情報も増加します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。4.3.5項を参照してください。
注意: Apache HTTP Serverログ形式用とODL-Text形式用のログ・レベルは異なります。
|
エラー・ログのログ・ローテーション・ポリシーは、1週間に1回などの時間ベース、または120MBなどのサイズベースで設定します。デフォルトでは、エラー・ログ・ファイルは10MBに達するとローテーションされます。また、最大で7個のエラー・ログ・ファイルが保持されます。別のローテーション・ポリシーを使用するには、次の手順を実行します。
「ログ構成」ページから、「エラー・ログ」セクションの下の「一般」セクションに移動します。
ローテーション・ポリシーを選択します。
ローテーションなし: ログ・ファイルをローテーションしない場合は、このポリシーを選択します。
サイズ・ベース: ログ・ファイルは、構成されたサイズに達するたびにローテーションされます。「最大ログ・ファイル・サイズ」フィールドでログ・ファイルの最大サイズを設定し、「最大保持ファイル数」フィールドでエラー・ログ・ファイルの最大保持数を設定します。
時間ベース: 構成された時刻になるたびにログ・ファイルがローテーションされます。開始時間、ローテーション頻度および保存期間を設定します。
設定を確認します。設定に問題がない場合、「適用」をクリックして変更を適用します。設定に問題がある場合、または変更を適用しない場合、「元に戻す」をクリックして元の設定に戻します。
Oracle HTTP Serverを再起動します。4.3.5項を参照してください。
Fusion Middleware Controlの「ログ構成」ページから、Oracle HTTP Server用のアクセス・ログの形式および場所を構成できます。
このページからは、次のアクセス・ログ構成タスクを設定できます。
ログ形式は、アクセス・ログに含める情報とその書込み方法を指定するものです。新規のアクセス・ログ形式を追加したり、既存の形式を編集または削除するには、次の手順を実行します。
Oracle HTTP Serverのホームページに移動します。
「管理」メニューから「ログ構成」を選択します。
「ログ構成」ページから「アクセス・ログ」セクションに移動します。
「ログ形式の管理」をクリックします。
「カスタム・アクセス・ログ形式の管理」ページが表示されます(次の図を参照)。
既存の形式を選択して変更または削除するか、「行の追加」をクリックして新規形式を作成します。
新しいフォーマットを作成する場合には、「ログ形式名」フィールドに新しいログ・フォーマットを入力し、「ログ形式パターン」フィールドにログ・フォーマットを入力します。
「OK」をクリックして新規形式を保存します。
Fusion Middleware Controlの「アクセス・ログの作成」または「アクセス・ログの編集」ページでアクセス・ログのローテーション・ポリシーを構成できます。Oracle HTTP Serverのアクセス・ログ・ファイルを構成するには、次の手順を実行します。
Oracle HTTP Serverのホームページに移動します。
「管理」メニューから「ログ構成」を選択します。
「ログ構成」ページから「アクセス・ログ」セクションに移動します。
新規のアクセス・ログを作成する場合は、「作成」をクリックします。既存のアクセス・ログ・ファイルを編集する場合は、表から行を選択して「編集」ボタンをクリックします。
「アクセス・ログの作成」ページまたは「アクセス・ログの編集」ページが表示されます。
「ログ・ファイル・パス」フィールドにアクセス・ログのパスを入力します。このディレクトリは、ここに入力する前に存在している必要があります。
「ログ形式」メニューから既存のアクセス・ログ形式を選択します。
ローテーション・ポリシーを選択します。
ローテーションなし: ログ・ファイルをローテーションしない場合は、このポリシーを選択します。
サイズ・ベース: ログ・ファイルは、構成されたサイズに達するたびにローテーションされます。「最大ログ・ファイル・サイズ」フィールドでログ・ファイルの最大サイズを設定し、「最大保持ファイル数」フィールドでエラー・ログ・ファイルの最大保持数を設定します。
時間ベース: 構成された時刻になるたびにログ・ファイルがローテーションされます。開始時間、ローテーション頻度および保存期間を設定します。
「OK」をクリックして継続します。
複数のアクセス・ログ・ファイルを作成できます。
Oracle HTTP Serverインスタンスを起動する前に、デフォルトのファイル・モード作成マスク(umask
)の値を設定します。umaskに設定する値により、エラー・ログ、アクセス・ログなどの、Oracle HTTP Serverインスタンスにより作成されるファイルのアクセス権が決まります。umask
が明示的に設定されていない場合、デフォルトで0027
の値が使用されます。
この項の内容は次のとおりです。
スタンドアロン・ドメインでデフォルトのファイル・モード作成マスクを構成するには、ステージング場所のohs.plugins.nodemanager.properties
ファイルのumask
プロパティを設定します。
DOMAIN_HOME
/config/fmwconfig/components/OHS/
instanceName
/ohs.plugins.nodemanager.properties
WebLogic Server(Full-JRFまたはRestricted-JRFのいずれか)ドメインでデフォルトのファイル・モード作成マスクを構成するには、次の手順に従います。
ドメインのAdminServerおよびNodeManagerを起動します。次に例を示します。
<Domain_HOME
>/bin/startWebLogic.sh & <DOMAIN_HOME
>/bin/startNodeManager.sh &
WLSTを起動してAdminServerに接続します。
<ORACLE_HOME
>/oracle_common/bin/wlst.sh
connect('<userName', <'password'>, <'adminServerURL'>
次のMBeanに移動します。このMBeanのObjectNameはOracle HTTP Serverインスタンスの名前に依存することに注意してください。この例では、Oracle HTTP Serverインスタンスの名前はohs1
です
editCustom() cd('oracle.ohs') cd('oracle.ohs:OHSInstance=ohs1,component=OHS,type=OHSInstance.NMProp')
umask
の値を必要な値に設定します。
startEdit() set('Umask','0022')
変更を保存してアクティブ化します。
save() activate()
WLSTコマンドを使用して、エラー・ログの冗長度を制御する、LogLevelディレクティブを設定できます。
注意: LogLevelディレクティブの詳細は、Apacheのドキュメント(http://httpd.apache.org/docs/current/mod/core.html#loglevel )を参照してください |
次の手順に従い、WLSTコマンドを使用してLogLevelディレクティブを設定します。
WLSTを起動します。
$ORACLE_HOME/oracle_common/common/bin/wlst.sh
管理サーバーに接続します。
connect('<user-name
>', '<password
>','<host
>:<port
>')
editCustom()
コマンドを使用して、oracle.ohs
MBeanのルートに移動します。editCustom()
コマンドは、WLSTが管理サーバーに接続されている場合にのみ入力できます。cd
を使用して管理オブジェクトの階層をナビゲートします。この場合、oracle.ohs
の下のohs1
です。startEdit()
コマンドを使用して編集セッションを開始します。
editCustom() cd('oracle.ohs') cd('oracle.ohs:type=OHSInstance,name=ohs1') startEdit()
set
コマンドを使用してログ・レベル属性の値を設定します。次の例では、グローバル・ログ・レベルをtrace7
に、モジュールのステータス・
ログ・レベルをerror
に、モジュールのenv
ログ・レベルをwarn
(警告)に設定します。
set('LogLevel','trace7 status:error env:warn')
変更を保存してアクティブ化します。この編集セッションと関連付られた編集ロックは、アクティブ化が完了すると解放されます。
save() activate()
次の項では、httpd.conf
ファイル内のOracle HTTP Serverのエラー・ログおよびアクセス・ログに関連するディレクティブについて説明します。
Oracle HTTP Serverはデフォルトで、診断メッセージの生成にOracle Diagnostic Logging (ODL)を使用します。ODLを使用したロギングを設定する場合、次のディレクティブを使用します。
これにより、ログ・メッセージを生成する形式を選択できます。レガシーのApache HTTP Server形式またはODLテキスト形式でログ・メッセージを生成するように選択できます。
OraLogMode Apache | ODL-Text
デフォルト値: ODL-Text
例: OraLogMode ODL-Text
注意: Apache HTTP Serverログ・ディレクティブのErrorLog およびLogLevel は、OraLogMode がApache に設定されている場合のみ有効です。OraLogMode がODL-Text に設定されている場合、ErrorLog およびLogLevel ディレクティブは無視されます。 |
すべてのログ・ファイルが含まれるディレクトリへのパスを指定します。このディレクトリは存在している必要があります。
このディレクティブは、OraLogModeがODL-Text
に設定されている場合にのみ使用されます。OraLogMode
がApache
に設定されている場合、OraLogDir
は無視され、かわりにErrorLogが使用されます。
OraLogDir <path>
デフォルト値: ORACLE_INSTANCE/servers/componentName/logs
例: OraLogDir /tmp/logs
メッセージ重大度を設定できます。このディレクティブを使用して指定したメッセージ重大度は、必要な最低レベルのメッセージ重大度として解釈され、その重大度以上のメッセージはすべてログに記録されます。
このディレクティブは、OraLogMode
がODL-Text
に設定されている場合にのみ使用されます。OraLogMode
がApache
に設定されている場合、OraLogSeverity
は無視され、かわりにLogLevelが使用されます。次の構文で、short_module_identifierName
は末尾の_module
が省略されたモジュール名です。
OraLogSeverity [short_module_identifierName
] <msg_type>[:msg_level]
デフォルト値: WARNING:32
例: OraLogSeverity mime NOTIFICATION:32
msg_type
メッセージ・タイプは大文字でも小文字でも指定できますが、メッセージ出力は大文字で表示されます。このパラメータは、次のいずれかの値にする必要があります。
INCIDENT_ERROR
ERROR
WARNING
NOTIFICATION
TRACE
msg_level
このパラメータは1から32の整数にする必要があります。重大度が最も高いのが1で、最も低いのが32です。レベル1を使用した方が、レベル32を使用した場合よりもメッセージが少なくなります。
エラー・ログ・ファイルのローテーション・ポリシーを選択できます。このディレクティブは、OraLogModeがODL-Text
に設定されている場合にのみ使用されます。OraLogMode
がApache
に設定されている場合、OraLogRotationParams
は無視されます。
OraLogRotationParams <rotation_type> <rotation_policy>
デフォルト値: S 10:70
例: OraLogRotationParams T 43200:604800 2009-05-08T10:53:29
rotation_type
このパラメータはS
(サイズベースのローテーション)またはT
(タイムベースのローテーション)のいずれかです。
rotation_policy
rotation_type
がS
(サイズベース)に設定されている場合は、rotation_policyパラメータを次のように設定します。
maxFileSize:allFilesSize
(MB)
たとえば、10:70
として構成した場合、エラー・ログ・ファイルが10MBに達するたびにローテーションが行われます。また、すべてのエラー・ログ・ファイルの合計として70MBが許可されます(最大で70/10=7個のエラー・ログ・ファイルが保存されます)。
rotation_typeがT
(タイムベース)に設定されている場合は、rotation_policyパラメータを次のように設定します。
frequency(in sec) retentionTime(in sec) startTime(in YYYY-MM-DDThh:mm:ss)
たとえば、43200:604800 2009-05-08T10:53:29
として構成した場合、エラー・ログは43200秒(12時間)ごとにローテーションが行われます。ローテーションされたログ・ファイルは、2009年5月5日の10時53分29秒から最大で604800秒(7日)間保存されます。
Oracle HTTP Serverではデフォルトでエラー・ログにODLが使用されますが、エラー・ログ・メッセージがレガシーのApache HTTP Serverメッセージ形式で生成されるようにOraLogMode
ディレクティブをApache
に構成することもできます。この項では、次のディレクティブについて説明します。
ErrorLog
ディレクティブは、サーバーにより検出されたエラーが書き込まれるファイル名を設定します。ファイルパスが絶対パスでない場合は、ServerRootからの相対パスであると想定されます。
このディレクティブは、OraLogMode
がApache
に設定されている場合にのみ使用されます。OraLogMode
がODL-Text
に設定されている場合、ErrorLogは無視され、かわりにOraLogDir
が使用されます。
関連項目: Apache ErrorLogディレクティブの詳細は、次を参照してください。 |
LogLevel
ディレクティブは、エラー・ログに記録されるメッセージの冗長性を調整します。
このディレクティブは、OraLogMode
がApache
に設定されている場合にのみ使用されます。OraLogMode
がODL-Text
に設定されている場合、LogLevelは無視され、かわりにOraLogSeverityが使用されます。
LogFormat
ディレクティブは、アクセス・ログ・ファイルの形式を指定します。デフォルトでは、Oracle HTTP Serverには次の4つのアクセス・ログ形式が定義されています。
LogFormat "%h %l %u %t %E \"%r\" %>s %b" commonLogFormat "%h %l %u %t %E \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t %E \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
関連項目: Apache HTTP Server LogFormatディレクティブの詳細は、次を参照してください。
|
CustomLog
ディレクティブは、サーバーへのリクエストをログに記録する場合に使用します。ログ形式を指定し、オプションで環境変数を使用して、リクエストの特性に基づいてロギングを条件付きで実行することもできます。デフォルトでは、アクセス・ログ・ファイルは共通ログ形式を使用するように構成されています。
関連項目: Apache CustomLogディレクティブの詳細は、次を参照してください。
|
Oracle HTTP Serverにはエラー・ログとアクセス・ログの主に2種類のログ・ファイルがあります。エラー・ログ・ファイルは、サーバーのパフォーマンスを良好に保つための重要な情報源です。エラー・ログには、システム管理者が問題を簡単に診断して修正できるように、問題の状況に関するすべての情報が記録されます。アクセス・ログ・ファイルには、サーバーが処理するあらゆるHTTPトランザクションの基本情報が含まれます。この情報を使用して、サーバーの使用状況パターンに関する統計レポートを生成できます。
エラー・ログおよびアクセス・ログの詳細は、8.1項「サーバー・ログの概要」を参照してください。
Oracle HTTP Serverのログを表示する方法を次に示します。
Oracle HTTP Serverインスタンスのログ・メッセージにアクセスするには、次の手順を実行します。
Oracle HTTP Serverのホームページに移動します。
ログ・メッセージを表示するサーバー・インスタンスを選択します。
「Oracle HTTP Server」ドロップダウン・リストから、「ログ」、「ログ・メッセージの表示」の順に選択します。
「ログ・メッセージ」ページが開きます。
ログ・ファイルの検索および表示の詳細は、『Oracle Fusion Middlewareの管理』のFusion Middleware Controlを使用したログ・ファイルとそのメッセージの表示に関する項を参照してください。
コマンド行からサーバーのログの取得と表示を行うには、ノード・マネージャに接続して、適切なWebLogic Scripting Tool (WLST)コマンドを発行する必要があります。これらのコマンドを使用して、次のような機能のいずれかを実行できます。
サーバー・ログのリスト表示。
特定のログの内容を表示。
注意: WLSTの使用方法の詳細は、『WebLogic Scripting Toolの理解』を参照してください。 |
この手順を実行してみる前に、次の内容を実行します。
コマンド行からサーバー・メトリックにアクセスを試みる前に、次の内容を確認してください。
ドメインが存在すること。
使用するインスタンスが存在すること。
インスタンスのマシン上でノード・マネージャが実行中であること。
この手順を使用するには、インスタンスと管理サーバーが動作中でも構いませんが、その必要はありません。
WLSTを使用してメトリックを表示するには、次の手順を実行します。
注意: 管理対象のドメインでは、この手順は、インスタンスが動作状態であるか停止状態であるかによって、管理マシンあるいはリモート・マシンで動作している管理サーバー上で動作します。スタンドアロン・ドメインでは、手順はローカル・マシン上でしか動作しませんが、インスタンスは動作中と停止中のいずれであっても構いません。 |
WLSTを起動します。
LinuxまたはUNIXの場合:
$ORACLE_HOME/oracle_common/common/bin/wlst.sh
Windowsの場合
C:\ORACLE_HOME\oracle_common\common\bin\wlst.cmd
選択したドメイン・ディレクトリ(ORACLE_HOME
/user_projects/domains/
domainName
など)からノード・マネージャに接続します。
nmConnect('username', 'pwd', localhost, 5556, domainName)
実行するタスクに応じて、次のWLSTコマンドの1つを入力します。
listLogs(nmConnected=1, ...)
displayLogs(nmConnected=1, ...)
例:
listLogs(nmConnected=1, target='ohs1') displayLogs(nmConnected=1, target='ohs1', tail=5)
また、テキスト・エディタを使用して、DOMAIN_HOMEディレクトリから直接Oracle HTTP Serverログ・ファイルを表示することもできます。デフォルトでは、Oracle HTTP Serverログ・ファイルは、DOMAIN_HOME/servers/component_name/logsディレクトリにあります。ログ・ファイルをご使用のローカル・クライアントにダウンロードして、別のツールを使用してログ・ファイルを表示します。
次の項では、エラー・ログおよびアクセス・ログにExecution Context ID (ECID)情報を記録するようにOracle HTTP Serverを構成する方法について説明します。
ECIDとは、Oracleコンポーネント間のリクエストにアタッチ可能なグローバルに一意のIDです。ECIDを使用すると、複数のリクエストが並行して処理される場合に同じリクエストに関する複数のログ・メッセージを追跡できます。
Oracle HTTP Serverモジュールmod_context
は、URIまたはCookieの中のECID-ContextキーあるいはECID-Contextヘッダーに対する受信リクエストをそれぞれスキャンします。見つかった場合には、有効であれば値を実行コンテキストとして使用します。見つからなかった場合には、mod_contextはリクエストに対して新たな実行コンテキストを生成し、ECID-Contextヘッダーの値として加算します。
ECID情報は、Oracle Diagnostic Logging (ODL)の一部として記録されます。ODLは、診断メッセージおよびログ・ファイルのための共通書式を示す診断メッセージを生成する方法と、様々なコンポーネントからのすべての診断メッセージを相互に関係付ける方法です。
ECIDが記録されるようにOracle HTTP Serverのエラー・ログを構成するには、httpd.conf
内のOraLogMode
ディレクティブを、デフォルト値であるodl
に必ず設定してください。odl
値は標準のApacheログ書式で、特に1つのリクエストに関連付けられたログ記録用のECID情報です。
このディレクティブに対するOraLogMode
および他に取りうる値の詳細は、8.4.1.1項「OraLogMode」を参照してください。
注意: モジュール固有のロギング重大度を有効にして初めてモジュールがロギングを実行できるように、これらのディレクティブは、httpd.conf ファイルでモジュールがロードされる前に(LoadModule ディレクティブの前に)指定することをお薦めします。 |
デフォルトで、httpd.conf
ファイルのLogFormat
ディレクティブは、ECID情報を取得するように構成されています。
LogFormat "%h %l %u %t %E
\"%r\" %>s %b" common
マイクロ秒単位で測定するレスポンス時間を追加する場合、次のように%D
を追加します。
LogFormat "%h %l %u %t %E %D
\"%r\" %>s %b" common
ECID情報の取得を抑制するには、LogFormat
ディレクティブから%E
を削除します。
LogFormat "%h %l %u %t \"%r\" %>s %b" common
この項では、mod_wl_ohs
モジュールがWebLogic Serverにリクエストを転送する、Oracle HTTP Serverの前あるいはその中で、SSLを使用してリクエストを停止する方法を説明します。リクエストがOracle HTTP Serverに届く前にSSLを停止するか、リクエストがサーバーの中にある時に停止するかは、トポロジによります。SSLを停止する一般的な理由は、第三者によって通信中のデータが傍受されるリスクを伴うことなく、別の方法によって内部ネットワークが保護されている場合の、パフォーマンス上の考慮によるものです。もうひとつの理由としては、WebLogic ServerがHTTPSリクエストを受け付けるように構成されていない場合があります。
SSLを使用しているリクエストをOracle HTTP Serverへの到達前に終了させるロード・バランサやリバース・プロキシなどの装置を使用している場合には、サーバーは、あたかもHTTPSを介して受信したようにリクエストを扱う構成とする必要があります。さらに、サーバーは、クライアントにHTTPS応答を返すように構成される必要があります。
表8-1に、ブラウザからHTTPSを介してWebLogic Serverにリクエストが送信される場合の例を示します。ロード・バランサは、SSLを停止し、リクエストをHTTPとして送信します。Oracle HTTP Serverは、あたかもHTTPSを介して受信したようにリクエストを処理する構成とする必要があります。
Oracle HTTP Serverに命令を与えてHTTPSを介して受信されたかのようにリクエストを扱うには、mod_certheaders
モジュールのSimulateHttps
ディレクティブでhttpd.conf
ファイルを構成します。
mod_certheaders
モジュールでの詳細は、2.1.1項「mod_certheadersモジュール—リバース・プロキシの有効化」を参照してください。
注意: SSLがOracle HTTP Serverで構成されている場合(すなわち、HTTPSを使用して直接Oracle HTTP Serverにアクセスしている場合)には、この手順は不要です。 |
サーバーの外部名とポート番号を使用して、たとえばhttpd.conf
構成ファイルを次のように構成します。
ServerName <www.company.com:port>
mod_certheaders
モジュールをロードするように、httpd.conf
構成ファイルをたとえば次のように構成します。
UNIXの場合:
LoadModule certheaders_module libexec/mod_certheaders.so
Windowsの場合:
LoadModule certheaders_module modules/ApacheModuleCertHeaders.dll AddModule mod_certheaders.c
注意: 他のAddModule ディレクティブにAddModule 行を含めることを推奨します。 |
HTTPS応答をクライアントに返すように、httpd.conf
ファイルの最後にあるSimulateHttps
ディレクティブをたとえば次のように構成します。
# For use with other load balancers and front-end devices: SimulateHttps On
Oracle HTTP Serverを再起動してサーバーへのアクセスをテストします。特に、https://
host:port
/index.html
のような静的ページにアクセス可能であるかテストします。
基本設定として構成をテストします。問題が生じた場合には、仮想ホストなどの潜在的な問題とのオーバーラップを避けるため、ここでトラブルシューティングを行ってください。
理想的には、すべてのHTTPSリクエストを処理するようにhttpd.conf
ファイルのVirtualHost
を構成するとよいでしょう。こうすると、HTTPSリクエストがHTTPリクエストからよりスケーラブルに分離されます。多目的サイトの場合や、ロード・バランサなどの装置がHTTPリクエストとHTTPSリクエストの両方を処理するOracle HTTP Serveの前にある場合には、こうした構成がさらに望まれます。
次の命令例では、mod_certheaders
モジュールをロードし、HTTPSリクエストだけを処理するように仮想ホストを生成します。
# Load correct module here or where other LoadModule lines exist: LoadModule certheaders_module libexec/mod_certheaders.so # This only handles https requests: <VirtualHost <name>:<port> # Use name and port used in url: ServerName <www.company.com:port> SimulateHttps On # The rest of your desired configuration for this VirtualHost goes here </VirtualHost>
Oracle HTTP Serverを再起動し、サーバーへのアクセスをテストします。最初にhttps://
host:port
/index.html
のような静的ページをテストし、次にご使用のアプリケーションをテストします。
SSLがOracle HTTP Serverで構成されていてOracle WebLogic Serverでは構成されていない場合には、Oracle HTTP Serverから送信されるリクエストに対するSSLを停止できます。
次の図はリクエスト・フローをまとめたもので、HTTPSがどこで停止するかを示しています。図8-2では、ブラウザからHTTPSリクエストが送信されます。ロード・バランサは、HTTPSリクエストをOracle HTTP Serverに送信します。SSLはOracle HTTP Serverで停止し、HTTPリクエストがWebLogic Serverに送られます。
図8-3では、ロード・バランサは存在せず、HTTPSリクエストは直接Oracle HTTP Serverに送信されます。この場合にも、SSLはOracle HTTP Serverで停止し、HTTPリクエストがWebLogic Serverに送られます。
Oracle HTTP Serverに命令を与えてHTTPSを介して受信されたかのようにリクエストを扱うには、mod_wl_ohs
.conf
ファイルのWLSProxySSL
ディレクティブを構成し、SecureProxy
ディレクティブが構成されていないことを確認します。
mod_wl_ohs.conf
ファイルを構成して、ご使用の非SSL構成の管理対象サーバーの場所に対するWLSProxySSL
ディレクティブを次のように追加します。
WLProxySSL ON
ロード・バランサなどの装置をOracle HTTP Server (同じくSSLを使用)の前で使用している場合には、WL-Proxy-SSL
をすでに設定済であるかどうかによって、次の例のように、かわりにWLProxySSLPassThrough
ディレクティブを構成することが必要な場合があります。
WLProxySSLPassThrough ON
詳細は、ご使用のロード・バランサのドキュメントを参照してください。WLProxySSLPassThroughの詳細は、『Oracle WebLogic Serverプロキシ・プラグイン12.2.1の使用』のOracle WebLogic Serverプロキシ・プラグインのパラメータに関する項を参照してください。
コンポーネント間の所定の通信に障害を与えますので、SecureProxy
ディレクティブが構成されていないことを確認してください。SSLが全体的に使用されている場合にかぎり、このディレクティブを使用します。次の例では、SecureProxy
ディレクティブはコメントアウトされています。
# To configure SSL throughout (all the way to WLS): # SecureProxy ON # WLSSLWallet "<Path to Wallet>"
Oracle HTTP Serverを再起動し、https://
host:port/path/application_name
などのJavaアプリケーションへのアクセスをテストします。