عرض تقارير سلامة «تصميم الخدمة»

تقدم Service Fabric نموذج الصحة مع كيانات الصحة حيث يمكن لمكونات النظام وهيئات المراقبة الإبلاغ عن الظروف المحلية التي يراقبونها. يعمل "health store" على تجميع جميع البيانات الصحية لتحديد ما إذا كانت الكيانات سليمة أم لا.

يتم ملء نظام المجموعة تلقائياً بالتقارير الصحية التي ترسلها مكونات النظام. اقرأ المزيد على "Use system health reports to troubleshoot".

توفر Service Fabric طرقًا متعددة للحصول على حالة الحماية المُجمّعة للكيانات:

  • Service Fabric Explorer أو أدوات التصور الأخرى
  • الاستعلامات عن الحالة (من خلال PowerShell، أو REST)
  • الاستعلامات العامة التي ترجع قائمة بالكيانات التي تتمتع بالحماية كأحد الخصائص (من خلال PowerShell، أو API، أو REST)

لتوضيح هذه الخيارات، دعنا نستخدم مجموعة محلية مع خمس عقد وتطبيق fabric:/WordCount. يحتوي تطبيق fabric:/WordCount على خدمتين افتراضيتين، هما خدمة ذات حالة من النوع WordCountServiceType، وخدمة بدون حالة من النوع WordCountWebServiceType. لقد غيّرت ApplicationManifest.xml إلى طلب سبع نسخ متماثلة مستهدفة للخدمة ذات حالة وقسم واحد. نظرًا لوجود خمس عقد فقط في نظام المجموعة، تقوم مكونات النظام بالإبلاغ عن تحذير على قسم الخدمة لأنه أقل من العدد المستهدف.

<Service Name="WordCountService">
  <StatefulService ServiceTypeName="WordCountServiceType" TargetReplicaSetSize="7" MinReplicaSetSize="2">
    <UniformInt64Partition PartitionCount="[WordCountService_PartitionCount]" LowKey="1" HighKey="26" />
  </StatefulService>
</Service>

الحماية في مستكشف «تصميم الخدمة»

يوفر Service Fabric Explorer طريقة عرض مرئية لنظام المجموعة. في الصورة أدناه، يمكنك رؤية التالي:

  • إن fabric:/WordCount للتطبيق لونه أحمر (في حالة خطأ) لأنه يحتوي على الحدث الخطأ الذي تم الإبلاغ عنه بواسطة MyWatchdog لتوفر الخاصية.
  • إن إحدى خدماتها، fabric:/WordCount/WordCountService باللون الأصفر (في حالة تحذير). يتم تكوين الخدمة بسبع نسخ متماثلة ويحتوي نظام المجموعة على خمس عقد، لذلك فهناك نسختين متماثلتين لا يمكن وضعهما. على الرغم من أنه لا يظهر هنا، فإن قسم الخدمة لونه أصفر بسبب تقرير النظام من System.FM ينص على Partition is below target replica or instance count. يقوم القسم الأصفر بتشغيل الخدمة باللون الأصفر.
  • إن نظام المجموعة باللون الأحمر بسبب التطبيق باللون الأحمر.

يستخدم التقييم النهج الافتراضية داخل بيان الكتلة وبيان التطبيق. إنها سياسات صارمة ولا تحتمل أي فشل.

عرض نظام المجموعة باستخدام Service Fabric Explorer:

عرض نظام المجموعة باستخدام Service Fabric Explorer.

ملاحظة

أقرأ المزيد عن Service Fabric Explorer.

الاستعلامات الصحية

يعرض نسيج الخدمة الاستعلامات الصحية لكل نوع من "entity types". يمكن الوصول إليها من خلال واجهة برمجة التطبيقات، باستخدام طرق على FabricClient.HealthManager وPowerShell cmdlets وREST. تعرض هذه الاستعلامات معلومات صحية كاملة عن الكيان: الحالة الصحية المجمعة، والأحداث الصحية للكيان، وحالات صحة الطفل (عند الاقتضاء)، والتقييمات غير الصحية (عندما يكون الكيان غير صحي)، وإحصاءات صحة الأطفال (عند الاقتضاء).

ملاحظة

يتم إرجاع الكيان السليم عند تعبئته بالكامل في المتجر الصحي. يجب أن يكون الكيان نشطًا (أي غير محذوف) ويتضمن تقرير النظام. يجب أن تحتوي الكيانات الأصلية الموجودة في سلسلة التدرج الهرمي أيضًا على تقارير النظام. إذا لم يتم استيفاء أي من هذه الشروط، تقوم الاستعلامات الصحية بإرجاع FabricException متضمنًا FabricErrorCodeFabricHealthEntityNotFound يوضح سبب عدم إرجاع الكيان.

يجب تمرير الاستعلامات السليمة في معرّف الكيان، الذي يعتمد على نوع الكيان. تقبل الاستعلامات معلمات سياسة الحماية الاختيارية. إذا لم يتم تحديد أي سياسات للحماية، يتم استخدام سياسات الحماية من نظام المجموعة أو بيان التطبيق للتقييم. إذا كانت بيانات التطبيق لا تحتوي على تعريف لسياسات الحماية، استخدام سياسات الحماية الافتراضية لإجراء التقييم. لا تحتمل سياسات الحماية الافتراضية أي إخفاقات. تقبل الاستعلامات أيضًا عوامل التصفية لإرجاع العناصر الفرعية أو الأحداث الجزئية فقط--تلك التي تراعي عوامل التصفية المحددة. تسمح تصفية أخرى باستبعاد إحصاءات العناصر الفرعية.

ملاحظة

يتم تطبيق عوامل تصفية الإخراج من جانب الخادم، بحيث يتم تقليل حجم الرد على الرسالة. نوصي باستخدام عوامل تصفية الإخراج للحد من البيانات التي تم إرجاعها، بدلاً من تطبيق عوامل التصفية من جانب العميل.

تحتوي حماية الكيان على:

  • حالة الحماية المُجمّعة للكيان. يتم حسابها بواسطة المتجر الصحي استنادًا إلى التقارير الصحية للكيان، وحالات صحة التوابع (عند الاقتضاء)، وسياسات الحماية. أقرأ المزيد عن تقييم صحة الكيان.
  • أحداث صحة الكيان.
  • مجموعة حالات الصحة لجميع العناصر الفرعية للكيانات التي قد تحتوي على العناصر الفرعية. تحتوي حالات الصحة على معرّفات الكيانات وحالة الحماية المُجمّعة. للحصول على حماية كاملة للتابع، قم باستدعاء حالة الاستعلام لنوع الكيان التابع وقم بتمرير معرّف الفرع.
  • التقييمات غير السليمة التي تشير إلى التقرير الذي قامت بتشغيل حالة الكيان، إذا كان الكيان غير سليم. إن التقييمات متكررة، وتحتوي على تقييمات صحة العناصر الفرعية التي قامت بتشغيل الحالة الصحية الحالية. على سبيل المثال، أبلغت هيئة المراقبة عن خطأ في نسخة متماثلة. تظهر صحة التطبيق تقييمًا غير سليم بسبب خدمة غير سليمة؛ إن الخدمة غير سليمة بسبب وجود قسم في حالة خطأ؛ إن القسم غير سليم بسبب وجود نسخة متماثلة في حالة خطأ؛ إن النسخة المتماثلة غير سليمة بسبب تقرير الصحة من هيئة المراقبة عن وجود خطأ.
  • إن إحصاءات الصحة لجميع أنواع توابع الكيانات التي لديها فروع. على سبيل المثال، تعرض حماية نظام المجموعة العدد الإجمالي للتطبيقات، والخدمات، والأقسام، والنسخ المتماثلة، والكيانات المنشورة في المجموعة. تعرض صحة الخدمة العدد الإجمالي للأقسام والنسخ المتماثلة ضمن الخدمة المحددة.

احصل على صحة نظام المجموعة

تُرجع حالة حماية كيان نظام المجموعة وتحتوي على حالات الحماية للتطبيقات والعُقد (العناصر الفرعية لنظام المجموعة). إدخال:

  • [اختياري] تُستخدم سياسة حماية نظام المجموعة لتقييم العُقد وأحداث نظام المجموعة.
  • [اختياري] مخطط سياسة الصحة للتطبيق، مع استخدام سياسات الصحة لتجاوز سياسات بيان التطبيق.
  • [اختياري] عوامل تصفية الأحداث، والعُقد، والتطبيقات التي تُحدد الإدخالات ذات الأهمية ويجب إرجاعها في النتيجة (على سبيل المثال، الأخطاء فقط، أو كل من التحذيرات والأخطاء). يتم استخدام جميع الأحداث، والعُقد، والتطبيقات لتقييم حالة الحماية المُجمّعة للكيان، بغض النظر عن عامل التصفية.
  • [اختياري] التصفية لاستبعاد الإحصاءات السليمة.
  • [اختياري] التصفية لتشمل إحصاءات حماية التصميم:/النظام في إحصاءات الحماية. ينطبق فقط في حالة عدم استبعاد الإحصاءات الحماية. بشكل افتراضي، تتضمن إحصائيات الحماية إحصائياتٍ لتطبيقات المستخدم فقط وليس تطبيق النظام.

