Get it on Google Play
Tu partner Freelance para tus proyectos IT

Todos los logs Java y Liferay en un solo lugar con ElasticSearch, Logstash y Kibana

08-04-2020
ETL Logstash

ETL Logstash

En el vídeo de esta semana hemos montado un sistema para indexar los logs de cualquier aplicación Java(De hecho, es fácil modificarlo para cualquier aplicación) en ElasticSearch:

El fichero donde definimos el proceso ETL(Estract, Transform & Load) es el siguiente:

input {

        file {
                type => "java"
                path => "/media/albert/datos/tests/liferay-ce-portal-7.2.1-ga2/tomcat-9.0.17/logs/catalina.out"
                codec => multiline {
                        pattern => "^%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{TIME}.*"
                        negate => "true"
                        what => "previous"
                        }
                }       

        }

filter {

          #If log line contains tab character followed by 'at' then we will tag that entry as stacktrace
          if [message] =~ "\tat" {
            grok {
              match => ["message", "^(\tat)"]
              add_tag => ["stacktrace"]
            }
          }

          #Grokking Spring Boot's default log format
          grok {
            match => [ "message",
                       "(?<timestamp>%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{TIME})  %{LOGLEVEL:level} %{NUMBER:pid} --- \[(?<thread>[A-Za-z0-9-]+)\] [A-Za-z0-9.]*\.(?<class>[A-Za-z0-9#_]+)\s*:\s+(?<logmessage>.*)",
                       "message",
                       "(?<timestamp>%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{TIME})  %{LOGLEVEL:level} %{NUMBER:pid} --- .+? :\s+(?<logmessage>.*)"
                     ]
          }

          #Parsing out timestamps which are in timestamp field thanks to previous grok section
          date {
            match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss.SSS" ]
          }

        }

output {

        stdout {
                }

        elasticsearch {
                hosts => [ "localhost:9200" ]
                index => "liferay"
                }

        }

Y una vez tenemos nuestro proceso definido solo tenemos que ejecutarlo con la siguiente sentencia:

logstash -f fichero.logstash
Si te ha servido, por favor comparte
 

Leave a Reply