Elasticsearch muere cuando Logstash intenta escribir datos


9

Tengo una configuración de Raspberry Pi 2 (última versión de Raspbian a partir de abril de 2015) que la semana pasada ejecutaba ElasticSearch y Logstash en una red de prueba (no es una configuración sencilla, ¡pero fue estable durante más de una semana!). Reinicié mi máquina hoy y me ha costado mucho hacer que las cosas vuelvan a funcionar; ES y LS se ejecutarán de forma independiente, pero cuando intento insertar la salida de LS en ES, la instancia de ES muere sin explicación. Mi objetivo es hacer que los datos de LS y de bombeo se ejecuten en ES a través del complemento de salida estándar.

ElasticSearch [v1.5.0]

Creo que aquí es donde está el problema central. ES puede iniciarse a través de service elasticsearch starty sigue ejecutándose, es accesible a través de solicitudes HTTP al puerto 9200 y todos los signos de vida parecen saludables. Tan pronto como algo (cualquier cosa, por lo que puedo decir) intenta escribir datos en un índice, el proceso muere y los registros de depuración @ / var / log / elasticsearch / * no contienen nada relacionado con la falla del servicio. He intentado insertar a través de logstash (ver más abajo), así como con curl, los cuales terminan el proceso de ES. El comando curl que estoy ejecutando es curl -XPOST "http://localhost:9200/logstash-2015.04.05/records/" -d "{ \"type\" : \"specialRecord\" }".

Logstash [v1.4.2]

Actualmente estoy ejecutando con esta configuración simple:

input {
    stdin { }
}

output {
        stdout { codec => rubydebug }
        elasticsearch {
                host => '127.0.0.1'
                cluster => 'elasticsearch'
        }
}

Otras notas

Algunas cosas que he probado:

  • He intentado aumentar los niveles de registro de ElasticSearch para DEPURAR / RASTREAR y la salida es notablemente poco interesante. Feliz de proporcionar registros si sería útil.

  • Intenté darle ES 256MB y 512MB de espacio de almacenamiento dinámico, lo que no parece afectar nada. También he visto la utilización de la memoria durante todo esto y la falta de memoria no parece ser un problema.

  • Intenté deshabilitar la multidifusión para tratar de eliminar un montón de variables de red, pero eso no pareció marcar la diferencia.

  • Me he asegurado de que el directorio de datos para ES tenga mucho espacio, permisos de escritura, etc. ES crea subdirectorios en el path.datadirectorio cuando está cargado, pero no creo que se agregue nada, ya que cuando reinicio el proceso de ES, las estadísticas del índice sugieren que El número total de documentos es cero.

Ahora estoy bastante perplejo y decepcionado de que no se registre nada de lo que necesito (o al menos puedo encontrar). ¿Alguna idea de lo que podría estar pasando aquí?


Si no obtiene nada útil de los registros, la única opción (aparte de compilar desde la fuente y agregar más declaraciones de depuración) parece estar utilizando strace para ver las llamadas del sistema. Eso podría darle una pista de por qué está muriendo elasticsearch. Para reducir el volumen, comience de manera normal y luego siga el proceso de ejecución justo antes de iniciar la escritura.
Paul Haldane

Tener un bloqueo sin ningún registro me recuerda los problemas de JNI, ¿no hay un volcado de proceso JVM ( hs_err_PID.log)? ES 1.5 utiliza una biblioteca nativa llamada Sigar para el monitoreo, puede tener problemas con el ARM de Raspberry. ¿Podrías intentar ejecutar Sigar solo? Intentaría actualizar a ES 1.5.2 o ES 2.0 que ya no usa Sigar.
G Quintana

¿Has desactivado el intercambio?
Rumbles

Elasticsearch recomienda 8G ram para empezar. Una vez lo ejecuté en un Raspberry Pi 3. Funciona, pero debes tener un poco de cuidado con la velocidad a la que envías los datos y las consultas también pueden tomar algún tiempo.
webwurst

Respuestas:


1

Necesitas más hardware

Su raspi puede estar (considerablemente) con poca potencia para su carga de trabajo.

De ninguna manera soy un experto en Elasticstack, pero lo configuré en varios escenarios de prueba y para un uso limitado / de producción ligera. En mi experiencia, aunque la configuración inicial requiere relativamente pocos recursos, a medida que crece el número de índices, el sistema genera significativamente más carga de CPU y E / S de disco.

Esto es especialmente evidente después de un reinicio mientras el sistema está recuperando los fragmentos. Si sus índices no son demasiado grandes, podría considerar los depósitos mensuales en lugar de los depósitos diarios predeterminados, lo que parece ayudar a este respecto.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.