واجهة برمجة التطبيقات (API)

لمعرفة حالة المجموعة، قم بإنشاء FabricClient واستدعاء أسلوب GetClusterHealthAsync على HealthManager الخاص به.

يحصل الاستدعاء التالي على حالة المجموعة:

ClusterHealth clusterHealth = await fabricClient.HealthManager.GetClusterHealthAsync();

تحصل التعليمة البرمجية التالية على حماية نظام المجموعة باستخدام سياسة حماية مخصصة لنظام مجموعة وعوامل تصفية للعُقد والتطبيقات. وتُوضح أن إحصاءات الحماية تشمل إحصاءات النسيج :/النظام. تقوم بإنشاء ClusterHealthQueryDescription، الذي يحتوي على معلومات الإدخال.

var policy = new ClusterHealthPolicy()
{
    MaxPercentUnhealthyNodes = 20
};
var nodesFilter = new NodeHealthStatesFilter()
{
    HealthStateFilterValue = HealthStateFilter.Error | HealthStateFilter.Warning
};
var applicationsFilter = new ApplicationHealthStatesFilter()
{
    HealthStateFilterValue = HealthStateFilter.Error
};
var healthStatisticsFilter = new ClusterHealthStatisticsFilter()
{
    ExcludeHealthStatistics = false,
    IncludeSystemApplicationHealthStatistics = true
};
var queryDescription = new ClusterHealthQueryDescription()
{
    HealthPolicy = policy,
    ApplicationsFilter = applicationsFilter,
    NodesFilter = nodesFilter,
    HealthStatisticsFilter = healthStatisticsFilter
};

ClusterHealth clusterHealth = await fabricClient.HealthManager.GetClusterHealthAsync(queryDescription);

PowerShell

إن الـ cmdlet المستخدم للحصول على حماية نظام المجموعة هو Get-ServiceFabricClusterHealth. أولاً، قم بالاتصال بنظام المجموعة باستخدام Connect-ServiceFabricCluster cmdlet.

إن حالة نظام المجموعة هي خمس عُقدٍ، وتطبيق النظام وfabric:/WordCount تم تكوينها كما هو موضح.

يحصل الـ cmdlet التالي على حالة نظام المجموعة باستخدام سياسات الحماية الافتراضية. إن حالة الحماية المُجمعة في حالة التحذير، لأن تطبيق fabric:/WordCount في حالة تحذير. لاحظ كيف توفر التقييمات غير الصحية تفاصيل عن الظروف التي أدت إلى الصحة الإجمالية.

PS D:\ServiceFabric> Get-ServiceFabricClusterHealth


AggregatedHealthState   : Warning
UnhealthyEvaluations    : 
                          Unhealthy applications: 100% (1/1), MaxPercentUnhealthyApplications=0%.

                          Unhealthy application: ApplicationName='fabric:/WordCount', AggregatedHealthState='Warning'.

                            Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                            Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Warning'.

                                Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Warning'.

                                    Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=false.


NodeHealthStates        : 
                          NodeName              : _Node_4
                          AggregatedHealthState : Ok

                          NodeName              : _Node_3
                          AggregatedHealthState : Ok

                          NodeName              : _Node_2
                          AggregatedHealthState : Ok

                          NodeName              : _Node_1
                          AggregatedHealthState : Ok

                          NodeName              : _Node_0
                          AggregatedHealthState : Ok

ApplicationHealthStates : 
                          ApplicationName       : fabric:/System
                          AggregatedHealthState : Ok

                          ApplicationName       : fabric:/WordCount
                          AggregatedHealthState : Warning

HealthEvents            : None
HealthStatistics        : 
                          Node                  : 5 Ok, 0 Warning, 0 Error
                          Replica               : 6 Ok, 0 Warning, 0 Error
                          Partition             : 1 Ok, 1 Warning, 0 Error
                          Service               : 1 Ok, 1 Warning, 0 Error
                          DeployedServicePackage : 6 Ok, 0 Warning, 0 Error
                          DeployedApplication   : 5 Ok, 0 Warning, 0 Error
                          Application           : 0 Ok, 1 Warning, 0 Error

يحصل PowerShell cmdlet التالي على صحة نظام المجموعة باستخدام سياسة مخصصة للتطبيق. يقوم بتصفية النتائج للحصول على التطبيقات والعقد فقط عن طريق الخطأ أو التحذير. ونتيجة لذلك، لا يتم إرجاع العُقد، حيث إن جميعها سليمة. لا يراعي عامل تصفية التطبيقات سوى تطبيق fabric:/WordCount. نظرًا لأن السياسة المخصصة تُحدد اعتبار التحذيرات أنها أخطاء في تطبيق fabric:/WordCount، يتم تقييم التطبيق على أنه في حالة خطأ، وكذلك هو حال نظام المجموعة.

PS D:\ServiceFabric> $appHealthPolicy = New-Object -TypeName System.Fabric.Health.ApplicationHealthPolicy
$appHealthPolicy.ConsiderWarningAsError = $true
$appHealthPolicyMap = New-Object -TypeName System.Fabric.Health.ApplicationHealthPolicyMap
$appUri1 = New-Object -TypeName System.Uri -ArgumentList "fabric:/WordCount"
$appHealthPolicyMap.Add($appUri1, $appHealthPolicy)
Get-ServiceFabricClusterHealth -ApplicationHealthPolicyMap $appHealthPolicyMap -ApplicationsFilter "Warning,Error" -NodesFilter "Warning,Error" -ExcludeHealthStatistics


AggregatedHealthState   : Error
UnhealthyEvaluations    : 
                          Unhealthy applications: 100% (1/1), MaxPercentUnhealthyApplications=0%.

                          Unhealthy application: ApplicationName='fabric:/WordCount', AggregatedHealthState='Error'.

                            Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                            Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Error'.

                                Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Error'.

                                    Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=true.


NodeHealthStates        : None
ApplicationHealthStates : 
                          ApplicationName       : fabric:/WordCount
                          AggregatedHealthState : Error

HealthEvents            : None

REST

يمكنك معرفة حالة نظام المجموعة من خلال طلب GET أو طلب POST يتضمن سياسات الحماية الموضحة في النص.

احصل على صحة العقدة

تُرجع حالة كيان العُقدة وتحتوي على أحداث الحالة التي تم الإبلاغ عنها في العقدة. إدخال:

  • [مطلوب] اسم العقدة الذي يُحدد العُقدة.
  • [اختياري] إعدادات سياسة حماية نظام المجموعة المستخدمة لتقييم الصحة.
  • [اختياري] عوامل تصفية الأحداث التي تحدد الإدخالات ذات الأهمية ويجب إرجاعها في النتيجة (على سبيل المثال، الأخطاء فقط، أو كل من التحذيرات والأخطاء). يتم استخدام جميع الأحداث لتقييم حالة الحماية المُجمّعة للكيان، بغض النظر عن عامل التصفية.

واجهة برمجة التطبيقات (API)

لمعرفة حالة حماية العُقدة من خلال واجهة برمجة التطبيقات، قم بإنشاءFabricClient واستدعاء أسلوب GetNodeHealthAsync على HealthManager الخاص بها.

تحصل التعليمة البرمجية التالية على حالة الحماية للعقدة من اسم العُقدة المحدد:

NodeHealth nodeHealth = await fabricClient.HealthManager.GetNodeHealthAsync(nodeName);

تحصل التعليمة البرمجية التالية على حماية العقدة من اسم العقدة المحدد وتمرر عامل تصفية الأحداث والنهج المخصص من خلال NodeHealthQueryDescription:

var queryDescription = new NodeHealthQueryDescription(nodeName)
{
    HealthPolicy = new ClusterHealthPolicy() {  ConsiderWarningAsError = true },
    EventsFilter = new HealthEventsFilter() { HealthStateFilterValue = HealthStateFilter.Warning },
};

NodeHealth nodeHealth = await fabricClient.HealthManager.GetNodeHealthAsync(queryDescription);

PowerShell

إن الـ cmdlet المستخدم للحصول على حالة حماية العُقدة هو Get-ServiceFabricNodeHealth. أولاً، قم بالاتصال بنظام المجموعة باستخدام Connect-ServiceFabricCluster cmdlet. يحصل الـ cmdlet التالي على حالة حماية العُقدة باستخدام سياسات الحماية الافتراضية:

PS D:\ServiceFabric> Get-ServiceFabricNodeHealth _Node_1


NodeName              : _Node_1
AggregatedHealthState : Ok
HealthEvents          : 
                        SourceId              : System.FM
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 3
                        SentAt                : 7/13/2017 4:39:23 PM
                        ReceivedAt            : 7/13/2017 4:40:47 PM
                        TTL                   : Infinite
                        Description           : Fabric node is up.
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/13/2017 4:40:47 PM, LastWarning = 1/1/0001 12:00:00 AM

يحصل الـ cmdlet التالي على حالة الحماية لجميع العُقد في نظام المجموعة:

PS D:\ServiceFabric> Get-ServiceFabricNode | Get-ServiceFabricNodeHealth | select NodeName, AggregatedHealthState | ft -AutoSize

NodeName AggregatedHealthState
-------- ---------------------
_Node_4                     Ok
_Node_3                     Ok
_Node_2                     Ok
_Node_1                     Ok
_Node_0                     Ok

REST

يمكنك الحصول على حالة الحماية للعقدة من خلال طلب GET أو طلب POST الذي يتضمن السياسات الحماية الموضحة في النص.

الحصول على حالة حماية التطبيق

تُرجع حالة كيان تطبيق. إنه يحتوي على حالات الحماية للتطبيقات المنتشرة والعناصر الفرعية للخدمة. إدخال:

  • [مطلوب] اسم التطبيق (URI) الذي يُحدد التطبيق.
  • [اختياري] سياسة حماية التطبيق المستخدمة لتجاوز سياسات بيان التطبيق.
  • [اختياري] عوامل تصفية للأحداث، والخدمات، والتطبيقات المنشورة التي تُحدد الإدخالات ذات الأهمية ويتعين إرجاعها في النتيجة (على سبيل المثال، الأخطاء فقط، أو كل من التحذيرات والأخطاء). يتم استخدام جميع الأحداث، والخدمات، والتطبيقات المنشورة لتقييم حالة الحماية المُجمّعة للكيان، بغض النظر عن عامل التصفية.
  • [اختياري] التصفية لاستبعاد إحصاءات الحماية. إذا لم يتم تحديدها، تتضمن إحصاءات الحماية عدد الموافقة، والتحذير، والخطأ لجميع العناصر الفرعية للتطبيقات: الخدمات، والأقسام، والنسخ المتماثلة، والتطبيقات المنشورة، وحزم الخدمات المنشورة.

واجهة برمجة التطبيقات (API)

لمعرفة حالة حماية التطبيق، قم بإنشاء FabricClient واستدعاء طريقة GetApplicationHealthAsync على HealthManager الخاص بها.

تحصل التعليمة البرمجية التالية على حماية التطبيق من اسم التطبيق المُحدد (URI):

ApplicationHealth applicationHealth = await fabricClient.HealthManager.GetApplicationHealthAsync(applicationName);

تحصل التعليمة البرمجية التالية على حماية التطبيق من اسم التطبيق المحدد (URI)، باستخدام عوامل التصفية والسياسات المخصصة والمُحددة عبر ApplicationHealthQueryDescription.

HealthStateFilter warningAndErrors = HealthStateFilter.Error | HealthStateFilter.Warning;
var serviceTypePolicy = new ServiceTypeHealthPolicy()
{
    MaxPercentUnhealthyPartitionsPerService = 0,
    MaxPercentUnhealthyReplicasPerPartition = 5,
    MaxPercentUnhealthyServices = 0,
};
var policy = new ApplicationHealthPolicy()
{
    ConsiderWarningAsError = false,
    DefaultServiceTypeHealthPolicy = serviceTypePolicy,
    MaxPercentUnhealthyDeployedApplications = 0,
};

var queryDescription = new ApplicationHealthQueryDescription(applicationName)
{
    HealthPolicy = policy,
    EventsFilter = new HealthEventsFilter() { HealthStateFilterValue = warningAndErrors },
    ServicesFilter = new ServiceHealthStatesFilter() { HealthStateFilterValue = warningAndErrors },
    DeployedApplicationsFilter = new DeployedApplicationHealthStatesFilter() { HealthStateFilterValue = warningAndErrors },
};

ApplicationHealth applicationHealth = await fabricClient.HealthManager.GetApplicationHealthAsync(queryDescription);

PowerShell

إن الـ cmdlet المستخدم للحصول على حالة حماية التطبيق هو Get-ServiceFabricApplicationHealth. أولاً، قم بالاتصال بنظام المجموعة باستخدام Connect-ServiceFabricCluster cmdlet.

تُرجع cmdlet التالية حماية تطبيق fabric:/WordCount:

PS D:\ServiceFabric> Get-ServiceFabricApplicationHealth fabric:/WordCount


ApplicationName                 : fabric:/WordCount
AggregatedHealthState           : Warning
UnhealthyEvaluations            : 
                                  Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                                  Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Warning'.

                                    Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                    Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Warning'.

                                        Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=false.

ServiceHealthStates             : 
                                  ServiceName           : fabric:/WordCount/WordCountWebService
                                  AggregatedHealthState : Ok

                                  ServiceName           : fabric:/WordCount/WordCountService
                                  AggregatedHealthState : Warning

DeployedApplicationHealthStates : 
                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_4
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_3
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_0
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_2
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_1
                                  AggregatedHealthState : Ok

HealthEvents                    : 
                                  SourceId              : System.CM
                                  Property              : State
                                  HealthState           : Ok
                                  SequenceNumber        : 282
                                  SentAt                : 7/13/2017 5:57:05 PM
                                  ReceivedAt            : 7/13/2017 5:57:05 PM
                                  TTL                   : Infinite
                                  Description           : Application has been created.
                                  RemoveWhenExpired     : False
                                  IsExpired             : False
                                  Transitions           : Error->Ok = 7/13/2017 5:57:05 PM, LastWarning = 1/1/0001 12:00:00 AM

HealthStatistics                : 
                                  Replica               : 6 Ok, 0 Warning, 0 Error
                                  Partition             : 1 Ok, 1 Warning, 0 Error
                                  Service               : 1 Ok, 1 Warning, 0 Error
                                  DeployedServicePackage : 6 Ok, 0 Warning, 0 Error
                                  DeployedApplication   : 5 Ok, 0 Warning, 0 Error

يمر cmdlet PowerShell التالي في السياسات المخصصة. كما أنه يقوم بتصفية العناصر الفرعية والأحداث.

PS D:\ServiceFabric> Get-ServiceFabricApplicationHealth -ApplicationName fabric:/WordCount -ConsiderWarningAsError $true -ServicesFilter Error -EventsFilter Error -DeployedApplicationsFilter Error -ExcludeHealthStatistics


ApplicationName                 : fabric:/WordCount
AggregatedHealthState           : Error
UnhealthyEvaluations            : 
                                  Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                                  Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Error'.

                                    Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                    Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Error'.

                                        Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=true.

ServiceHealthStates             : 
                                  ServiceName           : fabric:/WordCount/WordCountService
                                  AggregatedHealthState : Error

DeployedApplicationHealthStates : None
HealthEvents                    : None

REST

يمكنك الحصول على حالة حماية التطبيق من خلال طلب GET أو طلب POST الذي يتضمن سياسات الحماية الموضحة في النص.

الحصول على حالة حماية الخدمة

تُرجع حالة حماية كيان خدمة. إنه يحتوي على حالات الحماية للقسم. إدخال:

  • [مطلوب] اسم الخدمة (URI) الذي يُحدد الخدمة.
  • [اختياري] سياسة حماية التطبيق المستخدمة لتجاوز سياسات بيان التطبيق.
  • [اختياري] عوامل تصفية الأحداث التي تُحدد الإدخالات ذات الأهمية ويتعين إرجاعها في النتيجة (على سبيل المثال، الأخطاء فقط، أو كل من التحذيرات والأخطاء). يتم استخدام جميع الأحداث والأقسام لتقييم حالة الحماية المُجمّعة للكيان، بغض النظر عن عامل التصفية.
  • [اختياري] التصفية لاستبعاد الإحصاءات السليمة. إذا لم يتم تحديده، فستعرض إحصاءات الحماية عدد الموافقات، والتحذيرات، والأخطاء لجميع الأقسام والنسخ المتماثلة للخدمة.

واجهة برمجة التطبيقات (API)

لمعرفة حالة حماية الخدمة من خلال واجهة برمجة التطبيقات، قم بإنشاء FabricClient واستدعاء GetServiceHealthAsync من HealthManager الخاص بها.

يتعرف المثال التالي على حالة الخدمة من اسم الخدمة المُحدّد (URI):

ServiceHealth serviceHealth = await fabricClient.HealthManager.GetServiceHealthAsync(serviceName);

تحصل التعليمة البرمجية التالية على حالة الخدمة من اسم الخدمة المُحدد (URI)، مع تحديد عوامل التصفية والسياسات المخصصة من خلال ServiceHealthQueryDescription:

var queryDescription = new ServiceHealthQueryDescription(serviceName)
{
    EventsFilter = new HealthEventsFilter() { HealthStateFilterValue = HealthStateFilter.All },
    PartitionsFilter = new PartitionHealthStatesFilter() { HealthStateFilterValue = HealthStateFilter.Error },
};

ServiceHealth serviceHealth = await fabricClient.HealthManager.GetServiceHealthAsync(queryDescription);

PowerShell

إن الـ cmdlet المستخدم للتعرف على حالة حماية الخدمة هو Get-ServiceFabricServiceHealth. أولاً، قم بالاتصال بنظام المجموعة باستخدام Connect-ServiceFabricCluster cmdlet.

يحصل الـ cmdlet التالي على حالة حماية الخدمة باستخدام سياسات الحماية الافتراضية:

PS D:\ServiceFabric> Get-ServiceFabricServiceHealth -ServiceName fabric:/WordCount/WordCountService


ServiceName           : fabric:/WordCount/WordCountService
AggregatedHealthState : Warning
UnhealthyEvaluations  : 
                        Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                        Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Warning'.

                            Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=false.

PartitionHealthStates : 
                        PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
                        AggregatedHealthState : Warning

HealthEvents          : 
                        SourceId              : System.FM
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 15
                        SentAt                : 7/13/2017 5:57:05 PM
                        ReceivedAt            : 7/13/2017 5:57:18 PM
                        TTL                   : Infinite
                        Description           : Service has been created.
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

HealthStatistics      : 
                        Replica               : 5 Ok, 0 Warning, 0 Error
                        Partition             : 0 Ok, 1 Warning, 0 Error

REST

يمكنك التعرف على حالة حماية الخدمة من خلال طلب GET أو طلب POST الذي يتضمن سياسات الحماية الموضحة في النص.

تعرف على حالة القسم

تُرجع حالة حماية كيان التقسيم. يتضمن حالات حماية النسخ المتماثلة. إدخال:

  • [مطلوب] مُعرّف القسم (GUID) الذي يُحدّد القسم.
  • [اختياري] سياسة حماية التطبيق المستخدمة لتجاوز سياسات بيان التطبيق.
  • [اختياري] عوامل تصفية الأحداث التي تُحدد الإدخالات ذات الأهمية ويتعين إرجاعها في النتيجة (على سبيل المثال، الأخطاء فقط، أو كل من التحذيرات والأخطاء). يتم استخدام جميع الأحداث والنسخ المتماثلة لتقييم حالة الحماية المُجمّعة للكيان، بغض النظر عن عامل التصفية.
  • [اختياري] التصفية لاستبعاد الإحصاءات السليمة. إذا لم يتم تحديدها، فستعرض إحصاءات الحماية عدد النسخ المتماثلة الموجودة في حالات الموافقة، والتحذير، والخطأ.

واجهة برمجة التطبيقات (API)

لمعرفة حالة حماية القسم من خلال واجهة برمجة التطبيقات، قم بإنشاء FabricClient واستدعاء GetPartitionHealthAsync من HealthManager الخاص بها. لتحديد المعلمات الاختيارية، قم بإنشاء PartitionHealthQueryDescription.

PartitionHealth partitionHealth = await fabricClient.HealthManager.GetPartitionHealthAsync(partitionId);

PowerShell

إن الـ cmdlet المُستخدَّم للتعرف على حالة القسم هو Get-ServiceFabricPartitionHealth. أولاً، قم بالاتصال بنظام المجموعة باستخدام Connect-ServiceFabricCluster cmdlet.

يحصل الـ cmdlet التالي على الحماية لجميع أقسام خدمة fabric:/WordCount/WordCountService وتصفية حالات الحماية للنسخ المتماثلة:

PS D:\ServiceFabric> Get-ServiceFabricPartition fabric:/WordCount/WordCountService | Get-ServiceFabricPartitionHealth -ReplicasFilter None

PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
AggregatedHealthState : Warning
UnhealthyEvaluations  : 
                        Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=false.

ReplicaHealthStates   : None
HealthEvents          : 
                        SourceId              : System.FM
                        Property              : State
                        HealthState           : Warning
                        SequenceNumber        : 72
                        SentAt                : 7/13/2017 5:57:29 PM
                        ReceivedAt            : 7/13/2017 5:57:48 PM
                        TTL                   : Infinite
                        Description           : Partition is below target replica or instance count.
                        fabric:/WordCount/WordCountService 7 2 af2e3e44-a8f8-45ac-9f31-4093eb897600
                          N/P RD _Node_2 Up 131444422260002646
                          N/S RD _Node_4 Up 131444422293113678
                          N/S RD _Node_3 Up 131444422293113679
                          N/S RD _Node_1 Up 131444422293118720
                          N/S RD _Node_0 Up 131444422293118721
                          (Showing 5 out of 5 replicas. Total available replicas: 5.)

                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Ok->Warning = 7/13/2017 5:57:48 PM, LastError = 1/1/0001 12:00:00 AM

                        SourceId              : System.PLB
                        Property              : ServiceReplicaUnplacedHealth_Secondary_af2e3e44-a8f8-45ac-9f31-4093eb897600
                        HealthState           : Warning
                        SequenceNumber        : 131444445174851664
                        SentAt                : 7/13/2017 6:35:17 PM
                        ReceivedAt            : 7/13/2017 6:35:18 PM
                        TTL                   : 00:01:05
                        Description           : The Load Balancer was unable to find a placement for one or more of the Service's Replicas:
                        Secondary replica could not be placed due to the following constraints and properties:  
                        TargetReplicaSetSize: 7
                        Placement Constraint: N/A
                        Parent Service: N/A

                        Constraint Elimination Sequence:
                        Existing Secondary Replicas eliminated 4 possible node(s) for placement -- 1/5 node(s) remain.
                        Existing Primary Replica eliminated 1 possible node(s) for placement -- 0/5 node(s) remain.

                        Nodes Eliminated By Constraints:

                        Existing Secondary Replicas -- Nodes with Partition's Existing Secondary Replicas/Instances:
                        --
                        FaultDomain:fd:/4 NodeName:_Node_4 NodeType:NodeType4 UpgradeDomain:4 UpgradeDomain: ud:/4 Deactivation Intent/Status: None/None
                        FaultDomain:fd:/3 NodeName:_Node_3 NodeType:NodeType3 UpgradeDomain:3 UpgradeDomain: ud:/3 Deactivation Intent/Status: None/None
                        FaultDomain:fd:/1 NodeName:_Node_1 NodeType:NodeType1 UpgradeDomain:1 UpgradeDomain: ud:/1 Deactivation Intent/Status: None/None
                        FaultDomain:fd:/0 NodeName:_Node_0 NodeType:NodeType0 UpgradeDomain:0 UpgradeDomain: ud:/0 Deactivation Intent/Status: None/None

                        Existing Primary Replica -- Nodes with Partition's Existing Primary Replica or Secondary Replicas:
                        --
                        FaultDomain:fd:/2 NodeName:_Node_2 NodeType:NodeType2 UpgradeDomain:2 UpgradeDomain: ud:/2 Deactivation Intent/Status: None/None


                        RemoveWhenExpired     : True
                        IsExpired             : False
                        Transitions           : Error->Warning = 7/13/2017 5:57:48 PM, LastOk = 1/1/0001 12:00:00 AM

HealthStatistics      : 
                        Replica               : 5 Ok, 0 Warning, 0 Error

REST

يمكنك معرفة حالة القسم من خلال طلب GET أو طلب POST الذي يتضمن سياسات الحماية الموضحة في النص.

تعرّف على حالة النسخ المتماثلة

إرجاع حالة النسخة المتماثلة من الخدمة ذات الحالة أو حالة مثيل الخدمة دون الحالة. إدخال:

  • [مطلوب] مُعرّف القسم (GUID) ومُعرّف النسخة المتماثلة الذي يحدد النسخة المتماثلة.
  • [اختياري] معلمات سياسات حماية التطبيق المستخدمة لتجاوز سياسات بيان التطبيق.
  • [اختياري] عوامل تصفية الأحداث التي تحدد الإدخالات ذات الأهمية ويجب إرجاعها في النتيجة (على سبيل المثال، الأخطاء فقط، أو كل من التحذيرات والأخطاء). يتم استخدام جميع الأحداث لتقييم حالة الحماية المُجمّعة للكيان، بغض النظر عن عامل التصفية.

واجهة برمجة التطبيقات (API)

لمعرفة حالة حماية النسخ المتماثلة من خلال واجهة برمجة التطبيقات، قم بإنشاء FabricClient واستدعاء GetReplicaHealthAsync من HealthManager الخاص بها. لتحديد المعلمات المتقدمة، استخدم ReplicaHealthQueryDescription.

ReplicaHealth replicaHealth = await fabricClient.HealthManager.GetReplicaHealthAsync(partitionId, replicaId);

PowerShell

