2015-02-05 9 views
12

Ich bin in der 2 Stunde meiner Elastic Search Immersion. Ich habe ES erfolgreich mit Marvel (mit marvel.agent.enabled: false in config/elasticsearch.yml) installiert und konnte erfolgreich Anfragen von Sense stellen. Ich neu gestartet meine Entwicklung Maschine und jetzt, wenn ich die folgende Anfrage auf Sinn machen, antwortet er:ES erreichbar von Curl aber nicht von Marvel/Sense

Request failed to get to the server (status code: 0): 

Elasticsearch may not be reachable or you may need to check your CORS settings.If CORS is enabled, try turning off Sense's Basic Authentication support under Setting (cog icon).This will result in a less strict CORS enforcement by the browser. 
Please check the marvel documentation for more information. 

Request (source):

PUT /megacorp/employee/1 
{ 
"first_name" : "John", 
"last_name" : "Smith", 
"age" :  25, 
"about" :  "I love to go rock climbing", 
"interests": [ "sports", "music" ] 
} 

Wie gerichtet, ich geprüft, ob ES erreichbar ist durch eine Herstellung ähnliche Anfrage auf curl:

Anfrage:

curl -XPUT http://localhost:9200/megacorp/employee/100 -d '{ "first_name" : "test" }' 

Re sponse:

{"_index":"megacorp","_type":"employee","_id":"100","_version":1,"created":true} 

Das führt mich zu der Annahme, dass ES verfügbar ist.

Mit der nächsten Überprüfung "Sie müssen möglicherweise Ihre CORS-Einstellungen überprüfen.". Ich fügte hinzu, die folgende Konfiguration elasticsearch.yml (und neu gestartet ES) basierend auf this recommendation:

http.cors.enabled: true 
http.cors.allow-origin: /.*/ 
http.cors.allow-credentials: true 

Aber es gibt keine Änderung im Verhalten.

Umschalten "Unterstützung Basic Auth" in Marvel/Smart-Einstellungen hat auch keine Auswirkungen.

Willkommen alle Hinweise auf was könnte schief gehen.

+0

@jimstat in Ihrem ES Cluster-Protokolle zu finden (in einem Knoten) eine Linie, die wie '[INFO] [http] [c7_64] bound_address {inet [/0: 0: 0: 0: 0: 0: 0: 0: 9201]}, Veröffentlichungsadresse {inet [/192.168.88.128:9201]} '. Du interessierst dich für was nach 'publish_address'. Wenn Sie auf Sense zugreifen, verwenden Sie den IP: PORT, den Sie dort sehen. In meinem Beispiel: "http: //192.168.88.128: 9201/_plugin/marvel/sense/index.html". –

+0

Hat keine der Antworten geholfen, oder haben Sie eine Antwort nicht als akzeptiert markiert? Würde mir helfen, zu wissen, was der Trick für Sie gemacht hat :) – Frans

Antwort

7

Versuchen Sie, die HTML-Seite von marvel/sense auf einem anderen Browser oder im privaten/Inkognito-Modus auszuführen. Ich hatte das gleiche Problem und das hat es gelöst. Ich denke es liegt daran, dass die Einstellungen auf Cookies gespeichert sind oder etwas nicht wirklich sicher ist.

+0

Die Kombination dieses Kommentars und @Saichans Kommentar (das CORS ermöglichte) hat den Trick für mich getan. – mlg

5

Ich hatte das gleiche Problem auch und nach Elasticsearch-Dokumentation hier: http://www.elastic.co/guide/en/marvel/current/configuration.html#cors, müssen Sie CORS aktivieren.

Um es zusammenzufassen, öffnen Sie die elasticsearch.yml Datei im config/Ordner und diese dort

http.cors.enabled: true 
http.cors.allow-origin: /.*/ 
http.cors.allow-credentials: true 

irgendwo setzen, wahrscheinlich das „Netzwerk- und HTTP“ Abschnitt.

Dann, nachdem ich Elasticsearch neu gestartet hatte, funktionierte es gut für mich in Marvel Sense.

0

Ich hatte auch das gleiche Problem. Stellen Sie sicher, dass das Serverfeld nicht leer ist. Mein Problem wurde nach dem Ausfüllen des Feldes mit lokalen

1

In Ihrem ES Cluster-Protokolle (in einem Knoten) finden Sie eine Linie, die wie

[INFO ][http ] [c7_64] bound_address {inet[/0:0:0:0:0:0:0:0:9201]}, publish_address {inet[/192.168.88.128:9201]} 

Sie sind daran interessiert, was ist nach publish_address. Wenn Sie auf Sense zugreifen, verwenden Sie den IP: PORT, den Sie dort sehen.In meinem Beispiel würde die Sense-URL wie folgt aussehen:

http://192.168.88.128:9201/_plugin/marvel/sense/index.html 

Der CORS Teil ist vor allem gilt für das Szenario, in dem Marvel in einem separaten Cluster installiert ist, und es sollte nicht erforderlich sein, wenn Marvel in derselben installiert ist Cluster als die überwachten Knoten. Es ist auch needed wenn Shield im Cluster installiert ist.

0

Ich hatte das gleiche Problem mit Chrome. Das Löschen von Browserdaten löst mein Problem. Es ist unter Geschichte -> Browserdaten löschen -> Cookies und andere Website- und Plugin-Daten, zwischengespeicherte Bilder und Dateien, AutoFill-Formulardaten, gehostete App-Daten überprüfen.

Nicht sicher, wer den Trick gemacht hat, aber so habe ich es gemacht und es hat funktioniert. Hoffe das hilft.

0

Nicht streng mit Marvel verbunden, aber wenn ich Problem mit elasticsearch von "außerhalb" den Server, den ich muss verbinden muss.

Ändern der elasticsearch.yml Config, in dem der Host lauscht - listen to all network interfaces:

network.host: 0.0.0.0 

Danach, abhängig von Ihrem Server, sollten Sie den TCP-Port in der Firewall öffnen (wenn Sie den Standard-Port verwenden elasticsearch: 9200). Zum Beispiel auf Centos (oder RHEL), sollten Sie laufen:

sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent 
sudo firewall-cmd --reload 
Verwandte Themen