Aracılığıyla paylaş


Service Fabric sistem durumu raporlarını görüntüleme

Azure Service Fabric, sistem bileşenlerinin ve watchdog'ların izledikleri yerel koşulları bildirebileceği sistem durumu varlıklarına sahip bir sistem durumu modeli sunar. Sistem durumu deposu , varlıkların iyi durumda olup olmadığını belirlemek için tüm sistem durumu verilerini toplar.

Küme, sistem bileşenleri tarafından gönderilen sistem durumu raporlarıyla otomatik olarak doldurulur. Daha fazla bilgi için bkz . Sistem durumu raporlarını kullanarak sorun giderme.

Service Fabric, varlıkların toplu durumunu almak için birden çok yol sağlar:

  • Service Fabric Explorer veya diğer görselleştirme araçları
  • Sistem durumu sorguları (PowerShell, API veya REST aracılığıyla)
  • Özelliklerden biri olarak sistem durumuna sahip varlıkların listesini döndüren genel sorgular (PowerShell, API veya REST aracılığıyla)

Bu seçenekleri göstermek için beş düğüme ve fabric:/WordCount uygulamasına sahip bir yerel küme kullanalım. fabric:/WordCount uygulaması iki varsayılan hizmet içerir: türünde durum bilgisi olan bir hizmet WordCountServiceTypeve türünde WordCountWebServiceTypedurum bilgisi olmayan bir hizmet. durum bilgisi olan hizmet ve bir bölüm için yedi hedef çoğaltma gerektirecek şekilde öğesini değiştirdim ApplicationManifest.xml . Kümede yalnızca beş düğüm olduğundan, sistem bileşenleri hizmet bölümünde hedef sayısının altında olduğundan bir uyarı bildirir.

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

Service Fabric Explorer'da Sistem Durumu

Service Fabric Explorer, kümenin görsel bir görünümünü sağlar. Aşağıdaki resimde şunları görebilirsiniz:

  • Application Fabric:/WordCount kırmızıdır (hatalıdır), çünkü MyWatchdog tarafından Kullanılabilirlik özelliği için bildirilen bir hata olayı vardır.
  • Hizmetlerinden biri olan fabric:/WordCount/WordCountService sarıdır (uyarı olarak). Hizmet yedi çoğaltmayla yapılandırılır ve küme beş düğüme sahiptir, bu nedenle iki çoğaltma yerleştirilemiyor. Burada gösterilmese de, sistem raporunun System.FM bunu söylemesinden Partition is below target replica or instance countdolayı hizmet bölümü sarıdır. Sarı bölüm, sarı hizmeti tetikler.
  • Kırmızı uygulama nedeniyle küme kırmızıdır.

Değerlendirme, küme bildiriminden ve uygulama bildiriminden varsayılan ilkeleri kullanır. Katı ilkelerdir ve herhangi bir hataya tolerans göstermezler.

Service Fabric Explorer ile kümenin görünümü:

Service Fabric Explorer ile kümenin görünümü.

Not

Service Fabric Explorer hakkında daha fazla bilgi edinin.

Sistem durumu sorguları

Service Fabric, desteklenen varlık türlerinin her biri için sistem durumu sorgularını kullanıma sunar. Bunlara FabricClient.HealthManager, PowerShell cmdlet'leri ve REST yöntemleri kullanılarak API aracılığıyla erişilebilir. Bu sorgular varlık hakkındaki tüm sistem durumu bilgilerini döndürür: toplanmış sistem durumu, varlık durumu olayları, alt sistem durumu durumları (uygun olduğunda), iyi durumda olmayan değerlendirmeler (varlık sağlıklı olmadığında) ve alt sistem durumu istatistikleri (uygun olduğunda).

Not

Sistem durumu deposuna tam olarak doldurulduğunda bir sistem durumu varlığı döndürülür. Varlık etkin (silinmemiş) ve bir sistem raporuna sahip olmalıdır. Hiyerarşi zincirindeki üst varlıklarının da sistem raporları olmalıdır. Bu koşullardan herhangi biri karşılanmazsa sistem durumu sorguları, varlığın neden döndürülmediğini gösteren FabricErrorCode FabricHealthEntityNotFound ile bir FabricException döndürür.

Durum sorgularının varlık türüne bağlı olarak varlık tanımlayıcısını geçirmesi gerekir. Sorgular isteğe bağlı sistem durumu ilkesi parametrelerini kabul eder. Sistem durumu ilkeleri belirtilmezse, değerlendirme için kümeden veya uygulama bildiriminden sistem durumu ilkeleri kullanılır. Bildirimler sistem durumu ilkeleri için bir tanım içermiyorsa, değerlendirme için varsayılan sistem durumu ilkeleri kullanılır. Varsayılan sistem durumu ilkeleri hiçbir hataya tolerans göstermez. Sorgular, belirtilen filtrelere uygun olan yalnızca kısmi alt öğeleri veya olayları döndürme filtrelerini de kabul eder. Başka bir filtre alt istatistiklerin dışlanmasını sağlar.