إن الـ cmdlet المُستخدم للحصول على حالة النسخة المتماثلة هو Get-ServiceFabricReplicaHealth. أولاً، قم بالاتصال بنظام المجموعة باستخدام Connect-ServiceFabricCluster cmdlet.

يتعرف الـ cmdlet التالي على حالة النسخة المتماثلة الأساسية لجميع أقسام الخدمة:

PS D:\ServiceFabric> Get-ServiceFabricPartition fabric:/WordCount/WordCountService | Get-ServiceFabricReplica | where {$_.ReplicaRole -eq "Primary"} | Get-ServiceFabricReplicaHealth


PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
ReplicaId             : 131444422260002646
AggregatedHealthState : Ok
HealthEvents          : 
                        SourceId              : System.RA
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 131444422263668344
                        SentAt                : 7/13/2017 5:57:06 PM
                        ReceivedAt            : 7/13/2017 5:57:18 PM
                        TTL                   : Infinite
                        Description           : Replica has been created._Node_2
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

REST

يمكنك التعرف على حالة حماية النسخ المتماثلة من خلال طلب GET أو طلب POST الذي يتضمن سياسات الحماية الموضحة في النص.

تعرّف على حالة حماية التطبيقات المنشورة

إرجاع حالة التطبيق الذي تم نشره على كيان العُقدة. إنه يتضمن حالات الحماية لحزمة الخدمة المنشورة. إدخال:

  • [مطلوب] اسم التطبيق (URI) واسم العُقدة (سلسلة) التي تحدد التطبيق الذي تم نشره.
  • [اختياري] سياسة حماية التطبيق المستخدمة لتجاوز سياسات بيان التطبيق.
  • [اختياري] عوامل تصفية للأحداث، والخدمات، وحزم الخدمات المنشورة التي تُحدد الإدخالات ذات الأهمية ويتعين إرجاعها في النتيجة (على سبيل المثال، الأخطاء فقط، أو كل من التحذيرات والأخطاء). يتم استخدام جميع الأحداث وحزم الخدمات المنشورة لتقييم حالة الحماية المُجمّعة للكيان، بغض النظر عن عامل التصفية.
  • [اختياري] التصفية لاستبعاد الإحصاءات السليمة. إذا لم يتم تحديدها، فستعرض إحصاءات الحماية عدد حزم الخدمات المنشورة في حالات الموافقات، والتحذيرات، والأخطاء.

واجهة برمجة التطبيقات (API)

للتعرّف على حالة التطبيق الذي تم نشره على العقدة من خلال واجهة برمجة التطبيقات، قم بإنشاءFabricClient واستدعاء طريقة GetDeployedApplicationHealthAsync من HealthManager الخاص به. لتحديد المعلمات الاختيارية، استخدم DeployedApplicationHealthQueryDescription.

DeployedApplicationHealth health = await fabricClient.HealthManager.GetDeployedApplicationHealthAsync(
    new DeployedApplicationHealthQueryDescription(applicationName, nodeName));

PowerShell

إن الـ cmdlet المُستخدم لمعرفة حماية التطبيق المنشور هو Get-ServiceFabricDeployedApplicationHealth. أولاً، قم بالاتصال بنظام المجموعة باستخدام Connect-ServiceFabricCluster cmdlet. لمعرفة مكان نشر تطبيق، قم بتشغيل Get-ServiceFabricApplicationHealth وأنظر إلى العناصر الفرعية للتطبيق التي تم نشرها.

يتعرّف الـ cmdlet التالي على حالة التطبيق fabric:/WordCount الذي تم نشره على _Node_2.

PS D:\ServiceFabric> Get-ServiceFabricDeployedApplicationHealth -ApplicationName fabric:/WordCount -NodeName _Node_0


ApplicationName                    : fabric:/WordCount
NodeName                           : _Node_0
AggregatedHealthState              : Ok
DeployedServicePackageHealthStates : 
                                     ServiceManifestName   : WordCountServicePkg
                                     ServicePackageActivationId : 
                                     NodeName              : _Node_0
                                     AggregatedHealthState : Ok

                                     ServiceManifestName   : WordCountWebServicePkg
                                     ServicePackageActivationId : 
                                     NodeName              : _Node_0
                                     AggregatedHealthState : Ok

HealthEvents                       : 
                                     SourceId              : System.Hosting
                                     Property              : Activation
                                     HealthState           : Ok
                                     SequenceNumber        : 131444422261848308
                                     SentAt                : 7/13/2017 5:57:06 PM
                                     ReceivedAt            : 7/13/2017 5:57:17 PM
                                     TTL                   : Infinite
                                     Description           : The application was activated successfully.
                                     RemoveWhenExpired     : False
                                     IsExpired             : False
                                     Transitions           : Error->Ok = 7/13/2017 5:57:17 PM, LastWarning = 1/1/0001 12:00:00 AM

HealthStatistics                   : 
                                     DeployedServicePackage : 2 Ok, 0 Warning, 0 Error

REST

يمكنك التعرف على حالة حماية التطبيق المنشور من خلال طلب GET أو طلب POST الذي يتضمن سياسات الحماية الموضحة في النص.

تعرّف على حالة حماية حزمة الخدمات المنشورة

ترجع حالة حماية لكيان حزمة الخدمات المنشورة. إدخال:

  • [مطلوب] اسم التطبيق (URI)، واسم العُقدة (السلسلة)، واسم بيان الخدمة (السلسلة)، التي تُحدّد حزمة الخدمات التي تم نشرها.
  • [اختياري] سياسة حماية التطبيق المستخدمة لتجاوز سياسات بيان التطبيق.
  • [اختياري] عوامل تصفية الأحداث التي تحدد الإدخالات ذات الأهمية ويجب إرجاعها في النتيجة (على سبيل المثال، الأخطاء فقط، أو كل من التحذيرات والأخطاء). يتم استخدام جميع الأحداث لتقييم حالة الحماية المُجمّعة للكيان، بغض النظر عن عامل التصفية.

واجهة برمجة التطبيقات (API)

لمعرفة حالة حماية حزمة الخدمات المنشورة من خلال واجهة برمجة التطبيقات، قم بإنشاء FabricClient واستدعاء أسلوب GetDeployedServicePackageHealthAsync من HealthManager الخاص به. لتحديد المعلمات الاختيارية، استخدم DeployedServicePackageHealthQueryDescription.

DeployedServicePackageHealth health = await fabricClient.HealthManager.GetDeployedServicePackageHealthAsync(
    new DeployedServicePackageHealthQueryDescription(applicationName, nodeName, serviceManifestName));

PowerShell

إن الـ cmdlet المستخدم للحصول على حالة حماية حزمة الخدمات المنشورة هي Get-ServiceFabricDeployedServicePackageHealth. أولاً، قم بالاتصال بنظام المجموعة باستخدام Connect-ServiceFabricCluster cmdlet. لمعرفة مكان نشر تطبيق، قم بتشغيل Get-ServiceFabricApplicationHealth وأنظر في التطبيقات التي تم نشرها. لمعرفة أي حزم الخدمات الموجودة في التطبيق، راجع العناصر الفرعية لحزمة الخدمات التي تم نشرها في إخراج Get-ServiceFabricDeployedApplicationHealth.

يحصل الـ cmdlet التالي على حالة حزمة خدمة WordCountServicePkg الخاصة بتطبيق fabric:/WordCount الذي تم نشره على _Node_2. لدى الكيان تقارير System.Hosting لتنشيط حزمة الخدمة ونقطة الدخول بنجاح، والتسجيل نوع الخدمة بنجاح.

PS D:\ServiceFabric> Get-ServiceFabricDeployedApplication -ApplicationName fabric:/WordCount -NodeName _Node_2 | Get-ServiceFabricDeployedServicePackageHealth -ServiceManifestName WordCountServicePkg


ApplicationName            : fabric:/WordCount
ServiceManifestName        : WordCountServicePkg
ServicePackageActivationId : 
NodeName                   : _Node_2
AggregatedHealthState      : Ok
HealthEvents               : 
                             SourceId              : System.Hosting
                             Property              : Activation
                             HealthState           : Ok
                             SequenceNumber        : 131444422267693359
                             SentAt                : 7/13/2017 5:57:06 PM
                             ReceivedAt            : 7/13/2017 5:57:18 PM
                             TTL                   : Infinite
                             Description           : The ServicePackage was activated successfully.
                             RemoveWhenExpired     : False
                             IsExpired             : False
                             Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

                             SourceId              : System.Hosting
                             Property              : CodePackageActivation:Code:EntryPoint
                             HealthState           : Ok
                             SequenceNumber        : 131444422267903345
                             SentAt                : 7/13/2017 5:57:06 PM
                             ReceivedAt            : 7/13/2017 5:57:18 PM
                             TTL                   : Infinite
                             Description           : The CodePackage was activated successfully.
                             RemoveWhenExpired     : False
                             IsExpired             : False
                             Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

                             SourceId              : System.Hosting
                             Property              : ServiceTypeRegistration:WordCountServiceType
                             HealthState           : Ok
                             SequenceNumber        : 131444422272458374
                             SentAt                : 7/13/2017 5:57:07 PM
                             ReceivedAt            : 7/13/2017 5:57:18 PM
                             TTL                   : Infinite
                             Description           : The ServiceType was registered successfully.
                             RemoveWhenExpired     : False
                             IsExpired             : False
                             Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

