戻る 次へ

第 14 章 カスタム ロギング

Helix Universal Proxy のカスタム ロギング機能を使って、Helix Universal Proxy 上の特定タイプのイベントや情報をモニタできます。 また、選択したタイプのアクティブティについてレポートを作成できます。 この章では、第 13 章で取り上げたメイン ログ ファイルを補助する、カスタム ロギング機能の使用方法について説明します。

カスタム ロギングとは何か

カスタム ロギングとは、求める情報を収集し、画面やテキスト ファイルなどの出力形式でレポートできる、柔軟性の高い機能です。 たとえば、この機能を利用して、現在の Helix Universal Proxy クライアント接続についての情報を収集することができます。 カスタム ロギングは、第 13 章で説明するアクセスとエラーのログを補助することを目的としていますが、どんなログ要件にも対応することができます。

Helix Universal Proxy レジストリとは何か

カスタム ロギングでは、Helix Universal Proxy レジストリに格納された情報を基にレポートから情報を得ています。このレジストリは Windows オペレーティング システムのメイン レジストリとは別個のものです。 レジストリには Helix Universal Proxy の ほとんどの情報が含まれています。Helix Administrator ページ自体からのリンクはないものの、レジストリは Helix Administrator の機能を拡張したものです。 ブラウザで以下の URL を開くとレジストリを表示できます。

http://address:AdminPort/admin/regview.html

レジストリの変数

Helix Universal Proxy レジストリでは、LiveConnections.Count などの変数に情報が格納されています。各変数には、クライアント接続のリアルタイム情報やプロキシの状態から、設定やライセンスに至るまで、特定のタイプの値や設定の情報が含まれています。 カスタム ロギング テンプレートを作成する場合、ポップアップ HTML リストからこのような変数を選択してレポートに追加します。 レポート テンプレートでは、%LiveConnections.Count% というように必ずパーセント (%) 記号で変数を囲みます。

グローバル変数

変数リストを使って、グローバル変数を選択することもできます。グローバル変数とは、時刻のように、Helix Universal Proxy レジストリではなくオペレーティング システムから取得するものです。 以下の表では、レポートに含めることのできるグローバル変数を示します。

グローバル変数
変数 説明
%Date% MM/DD/YY という形式で表される現在の日付。
%Time% HH:MM:SS という形式で表される、ローカル時間帯での現在の時刻。
%GMTime% HH:MM:SS という形式で表される現在のグリニッチ平均時刻。
%TZDiff% ローカルの時刻とグリニッチ平均時刻の時差。たとえば、太平洋標準時間での出力は、-0800 となります。
%Hour% HH という形式で表される、ローカル時間帯の現在の時刻。
%Min% MM という形式で表される現在の時刻の分表示。
%Sec% SS という形式で表される現在の時刻の秒表示。
%% パーセント (%) 記号を出力します。

テンプレートのタイプ

追跡するレジストリ変数をレポート テンプレートに追加します。レポート テンプレートは、選択した情報をレポートする頻度と送信先 (ファイルやコンソールなど) を定義します。 テンプレートは以下の 3 種類あります。

レポート形式

レポート テンプレートを使って、選択した変数の前後にボイラープレート テキスト (くりかえし使用する定型句) を追加し、レポートをフォーマットできます。 たとえば、以下のようなエントリを作成することができます。

With a total of %LiveConnections.Count% player connections, Helix Universal Proxy
is using %proxy.ClientBW.Total% bits per second of bandwidth. (合計 %LiveConnections.Count% のプレーヤー接続で、Helix Universal Proxy
は帯域幅 1 秒あたり %proxy.ClientBW.Total% ビットを使用しています)。

上記の例では、%LiveConnections.Count%%proxy.ClientBW.Total% が変数で、それ以外のテキスト部分がボイラープレートです。 Helix Universal Proxy は、レポートを生成するとき、変数とレジストリからの値を置き換えます。生成されたレポートは以下のようになります。

With a total of 50 player connections, Helix Universal Proxy
is using 2,800,000 bits per second of bandwidth.(合計 50 のプレーヤー接続で、Helix Universal Proxy
は帯域幅 1 秒あたり 2,800,000 ビットを使用しています)。

