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

Sie lesen gerade die Apigee Edge -Dokumentation.
Zur Apigee X -Dokumentation.
info

Die Protokollierung ist eine der effizienten Möglichkeiten zur Fehlerbehebung. Die Informationen zur API-Anfrage, z. B. Header, Formularparameter, Abfrageparameter, dynamische Variablen usw., können zur späteren Referenz protokolliert werden. Die Informationen können lokal auf den Message Processors (nur Apigee Edge für Private Cloud) oder auf Drittanbieterservern wie Sumo Logic, Splunk oder Loggly protokolliert werden.

Anti-Pattern

Im folgenden Code wird das httpClient Objekt in einer JavaScript-Richtlinie verwendet, um die Daten auf einem Sumo Logic-Server zu protokollieren. Das bedeutet, dass die Protokollierung während der Verarbeitung von Anfragen und Antworten erfolgt. Dieser Ansatz ist kontraproduktiv, da er die Verarbeitungszeit verlängert und somit die Gesamtlatenz erhöht.

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

Der Schuldige ist hier der Aufruf von waitForComplete(), der die Vorgänge des Aufrufers unterbricht, bis die Protokollierung abgeschlossen ist. Ein gültiges Muster besteht darin, dies asynchron zu gestalten, indem dieser Aufruf entfernt wird.

Auswirkungen

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

Best Practice

  • Verwenden Sie die MessageLogging-Richtlinie, um Daten an Logserver oder Drittanbieter-Log verwaltungsdienste wie Sumo Logic, Splunk, Loggly usw. zu übertragen oder zu protokollieren.
  • Der größte Vorteil der MessageLogging-Richtlinie besteht darin, dass sie im Post ClientFlow definiert werden kann, der ausgeführt wird, nachdem die Antwort an die anfragende Clientanwendung zurückgesendet wurde.
  • Wenn diese Richtlinie im PostClientFlow definiert ist, werden die Protokollierungsaktivität und die Verarbeitung von Anfragen und Antworten getrennt, wodurch Latenzen vermieden werden.
  • Wenn es eine bestimmte Anforderung oder einen Grund für die Protokollierung über JavaScript gibt (nicht die oben erwähnte Option für den Post ClientFlow), muss dies asynchron erfolgen. Wenn Sie also, wenn Sie ein httpClient-Objekt verwenden, müssen Sie darauf achten, dass in JavaScript NICHT implementiert ist waitForComplete

Weitere Informationen