REST

يمكنك الحصول على حالة حماية حزمة الخدمات المنشور من خلال طلب GET أو طلب POST الذي يتضمن سياسات الحماية الموضحة في النص.

استعلامات عن مجموعة الحماية

يمكن للاستعلامات عن مجموعة الحماية إرجاع العناصر الفرعية لنظام المجموعة مُتعددة المستويات (بشكل متكرر)، حسب عوامل تصفية الإدخال. وهو يدعم عوامل التصفية المتقدمة التي تسمح بالكثير من المرونة في اختيار العناصر الفرعية التي يتم إرجاعهم. يمكن لعوامل التصفية تحديد العناصر الفرعية بواسطة المُعرّف الفريد أو بواسطة معرّفات المجموعة الأخرى وحالات الحماية أو أيهما. بشكل افتراضي، لا يتم تضمين أي عناصر فرعية، على عكس أوامر الحماية التي تتضمن دائمًا العناصر الفرعية من المستوى الأول.

تقوم الاستعلامات الحماية بإرجاع العناصر الفرعية من المستوى الأول فقط للكيان المحدد حسب عوامل التصفية المطلوبة. للحصول على العناصر الفرعية للعناصر الفرعية، يجب عليك استدعاء واجهات برمجة التطبيقات الإضافية السليمة لكل كيان ذي أهمية. وعلى غرار ذلك، للحصول على حالة الحماية للكيانات معينة، يجب عليك استدعاء واجهة برمجة تطبيقات واحدة سليمة لكل كيان مطلوب. تتيح لك التصفية المتقدمة للاستعلام عن المجموعة طلب عناصر متعددة ذات أهمية في الاستعلام الواحد، مما يقلل من حجم الرسالة وعدد الرسائل.

تتمثل قيمة استعلام المجموعة في أنه يمكنك معرفة حالة الحماية لمزيد من كيانات المجموعة (من المحتمل أن تكون جميع كيانات الكتلة التي تبدأ من الجذر المطلوب) في استدعاء واحد. يمكنك التعبير عن الاستعلام المعقد عن حماية مثل:

  • إرجاع التطبيقات الخاطئة فقط، وبالنسبة لهذه التطبيقات قم بتضمين جميع الخدمات في حالة تحذير أو خطأ. بالنسبة للخدمات المرتجعة، قم بتضمين جميع الأقسام.
  • إرجاع حالة أربعة تطبيقات فقط، مُحددة بأسمائهم.
  • إرجاع حالة التطبيقات من نوع التطبيق المطلوب فقط.
  • إرجاع جميع الكيانات المنشورة على العقدة. إرجاع جميع التطبيقات، وجميع التطبيقات المنشورة على العُقدة المُحدّدة وجميع حزم الخدمات المنشورة على تلك العُقدة.
  • إرجاع جميع النسخ المتماثلة في حالة خطأ. إرجاع جميع التطبيقات، والخدمات، والأقسام، والنسخ المتماثلة في حالة خطأ فقط.
  • إرجاع جميع التطبيقات. بالنسبة للخدمة المُحدّدة، قم بتضمين جميع الأقسام.

حاليًا، يتم الكشف فقط عن الاستعلام عن مجموعة الحماية لكيان نظام المجموعة. تُرجِع مجموعة حالة الكتلة، التي تحتوي على:

  • حالة الحماية المُجمّعة لنظام المجموعة.
  • قائمة مجموعة الحماية للعُقد التي تراعي عوامل تصفية الإدخال.
  • قائمة مجموعة الحماية للتطبيقات التي تراعي عوامل تصفية الإدخال. تحتوي كل مجموعة من مجموعات الحماية للتطبيق على قائمة مجموعات تحتوي على جميع الخدمات التي تراعي عوامل تصفية الإدخال وقائمة مجموعات تتضمن جميع التطبيقات المنشورة التي تراعي عوامل التصفية. ينطبق الشيء نفسه على العناصر الفرعية للخدمات والتطبيقات المنشورة. وبهذه الطريقة، يحتمل إرجاع جميع الكيانات في المجموعة إذا طُلب منها ذلك، على شكل هرمي.

الاستعلام عن مجموعة حماية الكتلة

تُرجع حماية كيان المجموعة وتحتوي على مجموعة الحماية الهرمية للعناصر الفرعية المطلوبة. إدخال:

  • [اختياري] تُستخدم سياسة حماية نظام المجموعة لتقييم العُقد وأحداث نظام المجموعة.
  • [اختياري] مخطط سياسة الصحة للتطبيق، مع استخدام سياسات الصحة لتجاوز سياسات بيان التطبيق.
  • [اختياري] عوامل تصفية العُقد والتطبيقات التي تحدد الإدخالات ذات الأهمية ويجب إرجاعها في النتيجة. وتكون عوامل التصفية خاصة بالكيان/مجموعة من الكيانات أو تنطبق على جميع الكيانات على هذا المستوى. يمكن أن تحتوي قائمة عوامل التصفية على عامل تصفية واحد عام و/أو عوامل تصفية لمعرفات محددة لكيانات دقيقة يتم إرجاعها بواسطة الاستعلام. إذا كانت فارغة، فلن يتم إرجاع العناصر الفرعية بشكل افتراضي. أقرأ المزيد حول عوامل التصفية في NodeHealthStateFilter و ApplicationHealthStateFilter. يمكن لعوامل تصفية التطبيق تحديد عوامل تصفية متقدمة للعناصر الفرعية بشكل متكرر.

تتضمن نتيجة المجموعة العناصر الفرعية التي تراعي عوامل التصفية.

حاليًا، لا يرجع الاستعلام عن المجموعة تقييمات غير سليمة أو أحداث الكيان. يمكن الحصول على هذه المعلومات الإضافية باستخدام الاستعلام الحالي عن حماية المجموعة.

واجهة برمجة التطبيقات (API)

لمعرفة حالة المجموعة، قم بإنشاء FabricClient واستدعاء أسلوب GetClusterHealthChunkAsync على HealthManagerالخاص به. يمكنك تمرير ClusterHealthQueryDescription لوصف سياسات الحماية وعوامل التصفية المتقدمة.

تحصل التعليمة البرمجية التالية على مجموعة الحماية لنظام المجموعة باستخدام عوامل تصفية متقدمة.

var queryDescription = new ClusterHealthChunkQueryDescription();
queryDescription.ApplicationFilters.Add(new ApplicationHealthStateFilter()
    {
        // Return applications only if they are in error
        HealthStateFilter = HealthStateFilter.Error
    });

// Return all replicas
var wordCountServiceReplicaFilter = new ReplicaHealthStateFilter()
    {
        HealthStateFilter = HealthStateFilter.All
    };

// Return all replicas and all partitions
var wordCountServicePartitionFilter = new PartitionHealthStateFilter()
    {
        HealthStateFilter = HealthStateFilter.All
    };
wordCountServicePartitionFilter.ReplicaFilters.Add(wordCountServiceReplicaFilter);

// For specific service, return all partitions and all replicas
var wordCountServiceFilter = new ServiceHealthStateFilter()
{
    ServiceNameFilter = new Uri("fabric:/WordCount/WordCountService"),
};
wordCountServiceFilter.PartitionFilters.Add(wordCountServicePartitionFilter);

// Application filter: for specific application, return no services except the ones of interest
var wordCountApplicationFilter = new ApplicationHealthStateFilter()
    {
        // Always return fabric:/WordCount application
        ApplicationNameFilter = new Uri("fabric:/WordCount"),
    };
wordCountApplicationFilter.ServiceFilters.Add(wordCountServiceFilter);

queryDescription.ApplicationFilters.Add(wordCountApplicationFilter);

var result = await fabricClient.HealthManager.GetClusterHealthChunkAsync(queryDescription);

PowerShell

إن الـ cmdlet المستخدم للحصول على حماية نظام المجموعة هو Get-ServiceFabricClusterChunkHealth. أولاً، قم بالاتصال بنظام المجموعة باستخدام Connect-ServiceFabricCluster cmdlet.

تحصل التعليمة البرمجية التالية على العُقد فقط إذا كانت في حالة خطأ باستثناء عقدة معينة، التي يتعين إرجاعها دائمًا.

PS D:\ServiceFabric> $errorFilter = [System.Fabric.Health.HealthStateFilter]::Error;
$allFilter = [System.Fabric.Health.HealthStateFilter]::All;

