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 WordCountServiceType
ve türünde WordCountWebServiceType
durum 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öylemesindenPartition is below target replica or instance count
dolayı 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ü:
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:
- Düğüm listesi: Kümedeki liste düğümlerini döndürür (sayfalanmış).
- API: FabricClient.QueryClient.GetNodeListAsync
- PowerShell: Get-ServiceFabricNode
- Uygulama listesi: Kümedeki (paged) uygulamaların listesini döndürür.
- API: FabricClient.QueryClient.GetApplicationListAsync
- PowerShell: Get-ServiceFabricApplication
- Hizmet listesi: Bir uygulamadaki hizmetlerin listesini döndürür (sayfalanmış).
- API: FabricClient.QueryClient.GetServiceListAsync
- PowerShell: Get-ServiceFabricService
- Bölüm listesi: Bir hizmetteki bölümlerin listesini döndürür (sayfalanmış).
- API: FabricClient.QueryClient.GetPartitionListAsync
- PowerShell: Get-ServiceFabricPartition
- Çoğaltma listesi: Bir bölümdeki çoğaltmaların listesini döndürür (sayfalanmış).
- API: FabricClient.QueryClient.GetReplicaListAsync
- PowerShell: Get-ServiceFabricReplica
- Dağıtılan uygulama listesi: Düğümde dağıtılan uygulamaların listesini döndürür.
- API: FabricClient.QueryClient.GetDeployedApplicationListAsync
- PowerShell: Get-ServiceFabricDeployedApplication
- Dağıtılan hizmet paketi listesi: Dağıtılan bir uygulamadaki hizmet paketlerinin listesini döndürür.
- API: FabricClient.QueryClient.GetDeployedServicePackageListAsync
- PowerShell: Get-ServiceFabricDeployedApplication
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