Bei der Verwendung von OpenShift Aggregated Logging werden die Protokolle in elasticsearch gespeichert. Die Zeile, die von Apache protokolliert wird, endet jedoch in einem message
-Feld.
Ich möchte in Kibana Abfragen erstellen, wo ich individuell auf die URL, den Statuscode und andere Felder zugreifen kann. Dazu muss das spezielle Apache Access Log Parsing durchgeführt werden.
Wie kann ich das tun?
Dies ist ein Beispieleintrag in kibana:
%Vor%Haftungsausschluss : Ich habe das nicht in openshift getestet. Ich weiß nicht, welchen Tech Stack Sie für Ihren Microservice verwenden.
Dies mache ich in einer Spring-Boot-Anwendung (mit Logback), die in Kubernetes bereitgestellt wird.
1. Verwenden Sie logstash encoder für logback (Dies wird Protokolle im JSON-Format schreiben, das mehr ELK-Stack-freundlich ist)
Ich habe eine Gradle-Abhängigkeit, um dies zu ermöglichen
%Vor%Konfigurieren Sie dann LogstashEncoder als Encoder im Appender in logback-spring.groovy / logback-spring.xml (oder logabck.xml)
2. Einige Filter oder Bibliotheken zum Schreiben des Zugriffsprotokolls
Für 2. Verwenden Sie entweder
(Dies ist, was ich benutze)
Es gibt in einem schönen json Format, wie folgt
%Vor%ODER
ODER
Fügen Sie eine Bean-Definition hinzu
%Vor% Dann setze org.springframework.web.filter.CommonsRequestLoggingFilter auf DEBUG, dies kann mit dem application.properties
durch Hinzufügen von:
Tags und Links openshift-origin fluentd