セッション テンプレートの使用

セッション テンプレートは、レジストリ変数の動的な追加および削除についてレポートします。 Helix Universal Proxy は、メディア プレーヤー、Helix Universal Server、およびその他のコンポーネントから接続されたときに、レジストリ変数を作成します。 これらの変数には、コンポーネントに関する情報が格納されています。 セッション テンプレートを使って、それらのコンポーネントの 1 つが接続または切断したときにレポートを作成できます。 このレポート機能によって、各メディア プレーヤーに関する統計を記録することができます。たとえば、プレーヤーの IP アドレス、要求 URL、帯域幅といった情報です。

監視タイプを選択する

セッション テンプレートを作成する場合、監視タイプを 1 つ選択します。監視タイプによって、レポートを生成するコンポーネント接続の種類を指定します。 以下の表は、選択可能な値を示しています。

監視タイプ
監視タイプ名 監視するレジストリ値
クライアント セッション [Client.Session] クライアント接続
クライアント ストリーム [Client.Session.Stream.*] 個々のメディア プレーヤーのストリーム
ブロードキャスト レシーバー [BroadcastReceiver.Statistics] スプリット レシーバー
ブロードキャスト トランスミッタ [BroadcastDistribution.Statistics] スプリット トランスミッタ
ブロードキャスト [LiveConnections] ライブ接続
ブロードキャスト アーカイバ [LiveArchiving.Archiver] ライブ ブロードキャスト アーカイブ
分散ライセンス [DistributedLicensing.
Publishers.Subscribers]
分散ライセンス

たとえば、監視タイプとして クライアント セッション [Client.Session] を選択した場合、クライアントの接続または切断のたびにレポートを生成できます。 この場合、Helix Administrator の HTML ページを表示しているブラウザや、クリップを要求するメディア プレーヤーがクライアントとなることができます。 レポートでは、そのクライアント接続でどのレジストリ変数をログするのかを選択します。

ヒント : クライアント統計情報を収集する方法については、「クライアント統計ログを作成する」のセクションを参照してください。

出力形式のタイプを選択する

各セッション テンプレートでは、レポートを生成するタイミングとして、監視対象のコンポーネントの接続または切断、あるいはその両方を選択できます。 テンプレートをセット アップする場合、プルダウン リストから出力形式を 1 つ選択します。

Session Added Output Format (セッション追加時出力形式) 監視対象のコンポーネントが接続したとき、指定された変数を使ってレポートを生成します。
Session Deleted Output Format (セッション削除時出力形式) コンポーネントが切断したとき、指定された変数を使ってレポートを生成します。

2 つの出力形式によって、コンポーネント セッションの開始時と終了時に、それぞれ異なる変数を使ってレポートを生成できます。 たとえば、クライアントが接続した場合、クライアントの IP アドレス、要求 URL、ストリーミング プロトコル、トランスポート プロトコルなどの変数を記録することができます。 切断した場合には、時刻と IP アドレスだけを記録できます。

出力メソッドを定義する

カスタム ロギング出力メソッドによって、Helix Universal Proxy がレポートを発行する方法を決定します。いくつかのオプションが用意されているので、その中から各ログ レポートごとに複数の配信方法を選択できます。 また、複数のレポート テンプレートで、同じ出力 (ファイルなど) に書き込むことができます。 ほとんとの出力には、設定が必要です。 たとえば、レポートをファイルとローカルの TCP ポートに送信する場合、ファイル名とポート番号を指定します。

コンソール

Std Error (標準エラー出力) オプション、および Std Out (標準出力) オプションでは、レポートをコマンド コンソールに発行します。設定は不要です。

ファイル

出力メソッドとして File を選択すると、Helix Universal Proxy はレポートをテキスト ファイルに発行し、ログのローリングをセット アップしない限り、ファイルの終わりに最新の結果を継続的に追加していきます。以下の変数を設定します。