Not

Çıkış filtreleri sunucu tarafına uygulanır, bu nedenle ileti yanıt boyutu azalır. İstemci tarafına filtre uygulamak yerine döndürülen verileri sınırlamak için çıkış filtrelerini kullanmanızı öneririz.

Bir varlığın sistem durumu şu içeriği içerir:

  • Varlığın toplu sistem durumu. Varlık durumu raporlarına, alt sistem durumu durumlarına (uygun olduğunda) ve sistem durumu ilkelerine göre sistem durumu deposu tarafından hesaplanır. Varlık durumu değerlendirmesi hakkında daha fazla bilgi edinin.
  • Varlık üzerindeki sistem durumu olayları.
  • Alt öğeye sahip olabilecek varlıklar için tüm alt öğeleri içeren sistem durumu koleksiyonu. Sistem durumu durumları varlık tanımlayıcılarını ve toplanmış sistem durumu içerir. Bir alt öğe için tam sistem durumunu almak için alt varlık türünün sorgu durumunu çağırın ve alt tanımlayıcıyı geçirin.
  • Varlık iyi durumda değilse varlığın durumunu tetikleyen raporu işaret eden iyi durumda olmayan değerlendirmeler. Değerlendirmeler özyinelemeli olup, geçerli sistem durumunu tetikleyen alt sistem durumu değerlendirmelerini içerir. Örneğin, bir watchdog bir çoğaltmaya karşı bir hata bildirdi. Uygulama durumu, iyi durumda olmayan bir hizmet nedeniyle iyi durumda olmayan bir değerlendirme gösterir; hatadaki bir bölüm nedeniyle hizmet iyi durumda değil; bir çoğaltma hatası nedeniyle bölüm iyi durumda değil; watchdog hata durumu raporu nedeniyle çoğaltma iyi durumda değil.
  • Alt öğeleri olan varlıkların tüm alt türleri için sistem durumu istatistikleri. Örneğin, küme durumu kümedeki uygulamaların, hizmetlerin, bölümlerin, çoğaltmaların ve dağıtılan varlıkların toplam sayısını gösterir. Hizmet durumu, belirtilen hizmet kapsamındaki toplam bölüm ve çoğaltma sayısını gösterir.

Küme durumunu alma

Küme varlığının durumunu döndürür ve uygulamaların ve düğümlerin sistem durumu durumlarını (kümenin alt öğeleri) içerir. Giriş:

  • [İsteğe bağlı] Düğümleri ve küme olaylarını değerlendirmek için kullanılan küme sistem durumu ilkesi.
  • [İsteğe bağlı] Uygulama durumu ilkesi eşlemesi, uygulama bildirim ilkelerini geçersiz kılmak için kullanılan sistem durumu ilkeleriyle birlikte.
  • [İsteğe bağlı] Hangi girişlerin ilgi çekici olduğunu ve sonuçta döndürülmesi gerektiğini belirten olaylar, düğümler ve uygulamalar için filtreler (örneğin, yalnızca hatalar veya hem uyarılar hem de hatalar). Tüm olaylar, düğümler ve uygulamalar, filtreden bağımsız olarak varlık toplu durumunu değerlendirmek için kullanılır.
  • [İsteğe bağlı] Sistem durumu istatistiklerini dışlamak için filtreleyin.
  • [İsteğe bağlı] Sistem durumu istatistiklerine doku:/Sistem durumu istatistiklerini dahil etmek için filtreleyin. Yalnızca sistem durumu istatistikleri dışlanmadığında geçerlidir. Varsayılan olarak sistem durumu istatistikleri, Sistem uygulamasına değil yalnızca kullanıcı uygulamalarına ilişkin istatistikleri içerir.

API

Küme durumunu almak için bir FabricClient oluşturun ve HealthManager üzerinde GetClusterHealthAsync yöntemini çağırın.

Aşağıdaki çağrı küme durumunu alır:

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

Aşağıdaki kod, özel bir küme sistem durumu ilkesi ve düğümler ve uygulamalar için filtreler kullanarak küme durumunu alır. Sistem durumu istatistiklerinin doku:/Sistem istatistiklerini içerdiğini belirtir. Giriş bilgilerini içeren ClusterHealthQueryDescription'ı oluşturur.

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

