2017-05-03 1 views
2

Ich habe eine Reihe von Informationen in meinen Protokollen. Es ist im JSON-Format.Logstash Erstellen Sie ein Array von Werten aus der Zeichenfolge

{ 
    "someField":"someValue", 
    "columns":"[colName1, colName2, colName3, ... colNameN]", 
    "someField":"someValue" 
} 

Ich mag diese columns als ein Array in einem gleichen Feld gespeichert werden.

Der Usecase, den ich anzeigen möchte, ist, wie viele Benutzer die bestimmte Spalte colName1 und die Anzahl davon verwendet haben.

Ich bin mit ELK stak 5.x

Antwort

1

ich die Lösung haben beide durch Bezugnahme die obigen Antworten. Das habe ich gemacht.

Um [ und ] aus dem String entfernt ich benutzen:

mutate { 
     gsub => ["columns", "[\[\]]", ""] 
    } 

und dann in einem Array zu konvertieren:

mutate { 
     split => { "columns" => "," } 
    } 
1

Mutate in output.conf könnte Ihnen helfen.

Folgen Sie diesem Link - https://www.elastic.co/guide/en/logstash/current/plugins-filters-mutate.html#plugins-filters-mutate-replace

Obwohl direkte Umwandlung von String-Array wird nicht unterstützt. Ich habe den gleichen Anwendungsfall vor einiger Zeit behandelt, Merge-Funktionalität dafür verwendet. Ich würde vorschlagen, ein Dummy-Feld zu haben und mit 'Spalten' Feld zu verschmelzen, um neues Feld zu erstellen. Hoffe das hilft.

2

wenn Ihre Quelle direkt json-Format

das Plugin json verwenden ist

filter { 
    json { 
    source => "message" 
    } 
} 

Das Array-Feld wird automatisch

zu Array konvertieren

https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html

+0

Ich verstehe, dass es es wird automatisch konvertieren Array sein. aber in meinem Fall verwende ich ThreadContext, um den Wert zu setzen. und ThreadContext unterstützt nur 'String'-Vales. Obwohl meine Werte in einem Array-Format angezeigt werden, werden sie tatsächlich in einem Protokollformat in einer Protokolldatei exportiert. Also wird das in diesem Fall funktionieren? –

+0

ThreadContext ist das Logstash-Plugin? wenn nicht das json Format, das du zur Verfügung stellst, sollte vom Nachrichtenfeld kommen standardmäßig, also ich weiß dich nicht bedeutet ThreadContext –

+0

Nein ist es nicht logstash plugin aber es ist eine Bibliothek in Java, die mir hilft, Werte in ein Feld zu setzen und es zu benutzen über. –

Verwandte Themen