File name (ファイル名) ログ ファイルの名前。 デフォルトの保存場所は、Helix Universal Proxy のメイン インストール ディレクトリです。 オペレーティング システムに適した構文で、相対パスまたは絶対パスを指定します。
Log Rolling Frequency (ログのローリング頻度) 新しいログ ファイルを作成するまでの時間を、「月」、「週間」、「日」、または「時間」単位で指定します。(オプション)
Log Rolling Size (ログのローロング サイズ) 新しいファイルが作成される前に、ログ ファイルが到達可能なメガバイト単位の最大サイズ。(オプション)

ログ ファイルのローリングを使用する

ログのローリングは必須ではありませんが、統計を頻繁にレポートする場合に使用することを推奨します。 複数のテンプレートが同じログ ファイルに書き込む場合、1 つのテンプレートでのみログのローリングを定義してください。

ログのローリング方法

概して、ログ ファイルの制限は頻度またはサイズを使って行います。 方法として両方を選択することは可能ですが、その場合は、最初に達したほうの制限によってログ ファイルが作成されます。 たとえば、前のファイルのサイズが 10 メガバイトに達したとき、またはアクティビティを 3 日分記録したときのどちらかに先に達した時点で、新しいログ ファイルを作成されます。

タイムスタンプ

ログのローリングを実装した場合、Helix Universal Proxy はファイル名の末尾にタイムスタンプを追加し、そのファイルの作成時刻を示します。 proxystats.txt というファイル名を指定した場合について考えてみましょう。 ログ ディレクトリには、同じベース ファイル名をもつファイルがいくつかあるかもしれませんが、それぞれ以下のような固有のタイムスタンプをもっています。

proxystats.txt20020622134953

タイムスタンプは YYYYMMDDHHMMSS 形式で、また 24 時間形式を使用しています。 したがって、上記の例では、ファイルは 2002年6月22日 1:49.53 P.M. に作成されています。

HTTP Post

HTTP Post メソッドでは、Helix Universal Proxy は Common Gateway Interface (CGI) プログラムにレポートを発行します。以下の変数を設定します。

URL (URL) CGI プログラムの場所を示す URL。
Port (ポート) ログを受信する Web サーバー上の HTTP ポートの番号。

TCP Broadcast

出力先を Outbound TCP (アウトバウンド TCP) または Inbound TCP (インバウンド TCP) とした場合、特定の TCP ポートをリッスンしているアプリケーションにレポートを送信します。Outbound TCP メソッドでは、リモート コンピュータにレポートを発行します。 この方法を使用するには、以下の変数を設定してください。

Destination (出力先) ログを受信するコンピュータのホスト名か IP アドレス。
Port (ポート) 特定のコンピュータ上のオープン ポートの番号。

Inbound TCP (インバウンド TCP) メソッドでは、ローカル コンピュータ上にログを発行します。以下の変数を設定します。

Port (ポート) ローカル コンピュータ上のオープン ポートの番号。

UDP Broadcast

Outbound UDP (アウトバウンド UDP) メソッド、および Multicast UDP (マルチキャスト UDP) メソッドでは、ユニキャストを使ってUDP ソケットに、またはマルチキャスト UDP を使ってリモート コンピュータにレポートを発行します。以下の変数を設定します。

Destination (出力先) レポートの発行先となるコンピュータのホスト名か IP アドレス。 Multicast UDP の場合、クラス D の IP マルチキャスト アドレスを入力します。
Port (ポート) 特定のコンピュータ上のオープン ポートの番号。

UNIX のパイプとシステム ログ

UNIX オペレーティング システムでは、Pipe (パイプ) メソッドを使用してほかのプロセスでログを使用できるようにしたり、Syslog メソッドを使用して情報をシステム ログに発行したりできます。Pipe の場合、以下の変数を設定します。

Command (コマンド) あとで情報を処理するアプリケーションやスクリプトへのパイプ コマンド。

Syslog の場合、以下の優先度のどれかを選択します。それぞれ、 UNIX システム ログのエントリ タイプに対応しています。

Windows NT イベント ログ