Küme durumunu almak için kullanılan cmdlet Get-ServiceFabricClusterHealth şeklindedir. İlk olarak Connect-ServiceFabricCluster cmdlet'ini kullanarak kümeye bağlanın.

Kümenin durumu, sistem uygulaması ve doku:/WordCount olarak yapılandırılan beş düğümdür.

Aşağıdaki cmdlet, varsayılan sistem durumu ilkelerini kullanarak küme durumunu alır. Doku:/WordCount uygulaması uyarıda olduğundan, toplanan sistem durumu uyarıdır. İyi durumda olmayan değerlendirmelerin, toplanmış durumu tetikleyen koşullar hakkında nasıl ayrıntılar sağladığını unutmayın.

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

Aşağıdaki PowerShell cmdlet'i özel bir uygulama ilkesi kullanarak kümenin sistem durumunu alır. Yalnızca hata veya uyarıdaki uygulamaları ve düğümleri almak için sonuçları filtreler. Sonuç olarak, hepsi iyi durumda olduğundan hiçbir düğüm döndürülmüyor. Yalnızca fabric:/WordCount uygulaması uygulama filtresine saygı gösterir. Özel ilke uyarıları fabric:/WordCount uygulaması için hata olarak değerlendirmeyi belirttiğinden, uygulama hata olarak değerlendirilir ve küme de öyle olur.

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

Bir GET isteğiyle veya gövdede açıklanan sistem durumu ilkelerini içeren bir POST isteğiyle küme durumunu alabilirsiniz.

Düğüm durumunu alma

Düğüm varlığının durumunu döndürür ve düğümde bildirilen sistem durumu olaylarını içerir. Giriş:

  • [Gerekli] Düğümü tanımlayan düğüm adı.
  • [İsteğe bağlı] Sistem durumunu değerlendirmek için kullanılan küme sistem durumu ilkesi ayarları.
  • [İsteğe bağlı] Hangi girişlerin ilgi çekici olduğunu ve sonuçta döndürülmesi gerektiğini belirten olaylar için filtreler (örneğin, yalnızca hatalar veya hem uyarılar hem de hatalar). Tüm olaylar, filtreden bağımsız olarak varlığın toplanmış durumunu değerlendirmek için kullanılır.

API

API aracılığıyla düğüm durumunu almak için bir FabricClient oluşturun ve HealthManager üzerinde GetNodeHealthAsync yöntemini çağırın.

Aşağıdaki kod, belirtilen düğüm adı için düğüm durumunu alır:

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

Aşağıdaki kod, belirtilen düğüm adı için düğüm durumunu alır ve NodeHealthQueryDescription aracılığıyla olay filtresini ve özel ilkeyi geçirir:

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

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

PowerShell

Düğüm durumunu almak için kullanılan cmdlet Get-ServiceFabricNodeHealth şeklindedir. İlk olarak Connect-ServiceFabricCluster cmdlet'ini kullanarak kümeye bağlanın. Aşağıdaki cmdlet, varsayılan sistem durumu ilkelerini kullanarak düğüm durumunu alır:

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

Aşağıdaki cmdlet, kümedeki tüm düğümlerin durumunu alır:

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

Bir GET isteğiyle veya gövdede açıklanan sistem durumu ilkelerini içeren bir POST isteğiyle düğüm durumunu alabilirsiniz.

Uygulama durumunu alma

Bir uygulama varlığının sistem durumunu döndürür. Dağıtılan uygulama ve hizmet alt öğelerinin sistem durumunu içerir. Giriş:

  • [Gerekli] Uygulamayı tanımlayan uygulama adı (URI).
  • [İsteğe bağlı] Uygulama bildirim ilkelerini geçersiz kılmak için kullanılan uygulama durumu ilkesi.
  • [İsteğe bağlı] Hangi girişlerin ilgi çekici olduğunu ve sonuçta döndürülmesi gerektiğini belirten olaylar, hizmetler ve dağıtılan uygulamalar için filtreler (örneğin, yalnızca hatalar veya hem uyarılar hem de hatalar). Tüm olaylar, hizmetler ve dağıtılan uygulamalar, filtreden bağımsız olarak varlık toplu durumunu değerlendirmek için kullanılır.
  • [İsteğe bağlı] Sistem durumu istatistiklerini dışlamak için filtreleyin. Belirtilmezse, sistem durumu istatistikleri tüm uygulama alt öğeleri için tamam, uyarı ve hata sayısını içerir: hizmetler, bölümler, çoğaltmalar, dağıtılan uygulamalar ve dağıtılan hizmet paketleri.

API

Uygulama durumunu almak için bir FabricClient oluşturun ve HealthManager üzerinde GetApplicationHealthAsync yöntemini çağırın.

