Küme olayları için EventStore API'lerini sorgulama
Bu makale, Service Fabric sürüm 6.2 ve sonraki sürümlerde kullanılabilen EventStore API'lerinin nasıl sorgulandığını kapsar. EventStore hizmeti hakkında daha fazla bilgi edinmek isterseniz Bkz . EventStore hizmetine genel bakış. Şu anda EventStore hizmeti yalnızca son 7 gündeki verilere erişebilir (bu, kümenizin tanılama verileri saklama ilkesini temel alır).
Not
EventStore API'leri, yalnızca Azure'da çalışan Windows kümeleri için Service Fabric sürüm 6.4 itibarıyla GA'dır.
EventStore API'lerine doğrudan bir REST uç noktası aracılığıyla veya program aracılığıyla erişilebilir. Sorguya bağlı olarak, doğru verileri toplamak için gereken birkaç parametre vardır. Bu parametreler genellikle şunları içerir:
api-version
: kullandığınız EventStore API'lerinin sürümüStartTimeUtc
: bakmak istediğiniz dönemin başlangıcını tanımlarEndTimeUtc
: zaman aralığının sonu
Bu parametrelere ek olarak, aşağıdakiler gibi isteğe bağlı parametreler de mevcuttur:
timeout
: İstek işlemini gerçekleştirmek için varsayılan 60 saniyelik zaman aşımını geçersiz kıleventstypesfilter
: Bu size belirli olay türleri için filtreleme seçeneği sunarExcludeAnalysisEvents
: 'Analysis' olayları döndürmeyin. Varsayılan olarak, EventStore sorguları mümkün olduğunda "çözümleme" olaylarıyla birlikte döndürülecektir. Analiz olayları, normal bir Service Fabric olayının ötesinde ek bağlam veya bilgi içeren ve daha fazla derinlik sağlayan daha zengin işlem kanalı olaylarıdır.SkipCorrelationLookup
: kümede olası bağıntılı olayları arama. Varsayılan olarak, EventStore bir küme genelinde olayları ilişkilendirmeye çalışır ve mümkün olduğunda olaylarınızı birbirine bağlar.
Bir kümedeki her varlık, olaylar için sorgular olabilir. Ayrıca türündeki tüm varlıklar için olayları sorgulayabilirsiniz. Örneğin, belirli bir düğüm veya kümenizdeki tüm düğümler için olayları sorgulayabilirsiniz. Olayları sorgulayabileceğiniz geçerli varlık kümesidir (sorgunun nasıl yapılandırılacağıyla):
- Küme:
/EventsStore/Cluster/Events
- Düğüm:
/EventsStore/Nodes/Events
- Düğüm:
/EventsStore/Nodes/<NodeName>/$/Events
- Uygulama:
/EventsStore/Applications/Events
- Uygulama:
/EventsStore/Applications/<AppName>/$/Events
- Hizmetleri:
/EventsStore/Services/Events
- Hizmet:
/EventsStore/Services/<ServiceName>/$/Events
- Bölüm:
/EventsStore/Partitions/Events
- Bölüm:
/EventsStore/Partitions/<PartitionID>/$/Events
- Yineleme:
/EventsStore/Partitions/<PartitionID>/$/Replicas/Events
- Çoğaltma:
/EventsStore/Partitions/<PartitionID>/$/Replicas/<ReplicaID>/$/Events
Not
Bir uygulama veya hizmet adına başvururken sorgunun "fabric:/" ön ekini içermesi gerekmez. Ayrıca, uygulama veya hizmet adlarınızın içinde "/" varsa sorgunun çalışmasını sağlamak için bunu "~" olarak değiştirin. Örneğin, uygulamanız "fabric:/App1/FrontendApp" olarak görünüyorsa, uygulamaya özgü sorgularınız olarak /EventsStore/Applications/App1~FrontendApp/$/Events
yapılandırılır.
Buna ek olarak, bugün hizmetler için sistem durumu raporları ilgili uygulamanın altında gösterilir, bu nedenle doğru uygulama varlığı için DeployedServiceHealthReportCreated
olayları sorgularsınız.
REST API uç noktaları aracılığıyla EventStore'yu sorgulama
EventStore'yu şu isteklerde bulunarak GET
doğrudan bir REST uç noktası aracılığıyla sorgulayabilirsiniz: <your cluster address>/EventsStore/<entity>/Events/
.
Örneğin, ile 2018-04-04T18:00:00Z
arasında 2018-04-03T18:00:00Z
tüm Küme olaylarını sorgulamak için isteğiniz şöyle görünür:
Method: GET
URL: http://mycluster:19080/EventsStore/Cluster/Events?api-version=6.4&StartTimeUtc=2018-04-03T18:00:00Z&EndTimeUtc=2018-04-04T18:00:00Z
Bu, hiçbir olay döndürebileceğinden veya json'da döndürülen olayların listesi:
Response: 200
Body:
[
{
"Kind": "ClusterUpgradeStart",
"CurrentClusterVersion": "0.0.0.0:",
"TargetClusterVersion": "6.2:1.0",
"UpgradeType": "Rolling",
"RollingUpgradeMode": "UnmonitoredAuto",
"FailureAction": "Manual",
"EventInstanceId": "090add3c-8f56-4d35-8d57-a855745b6064",
"TimeStamp": "2018-04-03T20:18:59.4313064Z",
"HasCorrelatedEvents": false
},
{
"Kind": "ClusterUpgradeDomainComplete",
"TargetClusterVersion": "6.2:1.0",
"UpgradeState": "RollingForward",
"UpgradeDomains": "(0 1 2)",
"UpgradeDomainElapsedTimeInMs": "78.5288",
"EventInstanceId": "090add3c-8f56-4d35-8d57-a855745b6064",
"TimeStamp": "2018-04-03T20:19:59.5729953Z",
"HasCorrelatedEvents": false
},
{
"Kind": "ClusterUpgradeDomainComplete",
"TargetClusterVersion": "6.2:1.0",
"UpgradeState": "RollingForward",
"UpgradeDomains": "(3 4)",
"UpgradeDomainElapsedTimeInMs": "0",
"EventInstanceId": "090add3c-8f56-4d35-8d57-a855745b6064",
"TimeStamp": "2018-04-03T20:20:59.6271949Z",
"HasCorrelatedEvents": false
},
{
"Kind": "ClusterUpgradeComplete",
"TargetClusterVersion": "6.2:1.0",
"OverallUpgradeElapsedTimeInMs": "120196.5212",
"EventInstanceId": "090add3c-8f56-4d35-8d57-a855745b6064",
"TimeStamp": "2018-04-03T20:20:59.8134457Z",
"HasCorrelatedEvents": false
}
]
Burada ile arasında 2018-04-03T18:00:00Z
bu kümenin ilk yükseltmesini ilk ayağa kalktığında başarıyla tamamlandığını görebiliriz."CurrentClusterVersion": "0.0.0.0:"
"TargetClusterVersion": "6.2:1.0"
"OverallUpgradeElapsedTimeInMs": "120196.5212"
2018-04-04T18:00:00Z
EventStore'yu program aracılığıyla sorgulama
EventStore'yu program aracılığıyla Service Fabric istemci kitaplığı aracılığıyla da sorgulayabilirsiniz.
Service Fabric İstemcinizi ayarladıktan sonra EventStore'a şu şekilde erişerek olayları sorgulayabilirsiniz: sfhttpClient.EventStore.<request>
aşağıda ve arasındaki 2018-04-03T18:00:00Z
2018-04-04T18:00:00Z
tüm küme olayları için işlevi aracılığıyla örnek bir istek verilmiştir GetClusterEventListAsync
.
var sfhttpClient = ServiceFabricClientFactory.Create(clusterUrl, settings);
var clstrEvents = sfhttpClient.EventsStore.GetClusterEventListAsync(
"2018-04-03T18:00:00Z",
"2018-04-04T18:00:00Z")
.GetAwaiter()
.GetResult()
.ToList();
Eylül 2018'de küme durumunu ve tüm düğüm olaylarını sorgulayan ve bunları yazdıran başka bir örnek aşağıda verilmiştir.
const int timeoutSecs = 60;
var clusterUrl = new Uri(@"http://localhost:19080"); // This example is for a Local cluster
var sfhttpClient = ServiceFabricClientFactory.Create(clusterUrl);
var clusterHealth = sfhttpClient.Cluster.GetClusterHealthAsync().GetAwaiter().GetResult();
Console.WriteLine("Cluster Health: {0}", clusterHealth.AggregatedHealthState.Value.ToString());
Console.WriteLine("Querying for node events...");
var nodesEvents = sfhttpClient.EventsStore.GetNodesEventListAsync(
"2018-09-01T00:00:00Z",
"2018-09-30T23:59:59Z",
timeoutSecs,
"NodeDown,NodeUp")
.GetAwaiter()
.GetResult()
.ToList();
Console.WriteLine("Result Count: {0}", nodesEvents.Count());
foreach (var nodeEvent in nodesEvents)
{
Console.Write("Node event happened at {0}, Node name: {1} ", nodeEvent.TimeStamp, nodeEvent.NodeName);
if (nodeEvent is NodeDownEvent)
{
var nodeDownEvent = nodeEvent as NodeDownEvent;
Console.WriteLine("(Node is down, and it was last up at {0})", nodeDownEvent.LastNodeUpAt);
}
else if (nodeEvent is NodeUpEvent)
{
var nodeUpEvent = nodeEvent as NodeUpEvent;
Console.WriteLine("(Node is up, and it was last down at {0})", nodeUpEvent.LastNodeDownAt);
}
}
Örnek senaryolar ve sorgular
Burada, kümenizin durumunu anlamak için Olay Deposu REST API'lerini nasıl çağırabileceğinize ilişkin birkaç örnek verilmiştir.
Küme yükseltmeleri:
Kümenizin geçen hafta en son ne zaman başarıyla yükseltildiğini veya yükseltilmeye çalışıldığını görmek için, EventStore'daki "ClusterUpgradeCompleted" olaylarını sorgulayarak kümenize son tamamlanan yükseltmelerin API'lerini sorgulayabilirsiniz: https://mycluster.cloudapp.azure.com:19080/EventsStore/Cluster/Events?api-version=6.4&starttimeutc=2017-04-22T17:01:51Z&endtimeutc=2018-04-29T17:02:51Z&EventsTypesFilter=ClusterUpgradeCompleted
Küme yükseltme sorunları:
Benzer şekilde, yakın zamandaki bir küme yükseltmesiyle ilgili sorunlar varsa, küme varlığı için tüm olayları sorgulayabilirsiniz. Yükseltmelerin başlatılması ve yükseltmenin başarıyla tamamlandığı her UD dahil olmak üzere çeşitli olaylar görürsünüz. Ayrıca geri alma işleminin başlatıldığı noktaya ilişkin olayları ve buna karşılık gelen sistem durumu olaylarını da görürsünüz. Bunun için kullanacağınız sorgu şu şekildedir: https://mycluster.cloudapp.azure.com:19080/EventsStore/Cluster/Events?api-version=6.4&starttimeutc=2017-04-22T17:01:51Z&endtimeutc=2018-04-29T17:02:51Z
Düğüm durumu değişiklikleri:
Düğüm durumunuzun son birkaç gün içinde (düğümler yukarı veya kapalı olduğunda ya da etkinleştirildiğinde veya devre dışı bırakıldığında) (platform, kaos hizmeti veya kullanıcı girişi tarafından) değiştiğini görmek için aşağıdaki sorguyu kullanın: https://mycluster.cloudapp.azure.com:19080/EventsStore/Nodes/Events?api-version=6.4&starttimeutc=2017-04-22T17:01:51Z&endtimeutc=2018-04-29T17:02:51Z
Uygulama olayları:
Son uygulama dağıtımlarınızı ve yükseltmelerinizi de izleyebilirsiniz. Kümenizdeki tüm uygulama olaylarını görmek için aşağıdaki sorguyu kullanın: https://mycluster.cloudapp.azure.com:19080/EventsStore/Applications/Events?api-version=6.4&starttimeutc=2017-04-22T17:01:51Z&endtimeutc=2018-04-29T17:02:51Z
Bir uygulamanın geçmiş durumu:
Yalnızca uygulama yaşam döngüsü olaylarını görmenin yanı sıra, belirli bir uygulamanın durumuyla ilgili geçmiş verileri de görmek isteyebilirsiniz. Verileri toplamak istediğiniz uygulama adını belirterek bunu yapabilirsiniz. Tüm uygulama durumu olaylarını almak için bu sorguyu kullanın: https://mycluster.cloudapp.azure.com:19080/EventsStore/Applications/myApp/$/Events?api-version=6.4&starttimeutc=2018-03-24T17:01:51Z&endtimeutc=2018-03-29T17:02:51Z&EventsTypesFilter=ApplicationNewHealthReport
.
Süresi dolmuş olabilecek sistem durumu olaylarını (yaşam süresi (TTL) geçirildi) eklemek istiyorsanız, iki tür olayı filtrelemek için sorgunun sonuna ekleyin ,ApplicationHealthReportExpired
.
"myApp" içindeki tüm hizmetler için geçmiş sistem durumu:
Şu anda, hizmetler için sistem durumu raporu olayları ilgili uygulama varlığı altında olaylar olarak DeployedServicePackageNewHealthReport
gösterilir. Hizmetlerinizin "App1" için nasıl olduğunu görmek için aşağıdaki sorguyu kullanın: https://mycluster.cloudapp.azure.com:19080/EventsStore/Applications/myapp/$/Events?api-version=6.4&starttimeutc=2017-04-22T17:01:51Z&endtimeutc=2018-04-29T17:02:51Z&EventsTypesFilter=DeployedServicePackageNewHealthReport
Bölüm yeniden yapılandırma:
Kümenizde gerçekleşen tüm bölüm hareketlerini görmek için olayı sorgular PartitionReconfigured
. Bu, kümenizdeki sorunları tanılarken belirli zamanlarda hangi düğümde hangi iş yüklerinin çalıştığını öğrenmenize yardımcı olabilir. Bunu sağlayan örnek bir sorgu aşağıda verilmişti: https://mycluster.cloudapp.azure.com:19080/EventsStore/Partitions/Events?api-version=6.4&starttimeutc=2018-04-22T17:01:51Z&endtimeutc=2018-04-29T17:02:51Z&EventsTypesFilter=PartitionReconfigured
Chaos hizmeti:
Chaos hizmeti başlatıldığında veya durdurulduğunda küme düzeyinde kullanıma sunulan bir olay vardır. Chaos hizmetini son kullanımınızı görmek için aşağıdaki sorguyu kullanın: https://mycluster.cloudapp.azure.com:19080/EventsStore/Cluster/Events?api-version=6.4&starttimeutc=2017-04-22T17:01:51Z&endtimeutc=2018-04-29T17:02:51Z&EventsTypesFilter=ChaosStarted,ChaosStopped