NT Event Log を選択した場合、Helix Universal Proxy は、選択された優先度に対応するイベント ログにレポートを発行します。各オプションは、NT イベント ログのエントリ タイプに対応しています。

ロギングのテンプレートを作成する

以下の手順では、新しいロギング テンプレートの作成方法と、既存のロギング テンプレートの変更方法について説明します。 カスタム テンプレートをセット アップするには、前のセクションでの情報をよく理解している必要があります。 あらかじめ設定済みのテンプレートはすぐに使用できますが、まず有効にする必要があります。 テンプレートの詳細については、「あらかじめ設定済みのテンプレートを使用する」を参照してください。

カスタム ロギング テンプレートを作成または変更するには、以下の手順に従ってください。

  1. [Logging (ロギング) & Monitoring (モニタリング)] > [Custom Logging (カスタム ロギング)] をクリックします。
  2. 新しいテンプレートを作成するには、[Templates (テンプレート)] 領域で [+] アイコンをクリックし、[Template Name (テンプレート名)] ボックス内の名前を変更します。 この名前はユーザーが参考情報として使用するだけです。 既存のテンプレートを選択するには、[Templates (テンプレート)] 領域でその名前を反転表示します。
  3. [Template Type (テンプレート タイプ)] リスト ボックスで、[Watch (ウォッチ)]、[Session (セッション)]、または [Interval (インターバル)] を選択して、テンプレートの全体的なタイプを設定します。 ここでの選択は、ページに表示されるほかの選択肢に影響します。詳しくは手順 7 から手順 9 を参照してください。
  4. 詳細情報 : テンプレートのタイプ」を参照してください。

  5. [Template Status (テンプレートの状態)] ボックスで [On] または [Off] を選択し、カスタム ロギング レポートを有効または無効にします。 状態を変更して [Apply (適用)] をクリックするとすぐに、既存のテンプレートによってレポートが開始または終了されます。
  6. オプションとして、[Template Description (テンプレートの説明)] ボックスに説明を入力できます。 これは参考情報ですが、入力しておくことを強く推奨します。
  7. 次に、レポートの出力タイプを 1 つ以上選択し、Helix Universal Proxy のレポート送信先を決定します。
    1. [Add Output Type (出力タイプを追加)] ドロップ ダウン ボックスから出力タイプを 1 つ選択します。
    2. [Output Name (出力名)] ボックスにある名前を編集します。(オプション) この名前はユーザーが参考情報として使用するだけです。
    3. 選択した出力タイプのため、「出力メソッドを定義する」の説明に従って、必要な設定パラメータを入力します。

  8. 手順 3 で[Watch (ウォッチ)] テンプレートを選択した場合、この手順に従ってください。 その他の場合は、次の手順に進んでください。 [Watches (監視)] 領域で [Property List (プロパティ リスト)] をクリックします。 表示されたリストで、変更を監視する変数を選択します。
  9. 注意 : [Watches (監視)] リストでは、監視対象とする各変数ごとに改行してください。Helix Universal Proxy は、[Watches (監視)] リストの各行に表示される文字列を監視することで、どの変数を監視するかを判別します。

    Watch (ウォッチ) テンプレートの最小および最大出力間隔 (オプション) を使うと、レポートを定期的に生成できます。 どちらのフィールドも定義されていない場合、Helix Universal Proxy は監視対象のレジストリ変数が変更されたときだけレポートを作成します。

  10. 手順 3 で [Session (セッション)] を選択した場合、[Watch Type (監視タイプ)] リスト ボックスから適切な監視タイプを選択します。 「監視タイプを選択する」で説明されているとおり、選択した監視タイプによって、レポート出力の誘引となる動的イベントが決定されます。
  11. 手順 3 で[Interval (インターバル)] を選択した場合、[Output Interval (出力間隔)] ボックスで、時間、分、秒を適切に組み合わせて設定します。ボックスをブランクのままにしておくと、そのボックスの時間設定は 0 とみなされます。
  12. [Output Format (出力形式)] 領域で [Property List (プロパティ リスト)] をクリックし、テンプレート内の Helix Universal Proxy レジストリから変数を選択します。 セッション テンプレートをセット アップしている場合、1 つは Session Added Output Format (セッション追加時出力方式)、またもう 1 つは Session Deleted Output Format (セッション削除時出力方式) といったように、2 つの出力形式を指定できます。
    1. Property List (プロパティ リスト) ウィンドウで、テンプレートに含める変数に移動します。
    2. 変数をクリックすると、変数を識別する文字列が [Output Format (出力形式)] テキスト ボックスに表示されます。Helix Universal Proxy では、このテキスト ボックスに表示されている変数とまったく同じ順序で、変数の値がレポートされます。 変数の順番を変更するには、「切り取り」と「貼り付け」で、レポートに表示したい順に変数を並べ替えます。
    3. ヒント :[Output Format (出力形式)] テキスト ボックスに変数を追加すると、%proxy.ClientBW.Total% のようにパーセント記号で囲まれます。あとで変数の順序を変更する場合、パーセント記号を変数名の最初と最後に移動するようにしてください。

    4. オプションとして、ボイラープレート テキストを追加してレポートをフォーマットすることができます。 出力文字列のフォーマットには 2 つのタグを使用します。 出力を新しい行に移動するには、\n タグを使用してください。 ボックスする内に入力したキャリッジ リターンも、新しい行として認識されます。 タブを挿入するには、\t タグを使用します。

  13. [Apply (適用)] をクリックします。