Aşağıdaki kod, belirtilen uygulama adı (URI) için uygulama durumunu alır:

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

Aşağıdaki kod, ApplicationHealthQueryDescription aracılığıyla belirtilen filtreler ve özel ilkelerle belirtilen uygulama adı (URI) için uygulama durumunu alır.

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

Uygulama durumunu almak için cmdlet Get-ServiceFabricApplicationHealth şeklindedir. İlk olarak Connect-ServiceFabricCluster cmdlet'ini kullanarak kümeye bağlanın.

Aşağıdaki cmdlet, doku:/WordCount uygulamasının durumunu döndürür:

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

Aşağıdaki PowerShell cmdlet'i özel ilkeler geçirir. Ayrıca alt öğeleri ve olayları filtreler.

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

Bir GET isteğiyle veya gövdede açıklanan sistem durumu ilkelerini içeren bir POST isteğiyle uygulama durumunu alabilirsiniz.

Hizmet durumunu alma

Bir hizmet varlığının sistem durumunu döndürür. Bölüm durumu durumlarını içerir. Giriş:

  • [Gerekli] Hizmeti tanımlayan hizmet adı (URI).
  • [İsteğe bağlı] Uygulama bildirim ilkesini geçersiz kılmak için kullanılan uygulama durumu ilkesi.
  • [İsteğe bağlı] Hangi girişlerin ilgi çekici olduğunu ve sonuçta döndürülmesi gerektiğini belirten olaylar ve bölümler için filtreler (örneğin, yalnızca hatalar veya hem uyarılar hem de hatalar). Tüm olaylar ve bölümler, filtreden bağımsız olarak varlığın toplanmış durumunu değerlendirmek için kullanılır.
  • [İsteğe bağlı] Sistem durumu istatistiklerini dışlamak için filtreleyin. Belirtilmezse sistem durumu istatistikleri, hizmetin tüm bölümleri ve çoğaltmaları için tamam, uyarı ve hata sayısını gösterir.

API

API aracılığıyla hizmet durumunu almak için bir FabricClient oluşturun ve HealthManager üzerinde GetServiceHealthAsync yöntemini çağırın.

Aşağıdaki örnek, belirtilen hizmet adına (URI) sahip bir hizmetin durumunu alır:

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

Aşağıdaki kod, ServiceHealthQueryDescription aracılığıyla filtreleri ve özel ilkeyi belirterek belirtilen hizmet adı (URI) için hizmet durumunu alır:

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

Hizmet durumunu almak için kullanılan cmdlet Get-ServiceFabricServiceHealth'tir. İlk olarak Connect-ServiceFabricCluster cmdlet'ini kullanarak kümeye bağlanın.

Aşağıdaki cmdlet, varsayılan sistem durumu ilkelerini kullanarak hizmet durumunu alır:

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

Hizmet durumunu bir GET isteğiyle veya gövdede açıklanan sistem durumu ilkelerini içeren bir POST isteğiyle alabilirsiniz.

Bölüm durumunu alma

Bölüm varlığının sistem durumunu döndürür. Çoğaltma sistem durumu durumlarını içerir. Giriş:

  • [Gerekli] Bölümü tanımlayan bölüm kimliği (GUID).
  • [İsteğe bağlı] Uygulama bildirim ilkesini geçersiz kılmak için kullanılan uygulama durumu ilkesi.
  • [İsteğe bağlı] Hangi girişlerin ilgi çekici olduğunu ve sonuçta döndürülmesi gerektiğini belirten olaylar ve çoğaltmalar için filtreler (örneğin, yalnızca hatalar veya hem uyarılar hem de hatalar). Tüm olaylar ve çoğaltmalar, filtreden bağımsız olarak varlığın toplanmış durumunu değerlendirmek için kullanılır.
  • [İsteğe bağlı] Sistem durumu istatistiklerini dışlamak için filtreleyin. Belirtilmezse sistem durumu istatistikleri tamam, uyarı ve hata durumlarında kaç çoğaltma olduğunu gösterir.

API

API aracılığıyla bölüm durumunu almak için bir FabricClient oluşturun ve HealthManager üzerinde GetPartitionHealthAsync yöntemini çağırın. İsteğe bağlı parametreler belirtmek için PartitionHealthQueryDescription oluşturun.

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

PowerShell

Bölüm durumunu almak için kullanılan cmdlet Get-ServiceFabricPartitionHealth şeklindedir. İlk olarak Connect-ServiceFabricCluster cmdlet'ini kullanarak kümeye bağlanın.

