Anti-Pattern: Daten mithilfe der JavaScript-Richtlinie auf Drittanbieterservern protokollieren

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

Logging ist eine der effizienten Methoden zur Fehlerbehebung. Informationen zur API wie Header, Formularparameter, Suchparameter oder dynamische Variablen. späterer Referenz. Die Informationen können lokal in den Message Processors protokolliert werden (nur Apigee Edge für Private Cloud) oder wie Sumo Logic, Splunk oder Loggly übertragen werden.

Anti-Pattern

Im folgenden Code werden die Daten mit dem httpClient-Objekt in einer JavaScript-Richtlinie in einem Sumo Logic-Server. Das bedeutet, dass das Logging Anfrage-/Antwortverarbeitung. Dieser Ansatz ist kontraproduktiv, da er die Verarbeitung und wodurch die Gesamtlatenzen erhöht werden.

LogData_JS:

<!-- /antipatterns/examples/1-4.xml -->
<Javascript async="false" continueOnError="false" enabled="true" timelimit="2000" name="LogData_JS">
  <DisplayName>LogData_JS</DisplayName>
  <ResourceURL>jsc://LogData.js</ResourceURL>
</Javascript>

LogData.js:

<!-- /antipatterns/examples/1-5.xml -->
var sumoLogicURL = "...";
httpClient.send(sumoLogicURL);
waitForComplete();

Schuld ist hier der Aufruf von waitForComplete(), wodurch die bis der Logging-Prozess abgeschlossen ist. Ein gültiges Muster besteht darin, indem Sie diesen Aufruf entfernen.

Auswirkungen

  • Die Ausführung des Protokollierungscodes über die JavaScript-Richtlinie erhöht die Latenz der API.
  • Gleichzeitige Anfragen können die Ressourcen des Message Processor belasten und folglich die sich nachteilig auf die Verarbeitung anderer Anfragen auswirken.

Best Practice

  • MessageLogging-Richtlinie zum Übertragen/Protokollieren von Daten an Protokollserver oder an Drittanbieterprotokolle verwenden Verwaltungsdienste wie Sumo Logic, Splunk, Loggly usw.
  • Der größte Vorteil der Richtlinie für das Nachrichten-Logging besteht darin, dass sie im Beitrag Client Flow, der ausgeführt wird, nachdem die Antwort an die anfragende Client-App zurückgesendet wurde.
  • Die Definition dieser Richtlinie im Post-Client-Ablauf hilft bei der Trennung der Logging-Aktivität Verarbeitung von Anfragen und Antworten und vermeiden so Latenzen.
  • Gibt es eine bestimmte Anforderung oder einen Grund für das Logging über JavaScript (nicht im Client-Flow-Option), muss dies asynchron erfolgen. Mit anderen Worten: Verwendest du ein httpClient-Objekt, musst du dafür sorgen, dass der JavaScript-Code waitForComplete NICHT implementieren

Weitere Informationen