構成のログ記録
構成ログは、サイト構成の変更と管理アクティビティをデータベースに記録する機能です。この機能はデフォルトで有効になっています。記録されたコンテンツは、次の目的で使用できます。
- 構成変更後、問題の診断とトラブルシューティングを行います。ログは追跡記録を提供します。
- 変更管理を支援し、構成を追跡します。
- 管理アクティビティを報告します。
Citrix Studioから、構成ログ設定を行い、構成ログを表示し、HTMLおよびCSVレポートを生成できます。構成ログの表示は、日付範囲と全文検索結果でフィルタリングできます。強制ログが有効になっている場合、ログに記録できない構成変更は行われません。適切な権限があれば、構成ログからエントリを削除できます。構成ログ機能を使用してログコンテンツを編集することはできません。
構成ログは、PowerShell SDKと構成ログサービスを使用します。構成ログサービスは、サイト内のすべてのControllerで実行されます。いずれかのControllerで障害が発生した場合、別のControllerのサービスが自動的にログ要求を処理します。
デフォルトでは、構成ログ機能は有効になっており、サイト作成時に作成されるデータベース(サイト構成データベース)を使用します。データベースの別の場所を指定できます。構成ログデータベースは、サイト構成データベースと同じ高可用性機能をサポートします。
構成ログへのアクセスは、委任管理によって、「ログ設定の編集」および「構成ログの表示」権限を使用して制御されます。
構成ログは作成時にローカライズされます。たとえば、英語で作成されたログは、リーダーのロケールに関係なく、英語で読み取られます。
ログに記録される内容
Studio、Director、およびPowerShellスクリプトから開始された構成変更と管理アクティビティがログに記録されます。ログに記録される構成変更の例には、次のもの(作成、編集、削除、割り当て)の操作が含まれます。
- マシンカタログ
- デリバリーグループ(電源管理設定の変更を含む)
- 管理者ロールとスコープ
- ホストリソースと接続
- スタジオを使用した Citrix ポリシー
ログに記録される管理変更の例は次のとおりです。
- 仮想マシンまたはユーザーデスクトップの電源管理
- Studio または Director がユーザーにメッセージを送信する
次の操作はログに記録されません。
- 仮想マシンのプール管理による電源投入などの自律的な操作。
- グループポリシー管理コンソール (GPMC) を介して実装されたポリシーアクション。これらのアクションのログを表示するには、Microsoft ツールを使用します。
- レジストリ、データベースへの直接アクセス、または Studio、Director、PowerShell 以外のソースを介して行われた変更。
- 展開が初期化されると、最初の構成ログサービスインスタンスが構成サービスに登録されたときに構成ログが利用可能になります。したがって、構成の初期段階はログに記録されません(たとえば、データベーススキーマが取得および適用されたとき、ハイパーバイザーが初期化されたときなど)。
構成ログの管理
デフォルトでは、構成ログはサイト作成時に作成されるデータベース(サイト構成データベースとも呼ばれます)を使用します。Citrix は、次の理由により、構成ログデータベース(および監視データベース)に別の場所を使用することを推奨します。
- 構成ログデータベースのバックアップ戦略は、サイト構成データベースのバックアップ戦略とは異なる可能性があります。
- 構成ログ(および監視サービス)のために収集されるデータ量によって、サイト構成データベースで利用可能な領域に悪影響が及ぶ可能性があります。
- これにより、3つのデータベースの単一障害点が分割されます。
構成ログをサポートしない製品エディションには、Studioにログノードがありません。
構成ログと強制ログの有効化と無効化
デフォルトでは、構成ログは有効になっており、強制ログは無効になっています。
- Web Studioにサインインし、左ペインでログを選択します。
- アクションバーで設定を選択します。構成ログダイアログボックスには、データベース情報が含まれており、構成ログと強制ログが有効か無効かを示します。
-
目的のアクションを選択します。
構成ログを有効にするには、有効を選択します。これはデフォルト設定です。データベースに書き込めない場合、ログ情報は破棄されますが、操作は続行されます。
構成ログを無効にするには、無効を選択します。以前にログが有効になっていた場合、既存のログはPowerShell SDKで読み取り可能です。
強制ログを有効にするには、データベースが利用できない場合にサイト構成の変更を防止するを選択します。通常ログに記録される構成変更または管理アクティビティは、構成ログデータベースに書き込める場合にのみ許可されます。強制ログは、構成ログが有効になっている場合(有効が選択されている場合)にのみ有効にできます。構成ログサービスが失敗し、高可用性が使用されていない場合、強制ログが適用されます。そのような場合、通常ログに記録される操作は実行されません。
強制ログを無効にするには、データベースが利用できない場合にサイト構成の変更を許可するを選択します。構成ログデータベースにアクセスできない場合でも、構成変更および管理アクティビティは許可されます。これはデフォルト設定です。
構成ログデータベースの場所を変更する
強制ログが有効になっている場合、データベースの場所を変更することはできません。場所の変更には、ログに記録できない短い切断間隔が含まれるためです。
- サポートされているSQL Serverバージョンを使用して、データベースサーバーを作成します。
- Web Studioにサインインし、左ペインでログを選択します。
- アクションバーで設定を選択します。
- 「ログ設定」ダイアログボックスで、「ログデータベースの変更」を選択します。
- 「ログデータベースの変更」ダイアログボックスで、新しいデータベースサーバーを含むサーバーの場所を指定します。有効な形式については、「データベースアドレス形式」を参照してください。
- Studioでデータベースを作成するには、「OK」をクリックします。プロンプトが表示されたら「OK」をクリックすると、データベースが自動的に作成されます。Studioは、現在のStudioユーザーの資格情報を使用してデータベースへのアクセスを試行します。失敗した場合は、データベースユーザーの資格情報の入力を求められます。その後、Studioはデータベーススキーマをデータベースにアップロードします。(資格情報はデータベース作成中のみ保持されます。)
- データベースを手動で作成するには、「データベーススクリプトの生成」をクリックします。生成されたスクリプトには、データベースを手動で作成するための手順が含まれています。スキーマをアップロードする前に、データベースが空であり、少なくとも1人のユーザーがデータベースにアクセスして変更する権限を持っていることを確認してください。
以前のデータベースの構成ログデータは、新しいデータベースにはインポートされません。ログを取得する際に、両方のデータベースからログを集約することはできません。新しい構成ログデータベースの最初のログエントリは、データベースの変更が発生したことを示しますが、以前のデータベースを特定するものではありません。
構成ログコンテンツの表示
構成変更や管理アクティビティを開始すると、StudioとDirectorによって作成された高レベル操作がStudioの上部中央ペインに一覧表示されます。高レベル操作は、1つ以上のサービスおよびSDK呼び出し(低レベル操作)をもたらします。上部ペインで高レベル操作を選択すると、下部ペインに低レベル操作が表示されます。
操作が完了する前に失敗した場合、ログ操作がデータベースで完了しない可能性があります。たとえば、開始レコードに対応する停止レコードがない場合があります。このような場合、ログには情報が不足していることが示されます。時間範囲に基づいてログを表示すると、ログ内のデータが条件に一致する場合、不完全なログが表示されます。たとえば、過去5日間のすべてのログが要求され、過去5日間に開始時刻があるが終了時刻がないログが存在する場合、それは含まれます。
PowerShellコマンドレットを呼び出すスクリプトを使用する場合、親の高レベル操作を指定せずに低レベル操作を作成すると、構成ログは代替の高レベル操作を作成します。
構成ログコンテンツを表示するには、Studioナビゲーションペインで「ログ」を選択します。デフォルトでは、中央ペインにログコンテンツが日付ごとに区切られ、時系列順(最新のエントリが最初)に表示されます。次のことができます。
- 列ヘッダーで表示を並べ替えます。
- 日付間隔を指定するか、「検索」ボックスにテキストを入力して表示をフィルターします。検索を使用した後に標準表示に戻るには、「検索」ボックスのテキストをクリアします。
- テーブルの右上隅にある「表示する列」アイコンを選択して、表示する列を選択します。たとえば、管理者がWeb Studioにアクセスするために使用するIPアドレスを表示するには、アイコンをクリックして「クライアントIP」列を追加します。
レポートの生成
構成ログデータを含むCSVおよびHTMLレポートを生成できます。
- CSVレポートには、指定された時間間隔のすべてのログデータが含まれています。データベース内の階層データは、単一のCSVテーブルにフラット化されます。ファイル内のデータに優先順位はありません。フォーマットは使用されず、人間が読み取れることは想定されていません。ファイル(MyReportという名前)には、普遍的に利用可能な形式でデータが含まれています。CSVファイルは、データのアーカイブや、Microsoft Excelなどのレポート作成ツールやデータ操作ツールのデータソースとしてよく使用されます。
- HTMLレポートは、指定された時間間隔のログデータを人間が読み取れる形式で提供します。変更を確認するための構造化されたナビゲート可能なビューを提供します。HTMLレポートは、SummaryとDetailsという2つのファイルで構成されます。Summaryには、各操作がいつ、誰によって行われ、その結果はどうだったかなど、高レベルの操作が一覧表示されます。各操作の横にある詳細リンクをクリックすると、Detailsファイル内の低レベルの操作に移動し、追加情報が提供されます。
構成ログレポートを生成するには、Studioナビゲーションペインでログを選択し、アクションバーでカスタムレポートの作成を選択します。
- レポートの日付範囲を選択します。
- レポート形式(CSV、HTML、または両方)を選択します。
- レポートを保存する場所を参照します。
構成ログコンテンツの削除
構成ログを削除するには、特定の委任管理権限とSQL Serverデータベース権限が必要です。
-
委任管理: 展開構成の読み取りを許可する委任管理の役割が必要です。フル管理者役割にはこの権限があります。カスタム役割には、その他の権限カテゴリで読み取り専用または管理が選択されている必要があります。
構成ログデータを削除する前にバックアップを作成するには、カスタム役割にログ権限カテゴリで読み取り専用または管理が選択されている必要もあります。
-
SQL Serverデータベース: データベースからレコードを削除する権限を持つSQL Serverログインが必要です。これを行うには2つの方法があります。
-
データベースサーバー上で任意のアクティビティを実行できるsysadminサーバー役割を持つSQL Serverデータベースログインを使用します。あるいは、
serveradminまたはsetupadminサーバー役割を使用すると、削除操作を実行できます。 -
展開でより高いセキュリティが必要な場合は、データベースからレコードを削除する権限を持つデータベースユーザーにマッピングされた、sysadmin以外のデータベースログインを使用します。
- SQL Server マネジメントスタジオで、「sysadmin」以外のサーバーロールが付与された SQL サーバー ログインを作成します。
- ログインをデータベース内のユーザーにマッピングします。SQL Serverは、ログインと同じ名前でデータベース内にユーザーを自動的に作成します。
- データベースロールメンバーシップで、データベースユーザーのロールメンバーを少なくとも1つ指定します:
ConfigurationLoggingSchema_ROLEまたはdbowner。
詳細については、SQL Server Management Studioのドキュメントを参照してください。
-
構成ログを削除するには:
- Web Studioにサインインし、左ペインでログを選択します。
- アクションバーでログの削除を選択します。
- ログを削除する前にバックアップを作成するかどうかを尋ねられます。バックアップを作成することを選択した場合、バックアップアーカイブが保存される場所を参照します。バックアップはCSVファイルとして作成されます。
構成ログがクリアされた後、ログの削除は空のログに最初に投稿されるアクティビティです。そのエントリには、誰がいつログを削除したかに関する詳細が記載されています。
APIならびにPowerShellログの表示
現在のセッション中に作成されたAPIリクエストを監視するには、APIタブをクリックします。APIログは、Web Studioからサインアウトするとクリアされます。
その日に行ったUIアクションに対応するPowerShellコマンドを表示するには、PowerShellタブをクリックします。
メタデータを構成ログに関連付ける
MetadataMap と呼ばれる name-value ペアをログレコードに関連付けることで、構成ログにメタデータを添付できます。
注:
- メタデータは、高レベルの操作オブジェクトにのみ添付できます。
- メタデータは、実行時に既存のレコードに関連付けられます。
メタデータを設定する
PowerShellコマンド Set-LogHighLevelOperationMetadata を実行して、ログレコードを MetadataMap に関連付けます。
Set-LogHighLevelOperationMetadata は次のパラメーターを受け取ります。
- Id: 上位レベルの操作のID。
-
InputObject: メタデータを追加する上位レベルの操作。これは、上位レベルの操作オブジェクトまたはオブジェクトのリストがPowerShellコマンドに渡される
Idパラメーターの代替手段です。 -
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: メタデータを追加する上位レベルの操作。これは、上位レベルの操作オブジェクトまたはオブジェクトのリストがPowerShellコマンドに渡される
Idパラメーターの代替です。 - Name: 削除するメタデータのプロパティ名。指定されたオブジェクトのすべてのメタデータを削除するには、$nullに設定します。
- Map: プロパティの(名前、値)ペアの辞書。これは、ハッシュテーブル (@{“name1” = “val1”; “name2” = “val2”} で作成) または文字列辞書 (new-object “System.Collections.Generic.Dictionary[String, String]” で作成) のいずれかです。マップ内のキーと名前が一致するプロパティが削除されます。