Aşağıdaki cmdlet, doku:/WordCount/WordCountService hizmetinin tüm bölümleri için sistem durumunu alır ve çoğaltma sistem durumu durumlarını filtreler:

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

Bir GET isteğiyle veya gövdede açıklanan sistem durumu ilkelerini içeren bir POST isteğiyle bölüm durumunu alabilirsiniz.

Çoğaltma durumunu alma

Durum bilgisi olan bir hizmet çoğaltmasının veya durum bilgisi olmayan bir hizmet örneğinin durumunu döndürür. Giriş:

  • [Gerekli] Çoğaltmayı tanımlayan bölüm kimliği (GUID) ve çoğaltma kimliği.
  • [İsteğe bağlı] Uygulama bildirim ilkelerini geçersiz kılmak için kullanılan uygulama durumu ilkesi parametreleri.
  • [İsteğe bağlı] Hangi girişlerin ilgi çekici olduğunu ve sonuçta döndürülmesi gerektiğini belirten olaylar için filtreler (örneğin, yalnızca hatalar veya hem uyarılar hem de hatalar). Tüm olaylar, filtreden bağımsız olarak varlığın toplanmış durumunu değerlendirmek için kullanılır.

API

API aracılığıyla çoğaltma durumunu almak için bir FabricClient oluşturun ve HealthManager üzerinde GetReplicaHealthAsync yöntemini çağırın. Gelişmiş parametreler belirtmek için ReplicaHealthQueryDescription kullanın.

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

PowerShell

Çoğaltma durumunu almak için kullanılan cmdlet Get-ServiceFabricReplicaHealth şeklindedir. İlk olarak Connect-ServiceFabricCluster cmdlet'ini kullanarak kümeye bağlanın.

Aşağıdaki cmdlet, hizmetin tüm bölümleri için birincil çoğaltmanın sistem durumunu alır:

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

Çoğaltma durumunu, gövdesinde açıklanan sistem durumu ilkelerini içeren bir GET isteği veya POST isteğiyle alabilirsiniz.

Dağıtılan uygulama durumunu alma

Düğüm varlığında dağıtılan bir uygulamanın sistem durumunu döndürür. Dağıtılan hizmet paketi sistem durumu durumlarını içerir. Giriş:

  • [Gerekli] Dağıtılan uygulamayı tanımlayan uygulama adı (URI) ve düğüm adı (dize).
  • [İsteğe bağlı] Uygulama bildirim ilkelerini geçersiz kılmak için kullanılan uygulama durumu ilkesi.
  • [İsteğe bağlı] Hangi girişlerin ilgi çekici olduğunu ve sonuçta döndürülmesi gerektiğini belirten olaylar ve dağıtılmış hizmet paketlerine yönelik filtreler (örneğin, yalnızca hatalar veya hem uyarılar hem de hatalar). Tüm olaylar ve dağıtılan hizmet paketleri, filtreden bağımsız olarak varlığın toplanmış durumunu değerlendirmek için kullanılır.
  • [İsteğe bağlı] Sistem durumu istatistiklerini dışlamak için filtreleyin. Belirtilmezse sistem durumu istatistikleri, dağıtılan hizmet paketlerinin sayısını Tamam, uyarı ve hata durumu durumlarında gösterir.

API

API aracılığıyla bir düğümde dağıtılan bir uygulamanın durumunu almak için bir FabricClient oluşturun ve HealthManager üzerinde GetDeployedApplicationHealthAsync yöntemini çağırın. İsteğe bağlı parametreleri belirtmek için DeployedApplicationHealthQueryDescription komutunu kullanın.

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

PowerShell

Dağıtılan uygulama durumunu almak için kullanılan cmdlet, Get-ServiceFabricDeployedApplicationHealth şeklindedir. İlk olarak Connect-ServiceFabricCluster cmdlet'ini kullanarak kümeye bağlanın. Bir uygulamanın dağıtıldığı yeri bulmak için Get-ServiceFabricApplicationHealth komutunu çalıştırın ve dağıtılan uygulama alt öğelerine bakın.

Aşağıdaki cmdlet, _Node_2 üzerinde dağıtılan doku:/WordCount uygulamasının sistem durumunu alır.

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

Dağıtılan uygulama durumunu bir GET isteğiyle veya gövdede açıklanan sistem durumu ilkelerini içeren bir POST isteğiyle alabilirsiniz.

Dağıtılan hizmet paketi durumunu alma

