Megosztás a következőn keresztül:


EventStore API-k lekérdezése fürteseményekhez

Ez a cikk a Service Fabric 6.2-es vagy újabb verziójában elérhető EventStore API-k lekérdezését ismerteti – ha többet szeretne megtudni az EventStore szolgáltatásról, tekintse meg az EventStore szolgáltatás áttekintését. Az EventStore szolgáltatás jelenleg csak az elmúlt 7 nap adataihoz fér hozzá (ez a fürt diagnosztikai adatmegőrzési szabályzatán alapul).

Megjegyzés

Az EventStore API-k általánosan elérhetőek a Service Fabric 6.4-es verziójától csak az Azure-on futó Windows-fürtök esetében.

Az EventStore API-k közvetlenül egy REST-végponton keresztül vagy programozott módon érhetők el. A lekérdezéstől függően számos paraméter szükséges a megfelelő adatok gyűjtéséhez. Ezek a paraméterek általában a következők:

  • api-version: a használt EventStore API-k verziója
  • StartTimeUtc: meghatározza annak az időszaknak a kezdetét, amelyet meg szeretne nézni
  • EndTimeUtc: az időszak vége

Ezen paraméterek mellett választható paraméterek is elérhetők, például:

  • timeout: felülbírálja az alapértelmezett 60 másodperces időtúllépést a kérelemművelet végrehajtásához
  • eventstypesfilter: ez lehetővé teszi adott eseménytípusok szűrését
  • ExcludeAnalysisEvents: ne adja vissza az "Elemzés" eseményeket. Alapértelmezés szerint az EventStore-lekérdezések lehetőség szerint "elemzési" eseményekkel térnek vissza. Az elemzési események gazdagabb működési csatornaesemények, amelyek a szokásos Service Fabric-eseményeken túl további kontextust vagy információkat tartalmaznak, és részletesebb információkat biztosítanak.
  • SkipCorrelationLookup: ne keressen lehetséges korrelált eseményeket a fürtben. Alapértelmezés szerint az EventStore megpróbálja korrelálni az eseményeket egy fürtben, és amikor lehetséges, összekapcsolja az eseményeket.

A fürtök minden entitása lehet események lekérdezése. A típus összes entitásának eseményeit is lekérdezheti. Lekérdezheti például egy adott csomópont eseményeit vagy a fürt összes csomópontját. Az entitások aktuális készlete, amelyekhez eseményeket kérdezhet le (a lekérdezés strukturálásának módjával):

  • Fürt: /EventsStore/Cluster/Events
  • Csomópontok: /EventsStore/Nodes/Events
  • Csomópont: /EventsStore/Nodes/<NodeName>/$/Events
  • Alkalmazások: /EventsStore/Applications/Events
  • Alkalmazás: /EventsStore/Applications/<AppName>/$/Events
  • Szolgáltatások: /EventsStore/Services/Events
  • Szolgáltatás: /EventsStore/Services/<ServiceName>/$/Events
  • Partíciók: /EventsStore/Partitions/Events
  • Partíció: /EventsStore/Partitions/<PartitionID>/$/Events
  • Replikák: /EventsStore/Partitions/<PartitionID>/$/Replicas/Events
  • Replika: /EventsStore/Partitions/<PartitionID>/$/Replicas/<ReplicaID>/$/Events

Megjegyzés

Alkalmazás- vagy szolgáltatásnévre való hivatkozáskor a lekérdezésnek nem kell tartalmaznia a "háló:/" kifejezést. Előtag. Emellett ha az alkalmazás- vagy szolgáltatásnevekben szerepel "/" szó, a lekérdezés működése érdekében váltson "~" névre. Ha például az alkalmazás "fabric:/App1/FrontendApp" néven jelenik meg, az alkalmazásspecifikus lekérdezések a következőképpen lesznek strukturálva /EventsStore/Applications/App1~FrontendApp/$/Events: . Emellett a szolgáltatások állapotjelentései a megfelelő alkalmazás alatt jelennek meg, így a megfelelő alkalmazásentitás eseményeit kérdezheti le DeployedServiceHealthReportCreated .

Az EventStore lekérdezése REST API-végpontokon keresztül

Az EventStoret közvetlenül egy REST-végponton keresztül kérdezheti le, ha a következőre irányuló kéréseket küld GET : <your cluster address>/EventsStore/<entity>/Events/.

Ha például a és 2018-04-04T18:00:00Zközötti összes fürteseményt 2018-04-03T18:00:00Z le szeretné kérdezni, a kérés a következőképpen nézne ki:

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

Ez vagy nem ad vissza eseményeket, vagy a JSON-ban visszaadott események listáját:

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

