OpenShift Aggregierte Protokollierung: Analysiert das Apache-Zugriffsprotokoll

8

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%     
Niko Sams 20.03.2017, 08:32
quelle

1 Antwort

0

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

A. Verwenden Sie die Bibliothek "net.rakugakibox.springbootext: spring-boot-ext-logback-access: 1.6"

(Dies ist, was ich benutze)

Es gibt in einem schönen json Format, wie folgt

%Vor%

ODER

B. Verwenden Sie Logbacks T-Filter

ODER

C Spring's CommonsRequestLoggingFilter (hat das nicht wirklich getestet)

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:

erfolgen %Vor%     
so-random-dude 29.03.2017 18:28
quelle

Tags und Links