2016-07-05 11 views
1

Ich versuche Logstash 2.3.3 WebSocket Eingang arbeiten zu bekommen.Wie konfiguriere ich Logstash 2.3.3 Websocket

Logstash: https://download.elastic.co/logstash/logstash/logstash-2.3.3.tar.gz

Websocket Input Plugin für Logstash: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-websocket.html

Websocket Server: https://github.com/joewalnes/websocketd/releases/download/v0.2.11/websocketd-0.2.11-linux_amd64.zip

Websocket Kunde: Chrome Plugin "Simple Web Socket Client"

Ich kenne ein Fehler im letzten Jahr Logstash 1.5.0 und das WebSocket Input-Plugin eingereicht. https://github.com/logstash-plugins/logstash-input-websocket/issues/3 Ich habe auch die gleichen Fehlermeldungen erhalten, obwohl ich sie nicht mehr reproduzieren kann. Das Folgende ist meine derzeitige Vorgehensweise und das Ergebnis. Ich hoffe, dass der Fehler behoben wurde und ich die richtige Konfiguration nicht finden kann.

Zuerst habe ich das Plugin installiert und bestätigt, dass es als installiert aufgeführt ist.

/app/bin/logstash-plugin list | grep "websocket" 

Als nächstes habe ich gecheckt, dass logstash mit folgenden Config

input { 
    stdin { } 
} 

output { 
    file { 
    path => "/app/logstash-2.3.3/logstash-log.txt" 
    } 
} 

Logstash arbeitete arbeitet.

/app/logstash-2.3.3/bin/logstash agent --config /app/logstash-2.3.3/logstash.conf 
Hello World 

Die Datei logstash-log.txt enthalten:

{"message":"Hello World","@version":"1","@timestamp":"2016-07-05T20:04:14.850Z","host":"server-name.domain.com"} 

Weiter öffnete ich Port 9300

ich ein einfaches Bash-Skript schrieb einige Zahlen

#!/bin/bash 

case $1 in 
    -t|--to) 
    COUNTTO=$2 
    shift 
    ;; 
esac 
shift 
printf 'Count to %i\n' $COUNTTO 

for COUNT in $(seq 1 $COUNTTO); do 
    echo $COUNT 
    sleep 0.1 
done 

ich zurückkehren started websocketd zeigt auf mein bash script

/app/websocketd --port=9300 /app/count.sh --to 7 

Ich öffnete Einfache Web-Socket Client in Chrome und verbunden

ws://server-name.domain.com:9300 

Erfolg! Es gab folgendes zurück.

Count to 7 
1 
2 
3 
4 
5 
6 
7 

An diesem Punkt weiß ich websocketd Werke und logstash Werke. Jetzt beginnt das Problem.

Logstash websocket Eingangskonfigurationsdatei

input { 
    websocket { 
    codec => "plain" 
    url => "ws://127.0.0.1:9300/" 
    } 
} 

output { 
    file { 
    path => "/app/logstash-2.3.3/logstash-log.txt" 
    } 
} 

Run configtest

/app/logstash-2.3.3/bin/logstash agent --config /app/logstash-2.3.3/logstash.conf --configtest 

Receive "Konfiguration OK"

starten websocketd up

/app/websocketd --port=9300 /app/logstash-2.3.3/bin/logstash agent --config /app/logstash-2.3.3/logstash.conf 

Zurück in Simple Web Socket Client stelle ich eine Verbindung zu ws: //server-name.domain.com: 9300 her. Ich sehe eine Meldung, dass ich eine Sitzung gestartet habe.

Tue, 05 Jul 2016 20:07:13 -0400 | ACCESS | session | url:'http://server-name.domain.com:9300/' id:'1467732248361139010' remote:'192.168.0.1' command:'/app/logstash-2.3.3/bin/logstash' origin:'chrome-extension://pfdhoblngbopfeibdeiidpjgfnlcodoo' | CONNECT 

Ich versuche, "Hallo Welt" zu senden. Nichts Offensichtliches passiert auf dem Server. Nach ungefähr 15 Sekunden sehe ich eine Trennungsnachricht in meinem Konsolenfenster. logstash-log.txt wird nie erstellt.

Irgendwelche Ideen für was zu versuchen? Vielen Dank!

UPDATE 1:

Ich habe versucht, die folgenden in einem Bash-Skript namens "launch_logstash.sh" setzen:

#!/bin/bash 

exec /app/logstash-2.3.3/bin/logstash agent --config /app/logstash-2.3.3/logstash.conf 

Dann begann websocketd wie ich so:

/app/websocketd --port=9300 /app/logstash-2.3.3/bin/launch_logstash.sh 

Gleiches Ergebnis; Kein Erfolg.

Antwort

0

Nach dem Lesen der WebsocketDokumentation sendet es die Daten, die über den Socket empfangen werden, an die Programmeingabe eines Programms. Ich habe versucht, einen Socket in meiner Logstash-Konfiguration zu hören, aber die Daten gehen tatsächlich zur Standard-Version dieser App. Ich änderte meine Config dazu:

input { 
    stdin { } 
} 

output { 
    file { 
    path => "/app/logstash-2.3.3/logstash-log.txt" 
    } 
} 

Dann websocketd wie folgt gestartet:

/app/websocketd --port=9300 /app/logstash-2.3.3/bin/logstash agent --config /app/logstash-2.3.3/logstash.conf 

Also kurz gesagt, bis logstash-WebSocket-Eingang implementiert ihre Serveroption, stdin {} und stdout {} sind die Eingabe und Ausgabe bei Verwendung von websocketd als Webserver.

Verwandte Themen