مثال على الاستعلامات التشخيصية لتحديث مضيف الجلسة في Azure Virtual Desktop
هام
تحديث مضيف جلسة العمل ل Azure Virtual Desktop قيد المعاينة حاليا. للحصول على الشروط القانونية التي تنطبق على ميزات Azure الموجودة في الإصدار التجريبي، أو المعاينة، أو التي لم يتم إصدارها بعد في التوفر العام، راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.
يستخدم تحديث مضيف جلسة العمل Log Analytics في Azure Monitor لتخزين معلومات حول التحديثات. تحتوي هذه المقالة على بعض أمثلة استعلامات Kusto التي يمكنك استخدامها مع Log Analytics للاطلاع على معلومات حول تحديثات مضيف جلسة العمل.
المتطلبات الأساسية
قبل أن تتمكن من استخدام هذه الاستعلامات، تحتاج إلى:
تجمع مضيف موجود مع تكوين مضيف جلسة عمل.
إعدادات التشخيص المكونة على كل تجمع مضيف تستخدمه مع تحديث مضيف جلسة العمل لإرسال السجلات والمقاييس إلى مساحة عمل Log Analytics. يجب تمكين سجلات نشاط إدارة مضيف الجلسة ونقطة التحقق والخطأ والفئات كحد أدنى.
تحديث مضيف جلسة عمل مجدول مسبقا وتشغيله على مضيفي الجلسة في تجمع المضيف.
موقع البيانات التشخيصية
بمجرد تكوين إعدادات التشخيص على تجمع مضيف، يتم تخزين البيانات التشخيصية لتحديث مضيف الجلسة في الجداول WVDSessionHostManagement
ومساحة WVDCheckpoints
عمل Log Analytics. تستخدم إدخالات السجل نوع نشاط الإدارة الموجود، والذي يأتي من موفر Azure Resource Manager (ARM).
الجدول WVDSessionHostManagement
خاص بتحديث مضيف جلسة العمل ويتم إنشاؤه بمجرد تمكين الفئة سجلات نشاط إدارة مضيف الجلسة على إعدادات التشخيص لكل تجمع مضيف تستخدمه مع تحديث مضيف جلسة العمل، ويتم تشغيل تحديث مضيف الجلسة. إذا قمت مسبقا بتكوين إعدادات التشخيص لتجمع مضيف، فستحتاج إلى تمكين الفئة Session Host Management Activity Logs. لمزيد من المعلومات قم بتكوين إعدادات التشخيص لالتقاط سجلات النظام الأساسي والمقاييس ل Azure Virtual Desktop.
تحتوي بقية هذه المقالة على بعض أمثلة الاستعلامات التي يمكنك تشغيلها. يمكنك استخدامها كأساس لإنشاء الاستعلامات الخاصة بك. تحتاج إلى تشغيل كل من هذه الاستعلامات في Log Analytics. لمزيد من المعلومات حول كيفية تشغيل الاستعلامات، راجع بدء Log Analytics.
تحديثات مضيف الجلسة التي اكتملت بنجاح
يرتبط هذا الاستعلام بالجداول WVDSessionHostManagement
WVDCheckpoints
ولتوفير الوقت المستغرق لإكمال التحديث والوقت الوسيط لتحديث مضيف جلسة عمل واحد بالدقائق في آخر 30 يوما:
let timeRange = ago(30d);
let succeededStatus = "Succeeded";
let hostPoolUpdateCompletedCheckpoint = "HostPoolUpdateCompleted";
let sessionHostUpdateCompletedCheckpoint = "SessionHostUpdateCompleted";
let provisioningTypeUpdate = "Update";
WVDSessionHostManagement
| where ProvisioningStatus == succeededStatus and TimeGenerated >= timeRange and ProvisioningType == provisioningTypeUpdate
| join kind = inner (
// Get number of session hosts updated
WVDCheckpoints
| where Name == hostPoolUpdateCompletedCheckpoint
| extend ParametersParsed = parse_json(Parameters)
| extend SessionHostUpdateCount = ParametersParsed["SessionHostsUpdateCompleted"], UpdateCompletionTime = todatetime(ParametersParsed["TimeCompleted"]), UpdateStartTime = todatetime(ParametersParsed["TimeStarted"])
| project CorrelationId, SessionHostUpdateCount, UpdateStartTime, UpdateCompletionTime
) on CorrelationId
| join kind = inner
(
// Get time to update individual session hosts
WVDCheckpoints
| where Name == sessionHostUpdateCompletedCheckpoint
| extend ParametersParsed = parse_json(Parameters)
| extend SessionHostUpdateTime = todecimal(ParametersParsed["TimeTakenToUpdateSessionHostInSeconds"])
// Calculate median time to update session host
| summarize SessionHostMedianUpdateTime = percentile(SessionHostUpdateTime, 50) by CorrelationId
) on CorrelationId
| project TimeGenerated, _SubscriptionId, _ResourceId, CorrelationId, UpdateStartDateTime = UpdateStartTime, UpdateEndDateTime = UpdateCompletionTime, ['UpdateDuration [InMinutes]'] = datetime_diff('minute', UpdateCompletionTime, UpdateStartTime), SessionHostUpdateCount, ['MedianSessionHostUpdateTime [InMinutes]'] = toint(SessionHostMedianUpdateTime/(60 * 1.0)), UpdateBatchSize = UpdateMaxVmsRemoved, FromSessionHostConfigVer, ToSessionHostConfigVer, UpdateDeleteOriginalVm
مجموعة البيانات التي تم إرجاعها هي كما يلي:
Column | التعريف |
---|---|
TimeGenerated | الطابع الزمني للحدث الذي أنشأه النظام |
_SubscriptionId | معرف الاشتراك لتجمع مضيف |
_ResourceId | معرف المورد لتجمع مضيف |
CorrelationId | معرف فريد تم تعيينه لكل تحديث صورة يتم إجراؤه على تجمع مضيف |
UpdateStartDateTime | الطابع الزمني لبدء تحديث مضيف الجلسة بالتوقيت العالمي المتفق عليه |
UpdateEndDateTime | الطابع الزمني لإكمال تحديث مضيف الجلسة بالتوقيت العالمي المتفق عليه |
UpdateDuration | الوقت المستغرق لإكمال تحديث صورة جميع مضيفي الجلسة في تجمع مضيف في دقائق |
SessionHostUpdateCount | عدد مضيفي الجلسة المحدثين |
MedianSessionHostUpdateTime | متوسط الوقت لتحديث صورة مضيف جلسة واحدة في دقائق |
UpdateBatchSize | عدد مضيفي الجلسة الذين كانوا في دفعة واحدة أثناء تحديث الصورة |
FromSessionHostConfigVer | تكوين مضيف جلسة العمل قبل تحديث الصورة |
ToSessionHostConfigVer | تكوين مضيف جلسة العمل بعد تحديث الصورة |
UpdateDeleteOriginalVm | ما إذا كان الجهاز الظاهري الأصلي قد تم الاحتفاظ به بعد الانتهاء من تحديث الصورة |
الأخطاء أثناء تحديث مضيف جلسة العمل
يرتبط هذا الاستعلام بالجداول WVDSessionHostManagement
ولتوفير WVDErrors
المعلومات التي يمكنك استخدامها لاستكشاف الأخطاء وإصلاحها أثناء تحديثات مضيف جلسة العمل في آخر 30 يوما:
let timeRange = ago(30d);
let provisioningTypeUpdate = "Update";
WVDSessionHostManagement
| where ProvisioningStatus in ("Failed", "Error", "Canceled") and TimeGenerated >= timeRange and ProvisioningType == provisioningTypeUpdate
| summarize arg_max(TimeGenerated, _ResourceId, _SubscriptionId, FromSessionHostConfigVer, ToSessionHostConfigVer) by CorrelationId
| join kind = inner
(
// Get image update errors
WVDErrors
| where TimeGenerated >= timeRange
| extend IsSessionHostResourceIdAvailable = iif(Message startswith "SessionHostResourceId", 1, 0)
| extend startIndex = iif(IsSessionHostResourceIdAvailable == 1, indexof(Message, ":") + 1, 0)
| extend length = iif(IsSessionHostResourceIdAvailable == 1, indexof(Message, ";") - startIndex, 0)
// Get Session host ResourceId when available
| extend SessionHostResourceId = iif(IsSessionHostResourceIdAvailable == 1, substring(Message, startIndex, length), "")
| project TimeGenerated, CorrelationId, SessionHostResourceId, CodeSymbolic, Message
) on CorrelationId
| project TimeGenerated, _SubscriptionId, _ResourceId, CorrelationId, CodeSymbolic, SessionHostResourceId, Message, FromSessionHostConfigVer, ToSessionHostConfigVer
مجموعة البيانات التي تم إرجاعها هي كما يلي:
Column | التعريف |
---|---|
TimeGenerated | الطابع الزمني للحدث الذي أنشأه النظام |
_SubscriptionId | معرف الاشتراك لتجمع مضيف |
_ResourceId | معرف المورد لتجمع مضيف |
CorrelationId | معرف فريد تم تعيينه لكل تحديث صورة يتم إجراؤه على تجمع مضيف |
CodeSymbolic | رمز الخطأ |
SessionHostResourceId | معرف المورد لمضيف جلسة العمل، إن أمكن |
رسالة | معلومات الخطأ |
FromSessionHostConfigVer | إصدار تكوين مضيف جلسة العمل قبل تحديث الصورة |
ToSessionHostConfigVer | إصدار تكوين مضيف جلسة العمل الذي تم تحديث مضيفي الجلسة إليه حيث فشلت عملية التحديث |
تم إلغاء تحديثات مضيف جلسة العمل من قبل مسؤول قبل الوقت المجدول
يرتبط هذا الاستعلام بالجداول WVDSessionHostManagement
ولتوفير WVDCheckpoints
تحديثات مضيف جلسة العمل التي تمت جدولتها، ولكن تم إلغاؤها بعد ذلك من قبل مسؤول قبل بدء تشغيلها، في آخر 30 يوما:
let timeRange = ago(30d);
let canceledStatus = "Canceled";
let scheduledStatus = "Scheduled";
let hostPoolUpdateCanceledCheckpoint = "HostPoolUpdateCanceled";
let provisioningTypeUpdate = "Update";
WVDSessionHostManagement
| where ProvisioningStatus == canceledStatus and TimeGenerated >= timeRange and ProvisioningType == provisioningTypeUpdate
| join kind = inner
(
WVDCheckpoints
| where Name == "HostPoolUpdateCanceled"
| project TimeGenerated, CorrelationId, Name, Parameters
| extend ParametersParsed = parse_json(Parameters)
| extend StateFrom = tostring(ParametersParsed["StateFrom"]), StateTo = tostring(ParametersParsed["StateTo"]), CanceledTime = todatetime(ParametersParsed["TimeCanceled"])
| where StateFrom == scheduledStatus and StateTo == canceledStatus
) on CorrelationId
| project TimeGenerated, _SubscriptionId, _ResourceId, CorrelationId, ScheduledDateTime = todatetime(ScheduledDateTime), CanceledDateTime = CanceledTime, UpdateBatchSize = UpdateMaxVmsRemoved
مجموعة البيانات التي تم إرجاعها هي كما يلي:
Column | التعريف |
---|---|
TimeGenerated | الطابع الزمني للحدث الذي أنشأه النظام |
_SubscriptionId | معرف الاشتراك لتجمع مضيف |
_ResourceId | معرف المورد لتجمع مضيف |
CorrelationId | معرف فريد مخصص لكل تحديث لصورة تجمع مضيف |
ScheduledDateTime | الوقت المجدول لتحديث مضيف الجلسة بالتوقيت العالمي المتفق عليه |
تاريخ الإلغاء | الوقت في التوقيت العالمي المتفق عليه عندما تم إلغاء تحديث الصورة من قبل مسؤول |
UpdateBatchSize | عدد مضيفي الجلسة الذين كانوا في دفعة واحدة أثناء تحديث الصورة |
تحديثات مضيف جلسة العمل التي كانت قيد التقدم أو فشلت، ثم تم إلغاؤها لاحقا من قبل مسؤول
يرتبط هذا الاستعلام بالجداول WVDSessionHostManagement
ولتوفير WVDCheckpoints
تحديثات مضيف جلسة العمل التي كانت قيد التقدم أو فشلت، ثم تم إلغاؤها لاحقا من قبل مسؤول في آخر 30 يوما:
let timeRange = ago(30d);
let canceledStatus = "Canceled";
let scheduledStatus = "Scheduled";
let hostPoolUpdateCanceledCheckpoint = "HostPoolUpdateCanceled";
let provisioningTypeUpdate = "Update";
WVDSessionHostManagement
| where ProvisioningStatus == canceledStatus and TimeGenerated >= timeRange and ProvisioningType == provisioningTypeUpdate
| join kind = inner
(
WVDCheckpoints
| where Name == hostPoolUpdateCanceledCheckpoint
| project TimeGenerated, CorrelationId, Name, Parameters
| extend ParametersParsed = parse_json(Parameters)
| extend StateFrom = tostring(ParametersParsed["StateFrom"]), StateTo = tostring(ParametersParsed["StateTo"]), CanceledTime = todatetime(ParametersParsed["TimeCanceled"]), TotalSessionHostsInHostPool = toint(ParametersParsed["TotalSessionHostsInHostPool"]), SessionHostUpdateCount = ParametersParsed["SessionHostsUpdateCompleted"]
| where StateFrom != scheduledStatus and StateTo == canceledStatus
) on CorrelationId
| project TimeGenerated, _SubscriptionId, _ResourceId, CorrelationId, ScheduledDateTime = todatetime(ScheduledDateTime), CanceledDateTime = CanceledTime, TotalSessionHostsInHostPool, SessionHostUpdateCount, UpdateBatchSize = UpdateMaxVmsRemoved
مجموعة البيانات التي تم إرجاعها هي كما يلي:
Column | التعريف |
---|---|
TimeGenerated | الطابع الزمني للحدث الذي أنشأه النظام |
_SubscriptionId | معرف الاشتراك لتجمع مضيف |
_ResourceId | معرف المورد لتجمع مضيف |
CorrelationId | معرف فريد تم تعيينه لكل تحديث لمضيف جلسة العمل لتجمع مضيف |
ScheduledDateTime | الوقت المجدول لتحديث مضيف الجلسة بالتوقيت العالمي المتفق عليه |
تاريخ الإلغاء | الوقت في التوقيت العالمي المتفق عليه عندما قام مسؤول بإلغاء تحديث لمضيف الجلسة |
TotalSessionHostsInHostPool | إجمالي عدد مضيفي الجلسة في تجمع مضيف |
SessionHostUpdateCount | عدد مضيفي الجلسة الذين تم تحديثهم قبل إلغاء تحديث مضيف جلسة العمل |
UpdateBatchSize | عدد مضيفي الجلسة في دفعة واحدة أثناء تحديث مضيف الجلسة |
حالة كل تحديث لمضيف جلسة العمل
يرتبط هذا الاستعلام بالجداول WVDSessionHostManagement
ولتوفير WVDCheckpoints
أحدث حالة لكل تحديث لمضيف جلسة العمل في آخر 30 يوما:
let timeRange = ago(30d);
let sessionHostUpdateCompletedCheckpoint = "SessionHostUpdateCompleted";
let provisioningTypeUpdate = "Update";
WVDSessionHostManagement
| where TimeGenerated >= timeRange and ProvisioningType == provisioningTypeUpdate
| join kind = leftouter (
// Get number of session hosts updated if available
WVDCheckpoints
| where Name == sessionHostUpdateCompletedCheckpoint
| summarize SessionHostUpdateCount = count() by CorrelationId
) on CorrelationId
| summarize arg_max(TimeGenerated, _SubscriptionId, _ResourceId, ScheduledDateTime, UpdateMaxVmsRemoved, SessionHostUpdateCount, ProvisioningStatus) by CorrelationId
| project TimeGenerated, _SubscriptionId, _ResourceId, CorrelationId, ProvisioningStatus, ScheduledDateTime = todatetime(ScheduledDateTime), UpdateBatchSize = UpdateMaxVmsRemoved, SessionHostUpdateCount = iif(isempty(SessionHostUpdateCount), 0, SessionHostUpdateCount)
مجموعة البيانات التي تم إرجاعها هي كما يلي:
Column | التعريف |
---|---|
TimeGenerated | الطابع الزمني للحدث الذي أنشأه النظام |
_SubscriptionId | معرف الاشتراك لتجمع مضيف |
_ResourceId | معرف المورد لتجمع مضيف |
CorrelationId | معرف فريد مخصص لكل تحديث لصورة تجمع مضيف |
حالة التزويد | الحالة الحالية لتحديث صورة تجمع مضيف |
ScheduledDateTime | الوقت المجدول لتحديث مضيف الجلسة بالتوقيت العالمي المتفق عليه |
UpdateBatchSize | عدد مضيفي الجلسة في دفعة واحدة أثناء تحديث الصورة |
SessionHostUpdateCount | عدد مضيفي الجلسة الذين تم تحديثهم |
الخطوات التالية
للحصول على إرشادات استكشاف الأخطاء وإصلاحها لتحديث مضيف جلسة العمل، راجع استكشاف أخطاء تحديث مضيف جلسة العمل وإصلاحها.