Actualmente me encuentro trabajando sobre ELK, integrando Elasticsearch, Logstash y KIbana con sistemas generadores de logs. Para algunos escenarios puntuales también incorporo Filebeat y Kafka.
Me gustaría hacer algunas recomendaciones generales a mi equipo técnico interno sobre esta integración.
Por ejemplo: "Todos los sistemas de log deben ser integrados a través de Logstash ó Filebeat ó Kafka". Es decir, no se debería integrar el sistema/aplicación generadora de Logs directamente con Elasticsearch.
Que opinión les merece este lineamiento? tiene sentido? O por el contrario es una 'buena practica' integrarse directamente a Elasticsearch sin Logstash|Filebeat|Kafka ?
Tu recomendación es la correcta, ya que esos productos están integrados en el stack; eso facilita además la actualización de versiones, con las mejoras que incluyan.
Para darte una idea del nivel de integración, y de como evoluciona el stack, para usar Kafka con Filebeat la arquitectura propuesta es Filebeat->Logstash->Kafka->Logstash->ElasticSearch. En posteriores versiones se espera que Filebeat pueda escribir directamente a Kafka (https://www.elastic.co/guide/en/beats/filebeat/master/kafka-output.html), por lo que se eliminaría una de las instancias de Logstash.
Existen situaciones en las que tiene sentido escribir directamente a Elastic Search, pero en el caso de logs prácticamente siempre es recomendable hacerlo a través de uno o varios de los sistemas que propones. Por ejemplo, un caso de uso habitual es monitorizar logs en máquinas diferentes: en ese caso, se puede instalar Filebeats en las máquinas a monitorizar, enviar los logs a una máquina con Logstash para que realice todas las transformaciones o análisis que sean necesarias y finalmente escribir a Elastic Search.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.