サンプル テンプレート

このセクションでは、Helix Universal Proxy に同梱されている設定済みテンプレートの使用方法について説明します。 また、クライアント統計をログするための独自のテンプレートのセット アップ例も提供します。

あらかじめ設定済みのテンプレートを使用する

Helix Universal Proxy には、インターバル テンプレート、ウォッチ テンプレート、セッション テンプレートの 3 種類の、あらかじめ設定済みのテンプレートが同梱されています。 各テンプレートはコンソールに出力をレポートしますが、デフォルトでは無効になっています。 テンプレートを使用するには、そのテンプレートを有効にする必要があります。また、オプションとして、出力先やレポートする変数を変更してカスタマイズすることもできます。なお、設定済みのテンプレートを使わずに独自のテンプレートを作成してもかまいません。 以下のセクションでは、これらの設定済みテンプレートについて説明します。

Errors (エラー) テンプレート

あらかじめ設定済みのErrors (エラー) テンプレートは、監視タイプのテンプレートです。 Helix Universal Proxy にエラーが発生すると、Errors (エラー) テンプレートはコンソールにメッセージを表示します。 たとえば、出力をファイルに送信するように、このテンプレートを変更することができます。 また、エラー発生ごとにレポートする代わりに、最小および最大間隔を設定することも可能です。

Extended Logging (拡張ロギング) テンプレート

あらかじめ設定済みのExtended Logging (拡張ロギング) テンプレートは、セッション テンプレートの 1 例です。 このテンプレートでは、メディア プレーヤーや Helix Administrator のアクティビティといったクライアント セッションに関する情報を収集し、クライアント セッションの終了時にコンソールにレポートを発行します。 レポート出力の 1 行は以下のように表示されます。

09:55:28 127.0.0.1 RTSP GET real9video.rm RealMedia Player Version 6.0.9.1349 (win32)

Server Stats (サーバー ステータス) テンプレート

あらかじめ設定済みのServer Stats (サーバー ステータス) テンプレートは、インターバル テンプレートの 1 例です。 このテンプレートは、プロキシの基本的な統計情報を 1 時間ごとに出力コンソールに送信します。 オプションとして、レポートする変数の変更、情報のファイルへの書き込み、またボイラープレート テキストの変更が行えます。レポート出力は以下のように表示されます。

Server Stats (06/17/02 10:33:52)
Uptime: 1234274 seconds
CPU Percent Usage: 5
Players Connected: 32
Players Connected in the Last 10 Seconds: 2
Players Connected by Protocol: 0 PNA, 22 RTSP, 10 MMS, 0 HTTP (0 Cloaked)
Players Connected by Transport: 0 TCP, 32 UDP, 0 MCast
Total Subscribed Bandwidth Output: 9385984 bps
Total Actual Bandwidth Output: 9244432 bps
Average Bandwidth Output Per Player: 293312 bps
Memory Stats:14294824 Bytes In Use

