2015-02-05 8 views
12

Sono in 2 ore della mia immersione Elastic Search. Ho installato con successo ES con Marvel (con marvel.agent.enabled: false in config/elasticsearch.yml) ed è stato in grado di eseguire richieste di successo da Sense. Ho ricominciato mia macchina di sviluppo e ora, quando faccio la seguente richiesta sul buon senso, risponde:ES raggiungibile da arricciatura ma non da 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" ] 
} 

secondo le istruzioni, ho controllato se ES è raggiungibile facendo una richiesta simile sul ricciolo:

richiesta:

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

Re risposta:

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

Questo mi porta a pensare che ES sia disponibile.

Passare alla verifica successiva "potrebbe essere necessario verificare le impostazioni CORS.". Ho aggiunto la seguente configurazione per elasticsearch.yml (e rimesso in moto ES) sulla base di this recommendation:

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

ma non c'è alcun cambiamento nel comportamento.

L'attivazione di "Supporto Aut. Base" nelle impostazioni Marvel/Smart non ha alcun impatto.

Benvenuti a qualsiasi suggerimento su cosa potrebbe andare storto.

+0

@jimstat individuare nei log di cluster ES (in un nodo) di una linea di ricerca come '[INFO] [http] [c7_64] bound_address {inet [/0: 0: 0: 0: 0: 0: 0: 0: 9201]}, publish_address {inet [/192.168.88.128:9201]} '. Ti interessa cosa dopo 'publish_address'. Quando accedi a Sense usa l'IP: PORT che vedi lì. Nel mio esempio: 'http: //192.168.88.128: 9201/_plugin/marvel/sense/index.html'. –

+0

Nessuna delle risposte è stata di aiuto o non hai contrassegnato una risposta come accettata? Vorrei aiutarmi a sapere che cosa ha fatto il trucco per te :) – Frans

risposta

7

Provare a eseguire la pagina html marvel/sense su un altro browser o in modalità privata/in incognito. Ho avuto lo stesso problema e lo ho risolto. Penso che sia dovuto al fatto che le impostazioni siano memorizzate su cookie o qualcosa di non proprio sicuro.

+0

La combinazione di questo commento e il commento di @Saichan (abilitazione CORS) ha fatto il trucco per me. – mlg

5

Avevo lo stesso problema e secondo i documenti di Elasticsearch qui: http://www.elastic.co/guide/en/marvel/current/configuration.html#cors, devi abilitare CORS.

In sintesi, aprire il file elasticsearch.yml nella cartella config/cartella e mettere questo

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

da qualche parte in là, probabilmente la sezione "Reti e HTTP".

Quindi, dopo aver riavviato elasticsearch, ha funzionato bene per me in Marvel Sense.

0

Avevo anche lo stesso problema. Assicurarsi che il campo del server non sia vuoto. Il mio problema è stato risolto dopo aver compilato il campo con locale

1

Nel vostro log del cluster ES (in un nodo) individuare una linea di ricerca come

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

Siete interessati a ciò che è dopo publish_address. Quando accedi a Sense usa l'IP: PORT che vedi lì.Nel mio esempio, l'URL senso sarà simile a questa:

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

La parte CORS è per lo più valido per lo scenario in cui la Marvel è installato in un cluster separato e non dovrebbe essere necessaria quando la Marvel è installato nella stessa cluster come nodi monitorati. È anche needed quando Shield è installato nel cluster.

0

Avevo lo stesso problema con Chrome. La cancellazione dei dati del browser risolve il mio problema. È sotto cronologia -> cancellazione dei dati del browser -> verifica dei cookie e altri dati relativi a siti e plug-in, immagini e file memorizzati nella cache, compilazione automatica dei dati dei moduli, dati delle app ospitate.

Non sono sicuro quale sia stato il trucco ma è così che ho fatto e ha funzionato. Spero che questo ti aiuti.

0

Non strettamente correlato a Marvel, ma quando si verifica un problema di connessione a elasticsearch da "esterno" al server necessario.

Modificare il elasticsearch.yml config, dove l'ospite è l'ascolto - listen to all network interfaces:

network.host: 0.0.0.0 

Dopo di che, a seconda del server, è necessario aprire la porta TCP sul firewall (se si utilizza la porta di default elasticsearch: 9200). Per esempio su CentOS (o RHEL), è necessario eseguire:

sudo firewall-cmd --zone=public --add-port=9200/tcp --permanent 
sudo firewall-cmd --reload 
Problemi correlati