$nodeFilter1 = New-Object System.Fabric.Health.NodeHealthStateFilter -Property @{HealthStateFilter=$errorFilter}
$nodeFilter2 = New-Object System.Fabric.Health.NodeHealthStateFilter -Property @{NodeNameFilter="_Node_1";HealthStateFilter=$allFilter}
# Create node filter list that will be passed in the cmdlet
$nodeFilters = New-Object System.Collections.Generic.List[System.Fabric.Health.NodeHealthStateFilter]
$nodeFilters.Add($nodeFilter1)
$nodeFilters.Add($nodeFilter2)

Get-ServiceFabricClusterHealthChunk -NodeFilters $nodeFilters


HealthState                  : Warning
NodeHealthStateChunks        : 
                               TotalCount            : 1

                               NodeName              : _Node_1
                               HealthState           : Ok

ApplicationHealthStateChunks : None

يحصل الـ cmdlet التالي على مجموعة الكتل باستخدام عوامل تصفية التطبيق.

PS D:\ServiceFabric> $errorFilter = [System.Fabric.Health.HealthStateFilter]::Error;
$allFilter = [System.Fabric.Health.HealthStateFilter]::All;

# All replicas
$replicaFilter = New-Object System.Fabric.Health.ReplicaHealthStateFilter -Property @{HealthStateFilter=$allFilter}

# All partitions
$partitionFilter = New-Object System.Fabric.Health.PartitionHealthStateFilter -Property @{HealthStateFilter=$allFilter}
$partitionFilter.ReplicaFilters.Add($replicaFilter)

# For WordCountService, return all partitions and all replicas
$svcFilter1 = New-Object System.Fabric.Health.ServiceHealthStateFilter -Property @{ServiceNameFilter="fabric:/WordCount/WordCountService"}
$svcFilter1.PartitionFilters.Add($partitionFilter)

$svcFilter2 = New-Object System.Fabric.Health.ServiceHealthStateFilter -Property @{HealthStateFilter=$errorFilter}

$appFilter = New-Object System.Fabric.Health.ApplicationHealthStateFilter -Property @{ApplicationNameFilter="fabric:/WordCount"}
$appFilter.ServiceFilters.Add($svcFilter1)
$appFilter.ServiceFilters.Add($svcFilter2)

$appFilters = New-Object System.Collections.Generic.List[System.Fabric.Health.ApplicationHealthStateFilter]
$appFilters.Add($appFilter)

Get-ServiceFabricClusterHealthChunk -ApplicationFilters $appFilters


HealthState                  : Error
NodeHealthStateChunks        : None
ApplicationHealthStateChunks : 
                               TotalCount            : 1

                               ApplicationName       : fabric:/WordCount
                               ApplicationTypeName   : WordCount
                               HealthState           : Error
                               ServiceHealthStateChunks : 
                                TotalCount            : 1

                                ServiceName           : fabric:/WordCount/WordCountService
                                HealthState           : Error
                                PartitionHealthStateChunks : 
                                    TotalCount            : 1

                                    PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
                                    HealthState           : Error
                                    ReplicaHealthStateChunks : 
                                        TotalCount            : 5

                                        ReplicaOrInstanceId   : 131444422293118720
                                        HealthState           : Ok

                                        ReplicaOrInstanceId   : 131444422293118721
                                        HealthState           : Ok

                                        ReplicaOrInstanceId   : 131444422293113678
                                        HealthState           : Ok

                                        ReplicaOrInstanceId   : 131444422293113679
                                        HealthState           : Ok

                                        ReplicaOrInstanceId   : 131444422260002646
                                        HealthState           : Error

ترجع الـ cmdlet التالية جميع الكيانات المنشورة على العُقدة.

PS D:\ServiceFabric> $errorFilter = [System.Fabric.Health.HealthStateFilter]::Error;
$allFilter = [System.Fabric.Health.HealthStateFilter]::All;

$dspFilter = New-Object System.Fabric.Health.DeployedServicePackageHealthStateFilter -Property @{HealthStateFilter=$allFilter}
$daFilter =  New-Object System.Fabric.Health.DeployedApplicationHealthStateFilter -Property @{HealthStateFilter=$allFilter;NodeNameFilter="_Node_2"}
$daFilter.DeployedServicePackageFilters.Add($dspFilter)

$appFilter = New-Object System.Fabric.Health.ApplicationHealthStateFilter -Property @{HealthStateFilter=$allFilter}
$appFilter.DeployedApplicationFilters.Add($daFilter)

$appFilters = New-Object System.Collections.Generic.List[System.Fabric.Health.ApplicationHealthStateFilter]
$appFilters.Add($appFilter)
Get-ServiceFabricClusterHealthChunk -ApplicationFilters $appFilters


HealthState                  : Error
NodeHealthStateChunks        : None
ApplicationHealthStateChunks : 
                               TotalCount            : 2

                               ApplicationName       : fabric:/System
                               HealthState           : Ok
                               DeployedApplicationHealthStateChunks : 
                                TotalCount            : 1

                                NodeName              : _Node_2
                                HealthState           : Ok
                                DeployedServicePackageHealthStateChunks :
                                    TotalCount            : 1

                                    ServiceManifestName   : FAS
                                    ServicePackageActivationId : 
                                    HealthState           : Ok



                               ApplicationName       : fabric:/WordCount
                               ApplicationTypeName   : WordCount
                               HealthState           : Error
                               DeployedApplicationHealthStateChunks : 
                                TotalCount            : 1

                                NodeName              : _Node_2
                                HealthState           : Ok
                                DeployedServicePackageHealthStateChunks :
                                    TotalCount            : 1

                                    ServiceManifestName   : WordCountServicePkg
                                    ServicePackageActivationId : 
                                    HealthState           : Ok

REST

يمكنك معرفة مجموعة حماية الكتلة من خلال طلب GET أو طلب POST الذي يتضمن سياسات الحماية الموضحة في النص.

الاستعلامات العامة

تُرجع الاستعلامات العامة قائمة بكيانات تصميم الخدمة من نوعٍ مُحدّد. يتم كشفها من خلال واجهة برمجة التطبيقات (عبر الطرق الموجودة على FabricClient.QueryManager)، و PowerShell cmdlets، و REST. تقوم هذه الاستعلامات بتجميع الاستعلامات الفرعية من مكونات متعددة. إحداها هو المتجر الصحي، الذي يقوم بتعبئة حالة الحماية المُجمّعة لكل نتيجة من نتائج الاستعلام.

ملاحظة

تُرجع الاستعلامات العامة حالة الحماية المُجمّعة للكيان ولا تحتوي على بيانات سليمة منسقة. إذا لم يكن الكيان سليم، يمكنك متابعة استعلامات الحماية للحصول على جميع معلوماته السليمة، بما في ذلك الأحداث، وحالات حماية العناصر الفرعية، والتقييمات غير السليمة.

إذا كانت الاستعلامات العامة تُرجع حالة حماية غير معروفة للكيان، فمن المحتمل ألا يحتوي متجر الحماية على بيانات كاملة حول الكيان. من المحتمل أيضًا أن الاستعلام الفرعي عن متجر الحماية لم يكن ناجحًا (على سبيل المثال، حدث خطأ في الاتصال، أو تم تقييد متجر الحماية). متابعة استعلام الحماية للكيان. إذا واجه الاستعلام الفرعي أخطاء عابرة، مثل مشكلات الشبكة، فقد ينجح استعلام المتابعة. قد يمنحك أيضًا المزيد من التفاصيل من متجر الحماية حول سبب عدم كشف الكيان.

الاستعلامات التي تحتوي على HealthState للكيانات هي:

ملاحظة

ترجع بعض الاستعلامات النتائج المصنفة في الصفحات. تُرجع هذه الاستعلامات قائمة مشتقة من PagedListT<T>. إذا كانت النتائج لا تتناسب مع رسالة، يتم إرجاع صفحة فقط وسلسلة ContinuationToken الذي يتتبع مكان توقف قائمة التعداد. استمر في استدعاء الاستعلام نفسه ومرّر الرمز المميز للاستمرار من الاستعلام السابق للحصول على النتائج التالية.

أمثلة

تتعرف التعليمة البرمجية التالية على التطبيقات غير السليمة في نظام المجموعة:

var applications = fabricClient.QueryManager.GetApplicationListAsync().Result.Where(
  app => app.HealthState == HealthState.Error);

يحصل الـ cmdlet التالي على تفاصيل التطبيق الخاصة بتطبيق fabric:/WordCount. لاحظ أن الحالة الحماية في حالة تحذير.

PS C:\> Get-ServiceFabricApplication -ApplicationName fabric:/WordCount

