Citrix Virtual Apps and Desktops

構成ログ

構成ログは、管理者によるサイト構成の変更やそのほかの管理操作をデータベースに記録する機能です。 この機能はデフォルトで有効にされています。 このログは、以下の目的で使用できます:

  • 構成変更の履歴を確認して問題の診断およびトラブルシューティングを行う。 ログではブレッドクラムが示されます。
  • 変更管理の補助および構成の追跡を行う。
  • 管理アクティビティのレポートを生成する。

Citrix Studioでは、構成ログの基本設定を変更したり、構成ログを表示したり、HTMLおよびCSV形式のレポートを生成したりできます。 日範囲および全文検索の結果により構成ログ表示をフィルターできます。 必須ログ機能を有効にすると、ログが記録可能になるまで管理者による構成の変更が禁止されます。 適切な権限を持つ管理者は、構成ログのエントリを削除できます。 構成ログ機能では、ログの内容を編集することはできません。

構成ログでは、PowerShell SDKとConfiguration Logging Serviceが使用されます。 構成ログサービスは、サイト内のすべてのControllerで実行されます。 任意のControllerに障害が発生しても、ほかのControllerが自動的にログ要求を処理します。

デフォルトでは、構成ログ機能は有効で、サイト作成時に作成されたデータベース(サイト構成データベース)が使用されます。 データベースには別の場所を指定できます。 構成ログデータベースでは、サイト構成データベースと同じ高可用性機能がサポートされます。

構成ログへのアクセスは、[ログ基本設定を編集]権限および[構成ログを表示]権限による委任管理で制御されます。

構成ログの言語には、作成時のロケールが適用されます。 たとえば、英語で作成されたログは、管理者側のロケールには関係なく英語で表示されます。

ログの内容

構成ログには、Studio、Director、およびPowerShellスクリプトから開始された構成の変更および管理アクティビティのログが記録されます。 以下の項目に対する作成、編集、削除などの操作が構成ログに記録されます。

  • マシンカタログ
  • デリバリーグループ(電源管理設定の変更を含む)
  • 管理者の役割とスコープ
  • ホストのリソースおよび接続
  • Studioで構成するCitrixポリシー

ログが記録される管理変更の例には次のものがあります:

  • 仮想マシンまたはユーザーのデスクトップの電源管理
  • StudioまたはDirectorからユーザーへのメッセージ送信

次の操作はログに記録されません。

  • 仮想マシンのプール管理電源オンなどの自動操作。
  • グループポリシー管理コンソール(GPMC)でのポリシー操作。これらの操作のログはMicrosoftのツールを使って表示できます。
  • レジストリによる変更、データベースの直接的な変更、およびStudio、Director、PowerShell以外での変更。
  • 展開の初期化後、最初のConfiguration Logging ServiceインスタンスがConfiguration Serviceに登録されたときに構成ログが有効になります。 このため、構成の初期のアクティビティが記録されない場合があります(ハイパーバイザーの初期化時にデータベーススキーマが取得および適用される場合など)。

構成ログの管理

デフォルトでは、サイトの作成時に作成されたデータベース(サイト構成データベース)に構成ログが記録されます。 Citrixでは、以下の理由により、構成ログデータベース(および監視データベース)には別の場所を使用することを推奨しています:

  • 構成ログデータベースのバックアップ方針が、サイト構成データベースのバックアップ方針と異なる場合があります。
  • 構成ログ(およびMonitoring Service)で収集されるデータの量によっては、サイト構成データベース用の領域が不足する場合があります。
  • データベースを分散させると、単一ポイント障害の問題が解消されます。

構成ログをサポートしない製品エディションでは、Studioに[ログ]ノードが表示されません。

構成ログと必須ログの有効化および無効化

