Aracılığıyla paylaş


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ımlar
  • EndTimeUtc: 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ıl
  • eventstypesfilter: Bu size belirli olay türleri için filtreleme seçeneği sunar
  • ExcludeAnalysisEvents: '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/$/Eventsyapı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:00Zarası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:00Ztü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