Dağıtılan hizmet paketi varlığının sistem durumunu döndürür. Giriş:

  • [Gerekli] Dağıtılan hizmet paketini tanımlayan uygulama adı (URI), düğüm adı (dize) ve hizmet bildirimi adı (dize).
  • [İsteğe bağlı] Uygulama bildirim ilkesini geçersiz kılmak için kullanılan uygulama durumu ilkesi.
  • [İsteğe bağlı] Hangi girişlerin ilgi çekici olduğunu ve sonuçta döndürülmesi gerektiğini belirten olaylar için filtreler (örneğin, yalnızca hatalar veya hem uyarılar hem de hatalar). Tüm olaylar, filtreden bağımsız olarak varlığın toplanmış durumunu değerlendirmek için kullanılır.

API

Dağıtılan hizmet paketinin durumunu API aracılığıyla almak için bir FabricClient oluşturun ve HealthManager üzerinde GetDeployedServicePackageHealthAsync yöntemini çağırın. İsteğe bağlı parametreler belirtmek için DeployedServicePackageHealthQueryDescription kullanın.

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

PowerShell

Dağıtılan hizmet paketi durumunu almak için kullanılan cmdlet Get-ServiceFabricDeployedServicePackageHealth'tir. İlk olarak Connect-ServiceFabricCluster cmdlet'ini kullanarak kümeye bağlanın. Bir uygulamanın dağıtıldığı yeri görmek için Get-ServiceFabricApplicationHealth komutunu çalıştırın ve dağıtılan uygulamalara bakın. Bir uygulamada hangi hizmet paketlerinin olduğunu görmek için Get-ServiceFabricDeployedApplicationHealth çıktısında dağıtılan hizmet paketi alt öğelerine bakın.

Aşağıdaki cmdlet, _Node_2 üzerinde dağıtılan doku:/WordCount uygulamasının WordCountServicePkg hizmet paketinin sistem durumunu alır. Varlık, başarılı hizmet paketi ve giriş noktası etkinleştirmesi için System.Hosting raporlarına ve başarılı hizmet türü kaydına sahiptir.

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

Dağıtılan hizmet paketi sistem durumunu bir GET isteğiyle veya gövdede açıklanan sistem durumu ilkelerini içeren bir POST isteğiyle alabilirsiniz.

Sistem durumu öbek sorguları

Sistem durumu öbek sorguları, giriş filtreleri başına çok düzeyli küme alt öğelerini (özyinelemeli olarak) döndürebilir. Döndürülecek çocukları seçmede çok fazla esneklik sağlayan gelişmiş filtreleri destekler. Filtreler alt öğeleri benzersiz tanımlayıcıya veya diğer grup tanımlayıcılarına ve/veya sistem durumu durumlarına göre belirtebilir. Varsayılan olarak, her zaman birinci düzey alt öğeleri içeren sistem durumu komutlarının aksine hiçbir alt öğe dahil değildir.

Sistem durumu sorguları , gerekli filtreler başına belirtilen varlığın yalnızca birinci düzey alt öğelerini döndürür. Çocukların alt öğelerini almak için, ilgilendiğiniz her varlık için ek sistem durumu API'leri çağırmanız gerekir. Benzer şekilde, belirli varlıkların durumunu almak için istenen her varlık için bir sistem durumu API'sini çağırmanız gerekir. Öbek sorgusu gelişmiş filtrelemesi, bir sorguda birden çok ilgi çekici öğe istemenizi sağlayarak ileti boyutunu ve ileti sayısını en aza indirmenizi sağlar.

Öbek sorgusunun değeri, bir çağrıda daha fazla küme varlığı (gerekli kökte başlayan tüm küme varlıkları) için sistem durumu alabilmenizdir. Karmaşık sistem durumu sorgusunu ifade edebilirsiniz, örneğin:

  • Yalnızca hatalı uygulamalar döndürür ve bu uygulamalar için uyarı veya hata içindeki tüm hizmetleri içerir. Döndürülen hizmetler için tüm bölümleri ekleyin.
  • Yalnızca adlarıyla belirtilen dört uygulamanın sistem durumunu döndürür.
  • Yalnızca istenen uygulama türündeki uygulamaların sistem durumunu döndürür.
  • Bir düğümde dağıtılan tüm varlıkları döndürür. Belirtilen düğümdeki tüm uygulamaları, dağıtılan tüm uygulamaları ve bu düğümdeki tüm dağıtılan hizmet paketlerini döndürür.
  • Tüm çoğaltmaları hata olarak döndürür. Tüm uygulamaları, hizmetleri, bölümleri ve yalnızca çoğaltmaları hatalı olarak döndürür.
  • Tüm uygulamaları döndürür. Belirtilen bir hizmet için tüm bölümleri ekleyin.