デフォルトでは、構成ログ機能は有効になっており、必須ログ機能は無効になっています。

  1. Web Studioにサインインし、左側のペインで [ログ] を選択します。
  2. 操作バーの [基本設定] を選択します。 [ログ設定]ダイアログボックスが開き、データベースに関する情報と、構成ログおよび必須ログ機能の有効/無効が表示されます。
  3. 望ましい操作を選択します:

    構成ログを有効にするには、[有効] をクリックします。 This is the default setting. データベースに書き込みができない場合、ログ情報は破棄されますが構成内容は正しく反映されます。

    構成ログを無効にするには、[無効] をクリックします。 それまでに記録されたログの内容は、PowerShell SDKで読み取ることができます。

    必須ログ機能を有効にするには、[データベースが切断されている場合の構成変更を禁止する]をクリックします。 通常、ログに記録される構成の変更や管理作業は、構成ログデータベースへの書き込みが可能になるまで許可されません。 必須ログ機能は、構成ログが有効な場合([有効] が選択されている場合)にのみ有効にできます。 Configuration Logging Serviceに障害が発生して、しかも高可用性が無効な場合、必須ログが有効になります。 このような場合、構成ログデータベースに記録されるようなタスクは実行できなくなります。

    必須ログ機能を無効にするには、[データベースが切断されていても構成変更を許可する] をクリックします。 構成ログデータベースにアクセスできない場合でも、管理者は構成の変更やそのほかの管理タスクを実行できます(管理タスクが優先されます)。 This is the default setting.

構成ログデータベースの場所の変更

必須ログ機能が有効になっている場合、データベースの場所を変更することはできません。データベースの変更時に短時間データベースから切断されるためです。

  1. サポートされるバージョンのSQL Serverを使用してデータベースサーバーを作成します。
  2. Web Studioにサインインし、左側のペインで [ログ] を選択します。
  3. 操作バーの [基本設定] を選択します。
  4. [ログ設定]ダイアログボックスで [ログデータベースの変更] をクリックします。
  5. [ログデータベースの変更]ダイアログボックスで、新しいデータベースサーバーが入っているサーバーの場所を指定します。 有効な形式については、「データベースのアドレス形式」を参照してください。
  6. Studioで自動的にデータベースを作成する場合は、[OK] をクリックします。 確認のメッセージが表示され、[OK] をクリックするとデータベースが自動的に作成されます。 現在のStudioユーザーの資格情報を使ってデータベースへのアクセスが試行されます。 それが失敗すると、データベースユーザーの資格情報の入力を求められます。 アクセスに成功すると、Studioによりデータベーススキーマがデータベースにアップロードされます (資格情報はデータベース作成時のみ保持されます)。
  7. データベースを手動で作成する場合は、[データベーススクリプトの生成] をクリックします。 生成されるスクリプトにはデータベースを手動で作成するためのコマンドが記述されます。 スキーマをアップロードする前に、データベースが空であること、および1人以上のユーザーがそのデータベースにアクセスでき、変更できることを確認してください。

変更前のデータベース内の構成ログデータは変更後のデータベースにインポートされません。 構成ログデータベースの場所を変更する場合、変更前のデータベースの内容は集約されなくなります。 変更後の構成ログデータベースの最初にデータベースの変更を示すログが記録されますが、変更前のデータベースの場所は記録されません。

構成ログの内容の表示

構成ログの内容を表示するには、左側のペインで[ログ]を選択し、[イベント]タブを選択します。

デフォルトでは、イベントログは管理者名で一覧表示されます。 必要に応じて次のタスクを実行できます:

  • ログの詳細を表示する。高レベル操作により1つまたは複数のサービスおよびSDKの呼び出しが実行されます。これは、低レベル操作です。 ペインの上部で高レベル操作を選択すると、ペインの下部に低レベル操作が表示されます。
  • 表示を並べ替える。列ヘッダーをクリックして表示を並べ替えます。
  • ログをフィルタリングする。日にちの間隔やカスタム期間などのフィルター条件を設定するか、検索ボックスにメインタスク名の全部または一部を入力して表示を絞り込みます。 検索を使用した後で通常のログ表示に戻すには、[検索] ボックスの文字列をクリアします。
  • ログをエクスポートする。選択したログまたはすべてのログをCSVファイルにエクスポートして、アーカイブまたは詳細な分析を行います。
  • 列をカスタマイズする。クライアントIPやラベルなどのデフォルト以外の列を追加して、必要に応じて表示を調整します。
  • ラベルを管理する。イベントログのラベルを追加、編集、削除して、ログの整理と追跡を強化します。

