2017-08-08 3 views
2

Ma question concerne le filtre grok dans logstash. Pour le filtre de logstash j'ai besoin d'analyser un fichier journal. Déclaration de journal Exemple ci-dessousExpression régulière personnalisée pour grok

2017-07-31 09: 01: 53135 - INFO [QuorumPeer [myid = 1]/0: 0: 0: 0: 0: 0: 0: 0: 2181: ZooKeeperServer @ 617] - session établie 0x15d964d654646f4 avec délai négocié 5000 pour client /10.191.202.89:56232

Je veux analyser l'instruction entre [] en utilisant l'expression régulière, mais n'a pas obtenu de succès? De dessus de la ligne

  1. QuorumPeer [myid = 1]/0: 0: 0: 0: 0: 0: 0: 0: 2181 doit être mis en correspondance avec le fil id.
  2. ZooKeeperServer doit être mis en correspondance avec le nom de la classe
  3. doit être mis en correspondance avec le numéro de ligne

quelqu'un peut me aider avec l'expression régulière pour cela?

+0

Pouvez-vous ajouter ce que vous avez déjà essayé? – TehSphinX

+0

Souhaitez-vous poster votre fichier conf ensemble afin que je puisse voir exactement comment tout cela est supposé être fait? J'ai été bloqué toute la journée en essayant de comprendre comment faire fonctionner une expression régulière personnalisée et même dans le débogueur de kibana je ne peux pas le faire correctement. Merci – Elijah

Répondre

1

Vous pouvez utiliser

\[(?<threadid>\w+[^/]*/[\d:]+):(?<classname>[^\]@]+)@(?<linenumber>\d+)\] 

Détails

  • \[ - un [
  • (?<threadid>\w+[^/]*/[\d:]+) littérale - Groupe "threadid": 1+ caractères de mot, puis 0+ caractères autres que / , /, puis 1 ou plusieurs chiffres ou : (notez que vous pouvez ajuster cette motif comme vous le souhaitez, par ex. il peut aussi être écrit (?<threadid>.*?[\d:]+) mais il ne sera pas si sûr)
  • : - deux points
  • (?<classname>[^\]@]+) - Groupe « classname »: 1 caractères ou plus autre que ] et @
  • @ - un @ omble chevalier
  • (?<linenumber>\d+) - Groupe "linenumber": 1 ou plusieurs chiffres
  • \] - un ] littéral.

résultats des tests en ligne à grokdebug.herokuapp.com:

enter image description here

+0

Merci d'avoir répondu à la question. Je ne veux pas coder QuorumPeer en regex. Cela ne fonctionnera pas en cas d'instruction ci-dessous: [NIOServerCxn.Factory: 0.0.0.0/0.0.0.0: 2181: NIOServerCnxn @ 178] – BobCoder

+0

@BobCoder J'ai mis à jour la réponse. –