Şu anda sistem durumu öbek sorgusu yalnızca küme varlığı için kullanıma sunulur. Aşağıdakiler içeren bir küme sistem durumu öbekleri döndürür:

  • Kümenin toplanmış sistem durumu.
  • Giriş filtrelerine saygı gösteren düğümlerin sistem durumu öbek listesi.
  • Giriş filtrelerine saygı gösteren uygulamaların sistem durumu öbek listesi. Her uygulama durumu öbeği, giriş filtrelerine uygun tüm hizmetleri içeren bir öbek listesi ve filtrelere uygun dağıtılan tüm uygulamaların bulunduğu bir öbek listesi içerir. Hizmetlerin ve dağıtılan uygulamaların alt öğeleri için de aynıdır. Bu şekilde, istenirse kümedeki tüm varlıklar hiyerarşik bir şekilde döndürülebilir.

Küme durumu öbek sorgusu

Küme varlığının durumunu döndürür ve gerekli alt öğelerinin hiyerarşik sistem durumu öbeklerini içerir. Giriş:

  • [İsteğe bağlı] Düğümleri ve küme olaylarını değerlendirmek için kullanılan küme sistem durumu ilkesi.
  • [İsteğe bağlı] Uygulama durumu ilkesi eşlemesi, uygulama bildirim ilkelerini geçersiz kılmak için kullanılan sistem durumu ilkeleriyle birlikte.
  • [İsteğe bağlı] Hangi girişlerin ilgi çekici olduğunu ve sonuçta döndürülmesi gerektiğini belirten düğümler ve uygulamalar için filtreler. Filtreler bir varlığa/varlık grubuna özgü veya bu düzeydeki tüm varlıklar için geçerlidir. Filtre listesi, sorgu tarafından döndürülen ayrıntılı varlıklara yönelik belirli tanımlayıcılar için bir genel filtre ve/veya filtre içerebilir. Boşsa, alt öğeler varsayılan olarak döndürülür. NodeHealthStateFilter ve ApplicationHealthStateFilter'daki filtreler hakkında daha fazla bilgi edinin. Uygulama filtreleri alt öğeler için ileri düzey filtreleri yinelemeli olarak belirtebilir.

Öbek sonucu, filtrelere saygı gösteren alt öğeleri içerir.

Öbek sorgusu şu anda iyi durumda olmayan değerlendirmeler veya varlık olayları döndürmez. Bu ek bilgiler mevcut küme durumu sorgusu kullanılarak elde edilebilir.

API

Küme durumu öbeklerini almak için bir FabricClient oluşturun ve HealthManager üzerinde GetClusterHealthChunkAsync yöntemini çağırın. Sistem durumu ilkelerini ve gelişmiş filtreleri açıklamak için ClusterHealthQueryDescription'ı geçirebilirsiniz.

Aşağıdaki kod, gelişmiş filtrelerle küme sistem durumu öbeklerini alır.

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

Küme durumunu almak için kullanılan cmdlet Get-ServiceFabricClusterChunkHealth şeklindedir. İlk olarak Connect-ServiceFabricCluster cmdlet'ini kullanarak kümeye bağlanın.

Aşağıdaki kod, her zaman döndürülmesi gereken belirli bir düğüm dışında yalnızca Hata durumunda olan düğümleri alır.

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

Aşağıdaki cmdlet uygulama filtreleri ile küme öbeği alır.

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

Aşağıdaki cmdlet bir düğümde dağıtılan tüm varlıkları döndürür.

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

Bir GET isteği veya sistem durumu ilkelerini ve gövdede açıklanan gelişmiş filtreleri içeren bir POST isteği ile küme sistem durumu öbeği alabilirsiniz.

Genel sorgular

Genel sorgular, belirtilen türde Service Fabric varlıklarının listesini döndürür. Bunlar API (FabricClient.QueryManager üzerindeki yöntemler aracılığıyla), PowerShell cmdlet'leri ve REST aracılığıyla kullanıma sunulur. Bu sorgular birden çok bileşenden alt sorguları toplar. Bunlardan biri, her sorgu sonucu için toplanan sistem durumunu dolduran sistem durumu deposudur.

Not

Genel sorgular varlığın toplu sistem durumunu döndürür ve zengin sistem durumu verileri içermez. Varlık iyi durumda değilse olaylar, alt sistem durumu durumları ve iyi durumda olmayan değerlendirmeler dahil olmak üzere tüm sistem durumu bilgilerini almak için sistem durumu sorgularını izleyebilirsiniz.