ApplicationName        : fabric:/WordCount
ApplicationTypeName    : WordCount
ApplicationTypeVersion : 1.0.0
ApplicationStatus      : Ready
HealthState            : Warning
ApplicationParameters  : { "WordCountWebService_InstanceCount" = "1";
                         "_WFDebugParams_" = "[{"ServiceManifestName":"WordCountWebServicePkg","CodePackageName":"Code","EntryPointType":"Main","Debug
                         ExePath":"C:\\Program Files (x86)\\Microsoft Visual Studio
                         14.0\\Common7\\Packages\\Debugger\\VsDebugLaunchNotify.exe","DebugArguments":" {74f7e5d5-71a9-47e2-a8cd-1878ec4734f1} -p
                         [ProcessId] -tid [ThreadId]","EnvironmentBlock":"_NO_DEBUG_HEAP=1\u0000"},{"ServiceManifestName":"WordCountServicePkg","CodeP
                         ackageName":"Code","EntryPointType":"Main","DebugExePath":"C:\\Program Files (x86)\\Microsoft Visual Studio
                         14.0\\Common7\\Packages\\Debugger\\VsDebugLaunchNotify.exe","DebugArguments":" {2ab462e6-e0d1-4fda-a844-972f561fe751} -p
                         [ProcessId] -tid [ThreadId]","EnvironmentBlock":"_NO_DEBUG_HEAP=1\u0000"}]" }

يحصل الـ cmdlet التالي على الخدمات التي في حالة خطأ:

PS D:\ServiceFabric> Get-ServiceFabricApplication | Get-ServiceFabricService | where {$_.HealthState -eq "Error"}


ServiceName            : fabric:/WordCount/WordCountService
ServiceKind            : Stateful
ServiceTypeName        : WordCountServiceType
IsServiceGroup         : False
ServiceManifestVersion : 1.0.0
HasPersistedState      : True
ServiceStatus          : Active
HealthState            : Error

ترقيات نظام المجموعة والتطبيقات

أثناء الترقية المراقِبة للمجموعة والتطبيق، تتحقق Service Fabric من الحماية لضمان بقاء كل شيء سليم. إذا كان الكيان غير سليم كما تم تقييمه باستخدام سياسات الحماية التي تم تكوينها، تُطبّق الترقية سياسات خاصة بالترقية لتحديد الإجراء التالي. قد يتم إيقاف الترقية مؤقتًا للسماح بتفاعل المستخدم (مثل إصلاح شروط الخطأ أو تغيير السياسات)، أو قد تعود تلقائيًا إلى الإصدار السابق الجيد.

أثناء ترقية نظام المجموعة، يمكنك الحصول على حالة ترقية نظام المجموعة. تتضمن حالة الترقية تقييمات غير سليمة، وتشير إلى ما هو غير سليم في نظام المجموعة. إذا تم التراجع عن الترقية بسبب مشاكل في الحماية، فإن حالة الترقية تتذكر آخر الأسباب غير السليمة. يمكن أن تساعد هذه المعلومات المسؤولين في التحقيق في الخطأ الذي حدث بعد تراجع الترقية أو توقفها.

وبالمثل، أثناء ترقية التطبيق، يتم تضمين أي تقييمات غير سليمة في حالة ترقية التطبيق.

يوضح ما يلي حالة ترقية تطبيق fabric:/WordCount المُعدّل. أبلغت هيئة الرقابة عن خطأ في إحدى النسخ المتماثلة. يتم التراجع عن الترقية بسبب عدم مراعاة فحوصات الحماية.

PS C:\> Get-ServiceFabricApplicationUpgrade fabric:/WordCount

ApplicationName               : fabric:/WordCount
ApplicationTypeName           : WordCount
TargetApplicationTypeVersion  : 1.0.0.0
ApplicationParameters         : {}
StartTimestampUtc             : 4/21/2017 5:23:26 PM
FailureTimestampUtc           : 4/21/2017 5:23:37 PM
FailureReason                 : HealthCheck
UpgradeState                  : RollingBackInProgress
UpgradeDuration               : 00:00:23
CurrentUpgradeDomainDuration  : 00:00:00
CurrentUpgradeDomainProgress  : UD1

                                NodeName            : _Node_1
                                UpgradePhase        : Upgrading

                                NodeName            : _Node_2
                                UpgradePhase        : Upgrading

                                NodeName            : _Node_3
                                UpgradePhase        : PreUpgradeSafetyCheck
                                PendingSafetyChecks :
                                EnsurePartitionQuorum - PartitionId: 30db5be6-4e20-4698-8185-4bd7ca744020
NextUpgradeDomain             : UD2
UpgradeDomainsStatus          : { "UD1" = "Completed";
                                "UD2" = "Pending";
                                "UD3" = "Pending";
                                "UD4" = "Pending" }
UnhealthyEvaluations          :
                                Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                                  Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Error'.

                                      Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                      Unhealthy partition: PartitionId='a1f83a35-d6bf-4d39-b90d-28d15f39599b', AggregatedHealthState='Error'.

                                          Unhealthy replicas: 20% (1/5), MaxPercentUnhealthyReplicasPerPartition=0%.

                                          Unhealthy replica: PartitionId='a1f83a35-d6bf-4d39-b90d-28d15f39599b',
                                  ReplicaOrInstanceId='131031502346844058', AggregatedHealthState='Error'.

                                              Error event: SourceId='DiskWatcher', Property='Disk'.

UpgradeKind                   : Rolling
RollingUpgradeMode            : UnmonitoredAuto
ForceRestart                  : False
UpgradeReplicaSetCheckTimeout : 00:15:00

أقرأ المزيد حول ترقية تطبيق Service Fabric.

استخدام تقييمات الحماية لاستكشاف الأخطاء وإصلاحها

كلما كانت هناك مشكلة في نظام المجموعة أو أحد التطبيقات، أنظر إلى حالة المجموعة أو التطبيق لتحديد الخطأ. تُقدّم التقييمات غير السليمة تفاصيل حول سبب الحالة غير السليمة. إذا كنت بحاجة إلى ذلك، يمكنك التعمق في الكيانات الفرعية غير السليمة لتحديد السبب الجذري.

على سبيل المثال، فكّر في تطبيقٍ غير سليم نظرًا لوجود تقرير بخطأ في أحد النسخ المتماثلة الخاصة به. يوضح cmdlet PowerShell التالي التقييمات غير السليمة:

PS D:\ServiceFabric> Get-ServiceFabricApplicationHealth fabric:/WordCount -EventsFilter None -ServicesFilter None -DeployedApplicationsFilter None -ExcludeHealthStatistics


ApplicationName                 : fabric:/WordCount
AggregatedHealthState           : Error
UnhealthyEvaluations            : 
                                  Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                                  Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Error'.

                                    Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                    Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Error'.

                                        Unhealthy replicas: 20% (1/5), MaxPercentUnhealthyReplicasPerPartition=0%.

                                        Unhealthy replica: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', ReplicaOrInstanceId='131444422260002646', AggregatedHealthState='Error'.

                                            Error event: SourceId='MyWatchdog', Property='Memory'.

ServiceHealthStates             : None
DeployedApplicationHealthStates : None
HealthEvents                    : None

يمكنك الاطلاع على النسخة المتماثلة للحصول على مزيد من المعلومات:

PS D:\ServiceFabric> Get-ServiceFabricReplicaHealth -ReplicaOrInstanceId 131444422260002646 -PartitionId af2e3e44-a8f8-45ac-9f31-4093eb897600


PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
ReplicaId             : 131444422260002646
AggregatedHealthState : Error
UnhealthyEvaluations  : 
                        Error event: SourceId='MyWatchdog', Property='Memory'.

HealthEvents          : 
                        SourceId              : System.RA
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 131444422263668344
                        SentAt                : 7/13/2017 5:57:06 PM
                        ReceivedAt            : 7/13/2017 5:57:18 PM
                        TTL                   : Infinite
                        Description           : Replica has been created._Node_2
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

                        SourceId              : MyWatchdog
                        Property              : Memory
                        HealthState           : Error
                        SequenceNumber        : 131444451657749403
                        SentAt                : 7/13/2017 6:46:05 PM
                        ReceivedAt            : 7/13/2017 6:46:05 PM
                        TTL                   : Infinite
                        Description           : 
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Warning->Error = 7/13/2017 6:46:05 PM, LastOk = 1/1/0001 12:00:00 AM

ملاحظة

تُظهر التقييمات غير السليمة السبب الأول لنتيجة تقييم الكيان في حالة الحماية الحالية. قد تكون هناك العديد من الأحداث الأخرى التي تؤدي إلى هذه الحالة، لكنها لا تظهر في التقييمات. للحصول على مزيد من المعلومات، انتقل إلى الكيانات السليمة لمعرفة جميع التقارير غير السليمة في نظام المجموعة.

الخطوات التالية

استخدام تقارير حماية النظام لاستكشاف الأخطاء وإصلاحها

إضافة تقارير مخصصة لحماية «تصميم الخدمة»

كيفية الإبلاغ عن حالة الخدمة والتحقق منها

مراقبة الخدمات وتشخصها داخليًا

ترقية تطبيق Service Fabric