Logstash Grok modèle avec des guillemets doubles
Je suis d'analyse journaux du proxy avec Logstash et son Grok filtre. Les journaux contiennent les chaînes entre guillemets :
1438120705 [.....] "SEF-EDP8" - "C"
"/GPM/1023/5745-7/456V/"
Avec le Grok Débogueur le modèle suivant fonctionne comme un charme :
%{NUMBER:ts} [......] (-|"%{USERNAME:token1}") (-|%{DATA:token2}) (-|"%{WORD:token3}") (-|"%{DATA:token4}")
Cela ne fonctionne pas avec Logstash est Grok en raison de la double quotes dans le grok modèle. Logstash journal des erreurs :
Error: Expected one of #, {, } at line 9, column 204 (byte 374) after
filter {
grok {
match => { "message" => "%{NUMBER:ts} [......] ("
Donc j'utilise la QuotedString grok motif au lieu :
%{NUMBER:ts} [......] (-|%{QS:token1}) (-|%{DATA:token2}) (-|%{QS:token3}) (-|%{QS:token4})
Cela fonctionne avec les Grok Débogueur ainsi, mais les citations sont extraites avec chaînes entre guillemets. Il ne fonctionne pas avec Logstash soit :
token1 : ""SEF-EDP8"" token2 : null token3 : ""C"" token4 :
""/GPM/1023/5745-7/456V/""
Comment puis-je le faire fonctionner avec Logstash?
Comment puis-je supprimer ces indésirables supplémentaires guillemets?
Qu'advient-il si vous venez d'échapper les guillemets par des barres obliques inverses?
Essayez
il n'aime pas non plus
Il n'a pas besoin de s'échapper,
Stribiżew : Les parenthèses ne change pas logstash comportement : Erreur: ce qui est Attendu de #, {, } à la ligne 9, colonne 204 (byte 374) après le filtre { grok { match => { "message" => "%{NOMBRE:ts} [......] ("
Essayez
%{NUMBER:ts} \[[^\]]*] (-|"(%{DATA:token1})") (-|"(%{DATA:token2})") (-|"(%{DATA:token3})")( (-|"(%{DATA:token4})"))
. Je n'ai plus d'exemple en entrée, donc pas sûr que cela fonctionne avec tous les d'entre eux.il n'aime pas non plus
Il n'a pas besoin de s'échapper,
QS
correspond à la cite des chaînes par le design. Vous avez besoin DATA
jetons.Stribiżew : Les parenthèses ne change pas logstash comportement : Erreur: ce qui est Attendu de #, {, } à la ligne 9, colonne 204 (byte 374) après le filtre { grok { match => { "message" => "%{NOMBRE:ts} [......] ("
OriginalL'auteur c-val | 2016-02-24
Vous devez vous connecter pour publier un commentaire.
Si vous échapper " avec antislash puis il fonctionne très bien.
%{NOMBRE:ts} [......] (-|"%{Nom d'utilisateur:token1}") (-|%{DONNÉES:token2}) (-|"%{MOT:token3}") (-|"%{DONNÉES:token4}")
Votre nouvelle chaîne va ressembler
%{NOMBRE:ts} [......] (-|\"%{Nom d'utilisateur:token1}\") (-|%{DONNÉES:token2}) (-|\"%{MOT:token3}") (-|\"%{DONNÉES:token4}\")
OriginalL'auteur NileshP
Changer l'extérieur des guillemets pour les guillemets simples au lieu de cela a fonctionné pour moi:
Espère que cela aide.
OriginalL'auteur SebaGra
Essayer gsub après que vous avez extrait les champs avec des citations
https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-gsub
OriginalL'auteur geekscrap