Genel sorgular bir varlık için bilinmeyen bir sistem durumu döndürürse, sistem durumu deposunda varlıkla ilgili tam veri olmaması mümkündür. Sistem durumu deposuna yönelik bir alt sorgunun başarılı olmaması da mümkündür (örneğin, bir iletişim hatası oluştu veya sistem durumu deposu kısıtlandı). Varlık için bir sistem durumu sorgusuyla izleyin. Alt sorgu ağ sorunları gibi geçici hatalarla karşılaştıysa, bu izleme sorgusu başarılı olabilir. Ayrıca, varlığın neden kullanıma sunulmadığı hakkında sistem durumu deposundan daha fazla ayrıntı da verebilir.

Varlıklar için HealthState içeren sorgular şunlardır:

Not

Sorgulardan bazıları sayfalanmış sonuçlar döndürür. Bu sorguların döndürülmesi, PagedList<T'den> türetilen bir listedir. Sonuçlar bir iletiye uymuyorsa, yalnızca bir sayfa döndürülür ve numaralandırmanın nerede durdurulduğunu izleyen continuationToken döndürülür. Aynı sorguyu çağırmaya devam edin ve sonraki sonuçları almak için önceki sorgudan devam belirtecini geçirin.

Örnekler

Aşağıdaki kod, kümedeki iyi durumda olmayan uygulamaları alır:

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

Aşağıdaki cmdlet, fabric:/WordCount uygulamasının uygulama ayrıntılarını alır. Sistem durumunun uyarıda olduğuna dikkat edin.

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"}]" }

Aşağıdaki cmdlet, sistem durumu hata olan hizmetleri alır:

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

Küme ve uygulama yükseltmeleri

Kümenin ve uygulamanın izlenen yükseltmesi sırasında Service Fabric, her şeyin iyi durumda kaldığından emin olmak için sistem durumunu denetler. Yapılandırılmış sistem durumu ilkeleri kullanılarak değerlendirilen bir varlık iyi durumda değilse, yükseltme sonraki eylemi belirlemek için yükseltmeye özgü ilkeler uygular. Yükseltme, kullanıcı etkileşimine izin verecek şekilde duraklatılabilir (hata koşullarını düzeltme veya ilkeleri değiştirme gibi) veya otomatik olarak önceki iyi sürüme geri dönebilir.

Küme yükseltmesi sırasında küme yükseltme durumunu alabilirsiniz. Yükseltme durumu, kümede iyi durumda olmayanlara işaret eden iyi durumda olmayan değerlendirmeler içerir. Sistem durumu sorunları nedeniyle yükseltme geri alınırsa, yükseltme durumu son iyi durumda olmayan nedenleri hatırlar. Bu bilgiler, yöneticilerin yükseltme geri geldikten veya durdurulduktan sonra neyin yanlış gittiğini araştırmalarına yardımcı olabilir.

Benzer şekilde, bir uygulama yükseltmesi sırasında, tüm iyi durumda olmayan değerlendirmeler uygulama yükseltme durumunda yer alır.

Değiştirilen doku:/WordCount uygulamasının uygulama yükseltme durumu aşağıda gösterilmiştir. Bir watchdog, çoğaltmalarından birinde hata bildirdi. Sistem durumu denetimlerine uyulmadığı için yükseltme geri dönüyor.

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 uygulama yükseltmesi hakkında daha fazla bilgi edinin.

Sistem durumu değerlendirmelerini kullanarak sorun giderme

Küme veya uygulamayla ilgili bir sorun olduğunda, sorunun ne olduğunu saptamak için kümeye veya uygulama durumuna bakın. İyi durumda olmayan değerlendirmeler, geçerli iyi durumda olmayan durumu neyin tetiklediği hakkında ayrıntılar sağlar. Gerekirse, kök nedeni belirlemek için iyi durumda olmayan alt varlıklarda detaya gidebilirsiniz.

Örneğin, çoğaltmalarından birinde hata raporu olduğundan bir uygulamanın iyi durumda olmadığını düşünün. Aşağıdaki PowerShell cmdlet'i iyi durumda olmayan değerlendirmeleri gösterir:

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

Daha fazla bilgi edinmek için çoğaltmaya bakabilirsiniz:

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

Not

İyi durumda olmayan değerlendirmeler, varlığın geçerli sistem durumu olarak değerlendirilmesinin ilk nedenini gösterir. Bu durumu tetikleyen birden çok başka olay olabilir, ancak bunlar değerlendirmelere yansıtılmaz. Daha fazla bilgi edinmek için kümedeki tüm iyi durumda olmayan raporları bulmak için sistem durumu varlıklarının detayına gidin.

Sonraki adımlar

Sorun gidermek için sistem durumu raporlarını kullanma

Özel Service Fabric sistem durumu raporları ekleme

Hizmet durumunu bildirme ve denetleme

Hizmetleri yerel olarak izleme ve tanılama

Service Fabric uygulama yükseltmesi