Utilisation de Log4J avec LogStash

Je suis nouveau sur LogStash. J'ai quelques journaux écrite à partir d'une application Java dans Log4J. Je suis en train d'essayer d'obtenir ces journaux dans ElasticSearch. Pour la vie de moi, je n'arrive pas à le faire fonctionner de manière cohérente. Actuellement, je suis en utilisant la suite de logstash configuration:

input {
  file {
    type => "log4j"
    path => "/home/ubuntu/logs/application.log"
  }
}
filter {
  grok {
    type => "log4j"
    add_tag => [ "ApplicationName" ]
    match => [ "message", "%{TIMESTAMP_ISO8601:timestamp}  %{LOGLEVEL:level}" ]
  }
}
output {
  elasticsearch {
    protocol => "http"
    codec => "plain"
    host => "[myIpAddress]"
    port => "[myPort]"
  }
}

Cette configuration semble être frappé ou manquer. Je ne sais pas pourquoi. Par exemple, j'ai deux messages. L'un travaille, l'autre jette un analyser l'échec. Pourtant, je ne suis pas sûr pourquoi. Voici les messages et leurs résultats respectifs:

Tags                   Message
------                 -------
["_grokparsefailure"]  2014-04-04 20:14:11,613 TRACE c.g.w.MyJavaClass [pool-2- 
                       thread-6] message was null from https://domain.com/id-1/env-
                       MethodName

["ApplicationName"]    2014-04-04 20:14:11,960 TRACE c.g.w.MyJavaClass [pool-2-
                       thread-4] message was null from https://domain.com/id-1/stable-
                       MethodName

Celle avec ["ApplicationName"] a mon champs personnalisés de timestamp et level. Cependant, l'entrée avec ["_grokparsefailure"] ne PAS avoir mes champs personnalisés. L'étrange pièce, les journaux sont presque identiques, comme indiqué dans la colonne message ci-dessus. C'est vraiment déroutant de moi, et pourtant, je ne sais pas comment comprendre quel est le problème ou comment obtenir de l'au-delà. Quelqu'un sait-il comment comment je peux l'utiliser à l'importation log4j journaux en logstash et d'obtenir les champs suivants de façon uniforme:

  • Niveau De Journal
  • Timestamp
  • Message de journal
  • Nom De La Machine
  • Fil

Merci pour toute aide que vous pouvez fournir. Même si je peux juste le niveau de journal, timestamp, et le message de log, qui serait d'une grande aide. J'apprécie sincèrement!

  • je ne vois pas comment votre grok modèle de matchs. Vous avez deux espaces avant les %{LOGLEVEL:niveau}". Si vous avez à traiter avec un nombre variable d'espaces, utilisez \s+ à la place des espaces pour correspondre à un ou plusieurs espaces. Et +1 sur le grok débogueur répondre
InformationsquelleAutor user3469584 | 2014-04-04