
Wir haben eine interne Java-Anwendung, die von unseren Entwicklern erstellt wurde log4j
und die zum Formatieren der Protokollnachrichten verwendet wird. Vor Kurzem haben wir begonnen, diese auf Google Kubernetes Engine auszuführen, sodass Protokolle automatisch von stdout an Stackdriver weitergeleitet werden. Alle Protokolle werden jedoch mit dem Schweregrad angezeigt INFO
. Eine solche Nachricht hat einen TextPayload, der wie folgt beginnt:
18 Jul 2019 10:11:32.334 [ERROR] [req=api-test--870259294-18071111-11 sess=cwfscqttcfqh1acsictx3toxv reqMs=4]
Die Entwickler haben offensichtlich beabsichtigt, dass es sich hier um eine ERROR
Schweregradmeldung handelt, aber da sie bei der Entwicklung ihrer Anwendung nicht an Stackdriver gedacht haben, ist die Meldung unstrukturiert und wird als INFO
Schweregrad gemeldet.
Es fühlt sich falsch an, die Anwendung ändern zu müssen, um die von uns verwendete zentrale Protokollierung zu berücksichtigen. Unsere Kunden verwenden möglicherweise andere Protokollierungslösungen. Gibt es eine Möglichkeit, Stackdriver dazu zu bringen, die TextPayload zu verwenden, um den Schweregrad zu bestimmen? Ich verwende Google Kubernetes Engine, habe also keine Protokollierungsinfrastruktur eingerichtet und habe keinen Zugriff darauf, der über den von Google bereitgestellten hinausgeht.
Ich bin an dieser Änderung interessiert, da die Fehlerberichterstattung der Google Cloud Platform ein leistungsstarkes Tool zum Verfolgen von Fehlermeldungen ist, aber zu Recht nur für Protokolle mit einem ERROR
oder höheren Schweregrad gilt. Das einfache Erstellen einer Metrik für die Protokolle in Stackdriver gibt mir nicht die gewünschte Kontrolle.
Antwort1
Die kurze Antwort lautet: Nein. Sie müssen Ihren Code ändern und eine ordnungsgemäße Protokollierung mit der richtigen Schwere für jede Nachricht implementieren. Sie können Ihre Stackdriver-Protokolle wie üblich nach BigQuery exportieren und dann komplexere Abfragen ausführen.
Hier finden Sie einige hilfreiche Links: