2017-07-25 1 views
0

Ceci est ma première expérience avec l'utilisation de grok et elasticsearch. J'essaie d'écrire un fichier grok pour analyser la ligne suivante.Motif grok d'écriture pour séparer les paires de valeurs clés

2017-07-25 10:48:23,477 [[api-my-app-v1-20.0.0].apiHttpListenerConfig.worker.58] INFO esb.api-my-app-v1.get-blah.http.response - transactionID=f61b8053-70d2-11e7-b274-3639cc5335d0 creationTime=2017-07-25T10:48:23.254+10:00 txnState=END timeTaken=11 

Jusqu'à présent, je l'ai écrit grok ...

%{TIMESTAMP_ISO8601:timestamp}\s+%{DATA:thread}\s+%{LOGLEVEL:loglevel}\s+%{JAVACLASS:category}\s+-\s+%{GREEDYDATA:msgbody} 

Il me redonne cette ....

{ 
    "timestamp": [ 
    [ 
     "2017-07-25 10:48:23,477" 
    ] 
    ], 
    "YEAR": [ 
    [ 
     "2017" 
    ] 
    ], 
    "MONTHNUM": [ 
    [ 
     "07" 
    ] 
    ], 
    "MONTHDAY": [ 
    [ 
     "25" 
    ] 
    ], 
    "HOUR": [ 
    [ 
     "10", 
     null 
    ] 
    ], 
    "MINUTE": [ 
    [ 
     "48", 
     null 
    ] 
    ], 
    "SECOND": [ 
    [ 
     "23,477" 
    ] 
    ], 
    "ISO8601_TIMEZONE": [ 
    [ 
     null 
    ] 
    ], 
    "thread": [ 
    [ 
     "[[api-my-app-v1-20.0.0].apiHttpListenerConfig.worker.58]" 
    ] 
    ], 
    "loglevel": [ 
    [ 
     "INFO" 
    ] 
    ], 
    "category": [ 
    [ 
     "esb.api-my-app-v1.get-blah.http.response" 
    ] 
    ], 
    "msgbody": [ 
    [ 
     "transactionID=f61b8053-70d2-11e7-b274-3639cc5335d0 creationTime=2017-07-25T10:48:23.254+10:00 txnState=END timeTaken=11" 
    ] 
    ] 
} 

C'est presque ce que je veux. Comment puis-je séparer le msgbody de mon résultat actuel en paires de valeurs clés?

grâce

+0

Peut-être pourriez-vous expliquer ce que vous voulez extraire? De plus, si vous voulez extraire une paire de valeurs clés, vous pouvez utiliser le filtre [kv] (https://www.elastic.co/guide/fr/logstash/current/plugins-filters-kv.html), une fois que vous avez chaîne contenant uniquement des paires clé-valeur. – baudsp

+0

Salut, Désolé pour l'imprécision. Je suis reformulé ma question pour être plus précis. Votre note à propos du filtre kv semble que cela pourrait être utile pour moi. Je vais y jeter un coup d'oeil maintenant. – Richie

+0

Merci. J'ai ajouté une réponse avec le filtre kv. – baudsp

Répondre

0

Avec le filtre kv:

kv { 
    source => "msgbody" 
} 

vous aurez les valeurs paire de clés de la msgbody dans les champs de votre résultat. De plus, vous n'aurez pas à changer votre motif de grok si les clés changent.

+0

merci. Ça a marché! – Richie

+0

@Richie De rien! – baudsp