クライアント統計ログを作成する

この例は、クリップを要求するメディア プレーヤーや Helix Administrator ページを要求するブラウザといった、各クライアント要求に関する情報をログする方法を説明するためのものです。 このサンプル テンプレートでは、各クライアントが切断したときも情報をログします。 テンプレートでは、以下の基本パラメータをセット アップします。

Template Name (テンプレート名) : 任意
Template Type (テンプレート タイプ) : セッション
Template Status (テンプレートの状態) : 有効
Template Outputs (テンプレート出力) : 任意
Watch Type (監視タイプ) : Client Session (クライアント セッション) [Client.Session]

接続統計のボイラープレートと変数

Session Added Output Format (セッション追加時出力形式)の場合、クライアントが接続したときに収集するレポート情報を定義します。 ボイラープレート テキストと、ポップアップ プロパティ リストから選択した変数を使って、レポートを作成してください。 \n はレポートに新しい行を追加するときに使用することに注意してください。 また、タブを挿入するには、\t を使用します。 以下に例を示します。

\n\n****CLIENT REQUEST****
Date and Time: %Date%, %Hour%:%Min%.%Sec%
**CLIENT INFORMATION**
Type: %Client.*.User-Agent%
Address: %Client.*.Addr%
Total Bandwidth: %Client.*.Bandwidth%
Preferred Language: %Client.*.Language%
**CLIP INFORMATION**
Requested URL: %Client.*.Session.*.PlayerRequestedURL%
Clip Size in Bytes:%Client.*.Session.*.FileSize%
Title:%Client.*.Session.*.FileHeader.Title%
Author:%Client.*.Session.*.FileHeader.Author%
Copyright: %Client.*.Session.*.FileHeader.Copyright%
Stream Count: %Client.*.Session.*.FileHeader.StreamCount%
**TRANSPORT INFORMATION**
Protocol:%Client.*.Protocol%
Port: %Client.*.Port%
UDP used (0=no, 1=yes):%Client.*.IsUDP%

切断統計のボイラープレートと変数

Session Deleted Output Format (セッション削除時出力形式)の場合、クライアントが切断したときに収集するレポート情報を定義します。 以下に例を示します。

\n\n****CLIENT DISCONNECT****
Date and Time: %Date%, %Hour%:%Min%.%Sec%
Type: %Client.*.User-Agent%
Address:%Client.*.Addr%
Requested URL: %Client.*.Session.*.PlayerRequestedURL%

レポート出力

テンプレートを定義して変更内容を適用すると、Helix Universal Proxy は、クライアントの接続または切断ごとに、カスタム ロギング情報を選択された出力先に送信します。 以下は、1 つのメディア プレーヤーが接続し、切断した場合の例です。

****CLIENT REQUEST****
Date and Time:06/19/02, 14:53.51
**CLIENT INFORMATION**
Type: RealMedia Player Version 6.0.9.1349 (win32)
Address:207.188.7.125
Total Bandwidth: 57600
Preferred Language: es, *
**CLIP INFORMATION**
Requested URL: rtsp://208.147.89.157:554/video1.rm
Clip Size in Bytes:2479645
Title: Introductory Video
Author:RealNetworks, Inc.
Copyright:©2002 RealNetworks, Inc.
Stream Count:1
**TRANSPORT INFORMATION**
Protocol:RTSP
Port: 7180
UDP used (0=no, 1=yes): 1

****CLIENT DISCONNECT****
Date and Time:06/19/02, 14:59.15
Type: RealMedia Player Version 6.0.9.1349 (win32)
Address:207.188.7.125
Requested URL: rtsp://208.147.89.157:554/video1.rm


RealNetworks, Inc. © 2002 RealNetworks, Inc. All rights reserved.
詳細については、RealNetworks を参照してください。
画面左側に目次フレームが表示されない場合は、ここをクリックしてください。
戻る 次へ