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:00Z
kö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:00Z
kö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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: