2016-09-26 3 views
3

Ich versuche eine Tortendiagramm-Visualisierung zu erstellen, die die 10 häufigsten eingehenden Anfragen anzeigt. Ich habe eine Suchanfrage, die nur die eingehenden Anfragen filtert, die ein Feld namens Nachrichten haben, das wie folgt aussieht: "Incoming request/api/someaction". Wie mache ich die Aggregation basierend auf dem/api/someaction Teil, sondern auf dem gesamten String (weil dann "Incoming" als ein Begriff gezählt wird.)Kibana: Tortendiagramme basierend auf Teilstrings eines Felds

Oder ... kann ich benutzerdefinierte Felder erstellen, die z beispielsweise eine Teilkette eines anderen Feldes?

Dank

+0

Verwenden Sie Logstash oder etwas anderes? Wenn Logstash, wie sieht Ihre Konfiguration aus? – Val

+0

Ich glaube, dass es einen Weg gibt, den "fortgeschrittenen" JSON-Eingang zu verwenden. Ich untersuche das derzeit auch, konnte aber bisher nichts finden. – exhuma

Antwort

1

wie bereits im Kommentar erwähnt, ich habe eine Lösung für mein Problem kommen. Für mich hatte ich Werte wie foo bar baz und ich brauchte das extrahieren Das erste Wort konnte ich über das Feld "Advanced → JSON" unter Verwendung des folgenden Skripts eingeben:

{ 
    "script": "(_value.indexOf(' ') > 0 ? _value.substring(0, _value.indexOf(' ')) : _value)" 
} 

Also, in der Kibana Schnittstelle sieht dies wie folgt aus:

Kibana visualisation config with scripted value


also in Ihrem Fall sollte das Skript wahrscheinlich so etwas wie:

{ 
    "script": "(_value.indexOf(' ') > 0 ? _value.substring(_value.lastIndexOf(' ')) : _value)" 
} 

Offensichtlich Dies setzt voraus, dass der Teil der Nachricht, den Sie extrahieren möchten, dem letzten Leerzeichen in der Zeichenfolge folgt. Ich habe eine Wegwerf-Java-Klasse geschrieben, um die oben zu testen:

public class Foo { 

    public static void main(String[] args){ 
     String tester = "Incoming request /api/someaction"; 
     String result = tester.substring(tester.lastIndexOf(" ")); 
     System.out.println(result); 
    } 

} 

Soweit ich das beurteilen kann, Sie alle Java-Code in der „Skript“ Schlüssel des JSON Feld verwenden können. Sie sollten also auch in der Lage sein, Regexes mit String.replaceAll oder einer anderen String-Methode für diese Angelegenheit zu verwenden ...

Ich habe dies jedoch nicht getestet. Wenn jemand Informationen dazu hat, können Sie gerne einen Kommentar hinterlassen.

Verwandte Themen