表示特性:

  • 操作が完了する前に失敗すると、データベースでログ操作が完結しない場合があります。 たとえば、開始レコードに対応する停止レコードがないなどです。 このような場合、情報不足であることがログに示されます。 時間の範囲を指定してログを表示する場合、データが条件に合うと未完結のログが表示される場合があります。

    たとえば、直近5日間のログを表示する場合、その5日間に開始時間のみが含まれ、終了時間が含まれていない場合も、その操作のログが表示されます。

  • PowerShellコマンドレットを呼び出すスクリプトを使う場合、親の高レベル操作を指定せずに低レベル操作を作成すると、構成ログにより代わりの高レベル操作が作成されます。

レポートの生成

構成ログデータをCSVおよびHTML形式のレポートとして書き出すことができます。

  • CSV形式のレポートには、指定した期間のすべてのログデータが書き込まれます。 データベースの階層データが単一のCSVテーブルとして出力されます。 データの特定の要素に基づいて並べ替えられたものではありません。 書式も適用されず、読み取りやすさについても考慮されていません。 レポートファイル(MyReport)には、汎用的な書式でデータが書き出されます。 CSVファイルはデータのアーカイブ化や、レポート機能またはMicrosoft Excelなどデータ操作ツールのデータソースとして使用されます。
  • HTML形式のレポートには、指定した期間のログデータが判読可能な形式で書き込まれます。 変更内容の確認が容易な、構造的でナビゲーション可能なレポートです。 HTMLレポートでは、概要(Summary)および詳細(Details)の2つのファイルが生成されます。 概要レポートには、各操作の実行日時、操作主、および操作結果など、より高レベルな情報が一覧で表示されます。 各操作項目の横にある [詳細] リンクをクリックすると詳細ファイルが開き、より低いレベルの操作に関する情報を参照できます。

構成ログレポートを生成するには、Studioのナビゲーションペインで [ログ] を選択し、操作バーの [カスタムレポートの作成] を選択します。

  • レポートの日付の範囲を選択します。
  • レポート形式として、[CSVファイル]、[HTML]、または[両方]を選択します。
  • レポートを保存する場所を参照します。

構成ログの内容の削除

構成ログを削除するには、特定の委任管理権限およびSQL Serverデータベース権限が必要です。

  • 委任管理: 展開構成を読み取ることができる委任管理の役割が必要です。 すべての管理権限を実行できる管理者には、この権限があります。 カスタムの役割では、[そのほかの権限]カテゴリで[読み取り専用]または[管理]権限を選択する必要があります。

    構成ログデータを削除する前にバックアップを作成するには、[ログ]カテゴリで[読み取り専用]または[管理]権限を選択する必要もあります。

  • SQL Serverデータベース: データベースからレコードを削除するための権限を持つSQL Serverのログインアカウントが必要です。 次のいずれかの方法を使用します:

    • データベースに対するすべての権限を持つsysadminサーバーロールを持つSQL Serverデータベースログインを使用します。 また、serveradminまたはsetupadminサーバーロールでも削除操作を実行できます。

    • 高度なセキュリティが必要な環境では、データベースからレコードを削除する権限を持つデータベースユーザーにマップされた非sysadminデータベースログインを使用します。

      1. SQL Server Management Studioで、sysadmin以外のサーバーロールを持つSQL Serverログインを作成します。
      2. 作成したログインをデータベースのユーザーにマップします。 SQL Serverにより、ログインと同じ名前のユーザーがデータベースに作成されます。
      3. データベースロールのメンバーシップとして、このデータベースユーザーにConfigurationLoggingSchema_ROLEまたはdb_ownerのロールを指定します。

      詳しくは、SQL Server Management Studioのドキュメントを参照してください。