Itt láthatjuk, hogy a és között 2018-04-03T18:00:00Z ez a fürt sikeresen végrehajtotta az első frissítését, amikor először állt fel, a-tól "CurrentClusterVersion": "0.0.0.0:""TargetClusterVersion": "6.2:1.0"a-ig a-ben"OverallUpgradeElapsedTimeInMs": "120196.5212".2018-04-04T18:00:00Z

Az EventStore programozott lekérdezése

Az EventStoret programozott módon is lekérdezheti a Service Fabric ügyfélkódtárán keresztül.

Miután beállította a Service Fabric-ügyfelet, a következőképpen kérdezheti le az eseményeket az EventStore eléréséhez: sfhttpClient.EventStore.<request>

Íme egy példakérés a és 2018-04-04T18:00:00Zközötti 2018-04-03T18:00:00Z összes fürteseményre a GetClusterEventListAsync függvényen keresztül.

var sfhttpClient = ServiceFabricClientFactory.Create(clusterUrl, settings);

var clstrEvents = sfhttpClient.EventsStore.GetClusterEventListAsync(
    "2018-04-03T18:00:00Z",
    "2018-04-04T18:00:00Z")
    .GetAwaiter()
    .GetResult()
    .ToList();

Íme egy másik példa, amely lekérdezi a fürt állapotát és az összes csomóponteseményt 2018 szeptemberében, és kinyomtatja őket.

  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);
      }
  }

Példaforgatókönyvek és lekérdezések

Íme néhány példa arra, hogyan hívhatja meg az Event Store REST API-kat a fürt állapotának megértéséhez.

Fürtfrissítések:

A fürt legutóbbi sikeres frissítésének vagy frissítési kísérletének megtekintéséhez lekérdezheti az API-kat a fürt nemrégiben befejezett frissítéseiről az EventStore "ClusterUpgradeCompleted" eseményeinek lekérdezésével: 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

Fürtfrissítési problémák:

Hasonlóképpen, ha problémák merültek fel a fürt legutóbbi frissítésével kapcsolatban, lekérdezheti a fürtentitás összes eseményét. Különböző eseményeket fog látni, beleértve a frissítések indítását, valamint azokat az UD-kat, amelyeken a frissítés sikeresen átgördült. Látni fogja a visszaállítás indításának pontjára vonatkozó eseményeket és a megfelelő állapoteseményeket is. A következő lekérdezést használhatja ehhez: 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

Csomópont állapotváltozásai:

A csomópont állapotváltozásainak megtekintéséhez az elmúlt néhány napban – amikor a csomópontok felfelé vagy lefelé mentek, vagy aktiválva vagy inaktiválva voltak (a platform, a káoszszolgáltatás vagy a felhasználói bevitel alapján) – használja a következő lekérdezést: 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

Alkalmazásesemények:

Nyomon követheti a legutóbbi alkalmazástelepítéseket és -frissítéseket is. A fürt összes alkalmazáseseményének megtekintéséhez használja a következő lekérdezést: 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

Alkalmazás előzményállapota:

Amellett, hogy csak az alkalmazás életciklus-eseményeit látja, érdemes lehet megtekintenie egy adott alkalmazás állapotára vonatkozó előzményadatokat is. Ehhez meg kell adnia annak az alkalmazásnak a nevét, amelyhez adatokat szeretne gyűjteni. Ezzel a lekérdezésrel lekérheti az alkalmazás állapoteseményeit: 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. Ha olyan állapoteseményeket szeretne belefoglalni, amelyek lejártak (lejárt az élettartamuk (TTL), adja hozzá ,ApplicationHealthReportExpired a lekérdezés végéhez, hogy kétféle eseményre szűrjön.

A "myApp" összes szolgáltatásának előzményállapota:

Jelenleg a szolgáltatások állapotjelentési eseményei eseményekként DeployedServicePackageNewHealthReport jelennek meg a megfelelő alkalmazásentitásban. Az "App1" szolgáltatásokkal kapcsolatos műveletek megtekintéséhez használja a következő lekérdezést: 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

Partíciók újrakonfigurálása:

A fürtben történt összes partíciómozgás megtekintéséhez kérdezze le az eseményt PartitionReconfigured . Ez segíthet megállapítani, hogy a fürt problémáinak diagnosztizálásakor milyen számítási feladatok futottak az adott csomóponton. Íme egy mintalekérdezés, amely ezt teszi: 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 szolgáltatás:

Van egy esemény, amikor a Chaos szolgáltatás elindul vagy leáll, amely a fürt szintjén jelenik meg. A Chaos szolgáltatás legutóbbi használatának megtekintéséhez használja a következő lekérdezést: 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