テックペーパー:Citrix Director-PowerShell によるアラートと通知の管理と設定
Citrix Directorでは、設定したしきい値を超えると警告するポリシーと条件を構成できます。この機能はXenDesktop 7.7で初めて導入され、現在ではすべてのバージョンのCitrix Virtual Apps and Desktops で使用できます。この記事では、PowerShellコマンドレットを使用してプロアクティブなアラートと通知を構成する方法について説明します。
通知サブスクリプションの構成
あなたがCitrix Virtual Apps and Desktops の管理者で、導入環境の使用方法を理解しようとしているとしましょう。同時セッション数がしきい値を超えた場合は、事前に警告を受ける必要があります。 アラートと通知を設定する前に、通知サブスクリプションを設定する必要があります。このためには、最初に SMTP Exchange サーバーを追加する必要があります (複数のサーバーを構成しないでください)。このサーバーは、警告が発生したときに後で電子メールを送信するために使用できます。
[Set-MonitorNotificationEmailServerConfiguration
] (https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/Monitor/Set-MonitorNotificationEmailServerConfiguration/) POSH コマンドレットを使用すると、SMTP サーバーを構成できます。
これがサンプルスクリプトです。
asnp Citrix.Monitor.*
PS C:\Users\administrator> Set-MonitorNotificationEmailServerConfiguration -ProtocolType SMTP -ServerName NameOfTheSMTPServerOrIPAddress -PortNumber PortNumber -SenderEmailAddress EmailAddressFromWhichDirectorShouldSendAnEmailWhenThereIsAnAlert -RequiresAuthentication 0
ProtocolType : SMTP
ServerName : NameOfTheSMTPServerOrIPAddress
PortNumber : PortNumber
SenderEmailAddress : EmailAddressFromWhichDirectorShouldSendAnEmailWhenThereIsAnAlert
RequiresAuthentication : False
Credential :
PS C:\Users\administrator> Set-MonitorNotificationEmailServerConfiguration -ProtocolType SMTP -ServerName NameOfTheSMTPServerOrIPAddress -PortNumber PortNumber -SenderEmailAddress EmailAddressFromWhichDirectorShouldSendAnEmailWhenThereIsAnAlert -RequiresAuthentication 1 -Credential “SenderEmailAddressUserNameAsPerYourExchangeServerOrAD”
ProtocolType : SMTP
ServerName : NameOfTheSMTPServerOrIPAddress
PortNumber : PortNumber
SenderEmailAddress : EmailAddressFromWhichDirectorShouldSendAnEmailWhenThereIsAnAlert
RequiresAuthentication : False
Credential : System.Management.Automation.PSCredential
<!--NeedCopy-->
SMTP サーバーが認証を必要としない場合は、 -RequiresAuthentication
フラグを false に設定できます。
PS C:\Users\administrator> Set-MonitorNotificationEmailServerConfiguration -ProtocolType SMTP -ServerName NameOfTheSMTPServerOrIPAddress -PortNumber PortNumber -SenderEmailAddress EmailAddressFromWhichDirectorShouldSendAnEmailWhenThereIsAnAlert -RequiresAuthentication 0
ProtocolType : SMTP
ServerName : NameOfTheSMTPServerOrIPAddress
PortNumber : PortNumber
SenderEmailAddress : EmailAddressFromWhichDirectorShouldSendAnEmailWhenThereIsAnAlert
RequiresAuthentication : False
Credential :
<!--NeedCopy-->
Director は、SMTP、SMTP-SSL、SMTP-TLSなど、SMTPサーバーに接続するための複数のプロトコルもサポートしています。
注:SMTP 設定は削除できませんが、編集して値を変更することはできます。
サンプルスクリプト
以下は、アラートルール、パラメータ、条件、および電子メール受信者を含むポリシーの作成に役立つサンプルスクリプトです。スクリプトの各部分を分割して、より理解を深めます。
asnp Citrix.Monitor.*
# Add Parameters
$timeSpan = New-TimeSpan -Seconds 30
$alertThreshold = 1
$alarmThreshold = 2
# Add Target UID’s
$targetIds = @()
$targetIds += “0e406be1-1647-4a97-845c-7601ae1d8883”
# Add email addresses
$emailaddress = @()
$emailaddress += “acme@citrix.com”
# Create new policy
$policy = New-MonitorNotificationPolicy -Name “MyTestPolicy” -Description “Policy created to test new cmdlets” -Enabled $true
Add-MonitorNotificationPolicyCondition -Uid $policy.Uid -ConditionType SessionsConcurrentCount -AlertThreshold $alertThreshold -AlarmThreshold $alarmThreshold -AlertRenotification $timeSpan -AlarmRenotification $timeSpan
Add-MonitorNotificationPolicyCondition -Uid $policy.Uid -ConditionType SessionsPeakconnectedCount -AlertThreshold $alertThreshold -AlarmThreshold $alarmThreshold -AlertRenotification $timeSpan -AlarmRenotification $timeSpan
Add-MonitorNotificationPolicyTargets -Uid $policy.Uid -Scope “My Test Targets” -TargetKind DesktopGroup -TargetIds $targetIds
Add-MonitorNotificationPolicyEmailAddresses -Uid $policy.Uid -EmailAddresses $emailaddress -EmailCultureName “en-US”
$policy = Get-MonitorNotificationPolicy -Uid $policy.Uid
$policy
<!--NeedCopy-->
受信者の電子メールアドレスの設定
SMTP Exchange サーバーの設定が完了したので、次は電子メール受信者を設定する必要があります。
Add-MonitorNotificationPolicyEmailAddresses コマンドレットを使用すると、電子メール通知の受信者を指定し、ロケールを選択できます。
$emailaddress = @()
$emailaddress += “acme@citrix.com”
Add-MonitorNotificationPolicyEmailAddresses -Uid $policy.Uid -EmailAddresses $emailaddress -EmailCultureName “en-US”
ターゲットとターゲット値の構成
次に、ポリシーを作成します。最初に行うことは、ターゲットを指定することです。ターゲットは、アラートルールが適用されるエンティティに過ぎません。たとえば、ルールが「デリバリーグループxyz内のすべてのマシンでピーク接続セッションが100に達したら警告する」の場合、「デリバリーグループxyz」がターゲットになります。
ターゲットとターゲット値を指定するには、次のコマンドレットを使用する必要があります:
Add-MonitorNotificationPolicyTargets
たとえば、RDSマシンのデリバリーグループにセッションの同時アラートを設定するとします。DG 固有識別子を取得し、それを Add-MonitorNotificationPolicyTargets コマンドレットの値として指定する必要があります。
どうやって入手できますか? get-brokerDesktopGroup
コマンドレットを使用すると、UUID の下に一意の識別子が表示されます。
これで、アラートルールをターゲットにするデリバリーグループの目標値を設定できました。
次に、ターゲットとターゲットタイプを指定する必要があります。ここでは、Add-MonitorNotificationPolicyTargets
を使用してターゲットのタイプをRDSWorker
として指定できます 。
$targetIds = @()
$targetIds += “0e406be1-1647-4a97-845c-7601ae1d8883”
Add-MonitorNotificationPolicyTargets -Uid $policy.Uid -Scope “My Test Targets” -TargetKind DesktopGroup -TargetIds $targetIds
<!--NeedCopy-->
ターゲットタイプは、RDSWorker、サイト、デスクトップグループ (デリバリーグループ)、またはユーザーとして指定できます。
一般に、アラートポリシーは 3 つの異なるスコープを対象とする必要があります。
-
サイト — サイト全体のすべてのマシンに適用され、アラートのしきい値は含まれるすべてのマシンの合計値に適用されます。
-
デスクトップグループ — デリバリーグループ全体のすべてのマシンに適用され、アラートのしきい値は含まれるすべてのマシンの合計値に適用されます。
-
RDS Worker — デリバリーグループのすべてのマシンに適用されますが、アラートのしきい値は個々のマシンに適用されます。
-
ユーザー-特定のユーザーに適用され、ユーザーごとにアラートのしきい値が評価されます。
条件とパラメータの設定
この例では、セッション数を監視するためのアラートルールポリシーを設定したかったのです。 Add-MonitorNotificationPolicyCondition コマンドレットを使用してポリシーを設定できる条件は他にもあります 。ConditionType パラメーターに適切な値を渡すことで、コマンドレットで特定のアラートの種類と条件を指定できます。
| 条件タイプ値 | アラートの種類と条件を確認しました | | — | — | | セッションピーク接続数 | ピーク接続セッション-特定のデリバリーグループのサイト全体の瞬時(1分間のサンプル)接続セッション数が、構成されたカウントしきい値を超えたときに検出されます。 | | セッションピークの切断回数 | ピーク切断セッション-特定のデリバリーグループのサイト全体の瞬時(1分間のサンプル)のピーク切断セッション数が、構成されたカウントしきい値を超えたときに検出されます。 | | 最大同時セッション特定のデリバリーグループのサイト全体の瞬時(1分間のサンプル)のピーク同時セッション数(合計数)が、 構成された数のしきい値を超えたときに検出されます。| | ConnectionFailureScount | 接続失敗数-特定のデリバリーグループのサイト全体で、構成可能な期間に障害が発生した接続の数が、構成された数のしきい値を超えたときに検出されます。| | ConnectionFailuresRate | 接続失敗率-特定のデリバリーグループのサイト全体で、構成可能な期間における接続試行に対する接続失敗の比率が、設定されたパーセンテージのしきい値を超えたときに検出されます。| | FailedDesktopMachineCount | 障害が発生したデスクトップOSマシン-特定のデリバリーグループのサイト全体で、障害状態にある瞬時(1分間のサンプル)数のデスクトップOSマシンが、構成された数のしきい値を超えたときに検出されます。| | FailedServerMachineCount | 障害が発生したサーバーOSマシン-特定のデリバリーグループのサイト全体で、障害状態にある瞬時(1分間のサンプル)数のサーバーOSマシンが、構成された数のしきい値を超えると検出されます。| | AverageLogonDuration | 平均ログオン時間-サイト全体または特定のデリバリーグループの構成可能な期間の平均セッションログオン時間が、構成された期間のしきい値を超えると検出されます。| | RDSLoadEvaluator | RDS ロードエバリュエーターインデックス-設定された負荷インデックス値が 5 分間維持されると検出されます。| | SessionsConcurrentCount | 最大同時セッション数-特定のデリバリーグループのサイト全体の瞬時(1分間のサンプル)の同時接続セッション数が、構成された数のしきい値を超えると検出されます。| | LogonDuration | ログオン時間(ユーザー)-過去 1 時間以内に発生した特定のユーザーのログオン時間が、設定されたしきい値を超えたときに検出されます。| | ICaroundTripTime | ICA RTT (ユーザー)-指定したユーザーの ICA ラウンドトリップ時間が、1 セッションでも設定されているしきい値を超えた場合に検出されます。| | ICaroundTripTimeAverage | ICA RTT(平均)-サイト全体または特定のデリバリーグループのユーザーセッションのICA往復時間の平均が、設定されたしきい値を超えると検出されます。| | ICaroundTripTimeSessionCount | ICA RTT (セッション数)-特定のデリバリーグループのICAラウンドトリップ時間のしきい値を超えるセッション数が超過したときに検出されます。| | ICaroundTripTimeSessionPercent | ICA RTT (セッションの%)-特定のデリバリーグループの平均ICA往復時間を超えるセッションの割合が超過したときに検出されます。|
注:
さまざまなアラートタイプとその動作の詳細については、「 アラートと通知-Director」の記事を参照してください。
[Add-MonitorNotificationPolicyCondition
] (https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/Monitor/Add-MonitorNotificationPolicyCondition/) を使用して、アラームしきい値、アラートしきい値、アラートとアラームの再通知時間、選択したアラートタイプに基づく期間を追加できます。
Add-MonitorNotificationPolicyCondition -Uid $policy.Uid -ConditionType SessionsConcurrentCount -AlertThreshold $alertThreshold -AlarmThreshold $alarmThreshold -AlertRenotification $timeSpan -AlarmRenotification $timeSpan
<!--NeedCopy-->
-
AlertThreshold — 警告通知がトリガーされるしきい値
-
alarmThreshold — 重要な通知がトリガーされるしきい値
-
AlertRenotification — 警告通知が再トリガーされるまでの時間
-
AlarmReNotification — 重要な通知が再トリガーされるまでの時間
-
期間 — 警告のしきい値条件(警告または緊急)を確認するウィンドウ
最後に、 New-MonitorNotificationPolicy コマンドレットを使用すると、新しいポリシーを作成するのに役立ちます。