構成ログを削除するには、以下の手順に従います:

  1. Web Studioにサインインし、左側のペインで [ログ] を選択します。
  2. 操作バーの [ログの削除] を選択します。
  3. 削除する前にログのバックアップを作成するかどうかを確認するメッセージが表示されます。 バックアップを作成する場合は、バックアップを保存する場所を参照します。 バックアップはCSVファイルとして作成されます。

構成ログを削除すると、その削除操作が最初のエントリとしてログに記録されます。 このエントリには、いつだれがログを削除したのかが記述されます。

APIとPowerShellのログを表示する

現在のセッション中に行われたAPI要求を監視するには、[API] タブをクリックします。 Web Studioからサインアウトすると、APIログはクリアされます。

その日に実行したUI操作に対応するPowerShellコマンドを表示するには、PowerShellタブをクリックします。

メタデータを構成ログに関連付ける

MetadataMapという名前のname-valueペアをログレコードに関連付けることにより、構成ログにメタデータを添付できます。

注:

  • メタデータは高レベルの操作オブジェクトにのみ添付できます。
  • メタデータは、実行時に既存のレコードに関連付けられます。

メタデータを設定する

PowerShell コマンドSet-LogHighLevelOperationMetadataを実行して、ログレコードをMetadataMapに関連付けます。 Set-LogHighLevelOperationMetadataは以下のパラメーターを使用します:

  • Id:高レベルの操作のID。
  • InputObject:メタデータを追加する高レベルの操作。 これは、Idパラメーターの代わりの方法で、高レベルの操作オブジェクトまたはオブジェクトの一覧がPowerShellコマンドに渡されます。
  • Name:追加されるメタデータのプロパティ名。 プロパティは、指定された高レベルの操作に対して一意である必要があります。 プロパティには次の文字を含めることはできません:()\/;:#.*?=<> []”‘。
  • Value:プロパティの値。
  • Map:プロパティの(名前、値)ペアのディクショナリ。 これは、-Nameおよび-Valueパラメーターを使用してメタデータを設定する代わりの方法です。

たとえば、ID 40のすべての高レベルのログレコードにメタデータを添付するには、次のPowerShellコマンドを実行します:

Get-LogHighLevelOperation – Id 40 | Set-LogHighLevelOperationMetadata -Name A -Value B

ユーザーabc@example.comの高レベルのレコードにメタデータを添付するには、次のPowerShellコマンドを実行します:

Get-LogHighLevelOperation – User `abc@example.com` | Set-LogHighLevelOperationMetadata -Name C -Value D

メタデータを使用して取得する

次のPowerShellコマンドを実行して、関連するメタデータを使用してログレコードを取得します:

  • キーと値で検索:

    Get-LogHighLevelOperation -Metadata "Key:Value"

  • 値と任意のキーで検索:

    Get-LogHighLevelOperation -Metadata "*:Value"

  • キーと任意の値で検索:

    Get-LogHighLevelOperation -Metadata "Key:*"

メタデータを削除する

PowerShellコマンドRemove-LogHighLevelOperationMetadataを実行して、関連するメタデータを削除します。 Remove-LogHighLevelOperationMetadataは以下のパラメーターを使用します:

  • Id:高レベルの操作のID。
  • InputObject:メタデータを追加する高レベルの操作。 これは、「Id」パラメーターの代わりの方法で、高レベルの操作オブジェクトまたはオブジェクトの一覧がPowerShellコマンドに渡されます。
  • Name:削除するメタデータのプロパティ名。 指定したオブジェクトのすべてのメタデータを削除するには、$nullに設定します。
  • Map:プロパティの(名前、値)ペアのディクショナリ。 これは、ハッシュテーブル(@{“name1” = “val1”; “name2” = “val2”} で作成)または文字列ディクショナリ(new-object “System.Collections.Generic.Dictionary[String, String]”で作成)のいずれかです。 名前がマップ内のキーと一致するプロパティは削除されます。
構成ログ