Qué buscar al elegir un sistema de registro y por qué nos decidimos por ELK

Se presenta una gran cantidad de sistemas de registro en el mercado, tanto abiertos como propietarios. Cada uno de ellos tiene su propia funcionalidad, sus propias ventajas y desventajas.

Hoy decidimos compartir nuestra experiencia en la elección de un sistema de registro y decirnos por qué nos detuvimos en ELK en 1cloud .


/ Pixabay / picupyourphoto / PD

Teoría de los minutos


Cuando se cambia a producción, las aplicaciones se convierten en una especie de "cajas negras". Su trabajo debe ser monitoreado constantemente para prevenir y responder a posibles situaciones de emergencia, para atrapar cuellos de botella.

Los sistemas de registro son una herramienta indispensable que no se puede evitar en este proceso. Al realizar un análisis detallado de los datos recopilados, es posible identificar "intrusiones" en la red, identificar equipos mal configurados y tomar medidas inmediatas. Además, el registro es un requisito obligatorio al pasar varios tipos de certificaciones, como PCI DSS.

Existen marcos especiales para la automatización de los procesos de registro: log4j, log4net, Retrace, Logback, Logstash y otros, hay muchos de ellos. Sus herramientas de registro tienen herramientas de desarrollo separadas, por ejemplo JDK: hay java.util.logging . Por supuesto, la funcionalidad de varias herramientas de registro es diferente, y el conjunto necesario de funciones debe seleccionarse en función de los requisitos del negocio. Sin embargo, hay una serie de puntos generales que deben tenerse en cuenta al elegir un sistema para analizar registros.

Facilidad de uso y tamaño de la comunidad.

La simplicidad es uno de los componentes clave al elegir un sistema de registro. Todos los desarrolladores del equipo trabajan con marcos de registro, por lo tanto, la experiencia de usar esta herramienta debe ser positiva y no convertir el análisis de registro en una pesadilla. El marco API debería ser intuitivo para que todos los que no hayan trabajado con el sistema antes puedan descubrir rápidamente cómo está organizado y configurado.

Si consideramos el sistema de registro de código abierto, entonces tiene sentido evaluar la comunidad que se ha formado a su alrededor. Para hacer esto, puede estudiar con qué frecuencia se menciona en plataformas especializadas ( desbordamiento de pila ), así como en hilos especializados, por ejemplo, en Reddit . Como opción, mire la popularidad del proyecto en GitHub (el número de estrellas) y vea con qué frecuencia se ingresa en varias colecciones de herramientas en la red ( como estas ). Obviamente, cuanto más grande sea la comunidad, mayor será la probabilidad de que reciba ayuda en caso de dificultades imprevistas.

En cuanto a la elección de los sistemas de registro patentados, en primer lugar vale la pena observar la velocidad de las respuestas y la idoneidad del servicio de soporte de la solución seleccionada, así como su precio.

La capacidad de recopilar registros "misceláneos"

No todas las plataformas de registro son capaces de procesar una gran cantidad de datos y proporcionar información completa sobre los sistemas utilizados.

Antes de elegir una solución, debe decidir qué registros planea recopilar: registros HTTP (lo que ayudará a comprender el comportamiento de los usuarios en el sitio), registros de la API (permitirá evaluar qué servicios solicita la API con mayor frecuencia), registros de errores y simplemente registrar cambios en sistema (indicar cuellos de botella, si los hay).

Escalabilidad

La herramienta de registro debe recopilar registros de cada componente del sistema y proporcionarles acceso en un solo lugar. Si el sistema no es adecuado para escalar, la calidad del análisis de registro disminuirá.

En 1cloud inicialmente utilizamos MS SQL para iniciar sesión. Sin embargo, con un aumento en el número de clientes y servicios (por ejemplo, recientemente implementamos equipos en el centro de datos de Minsk y agregamos soporte para IPv6 ), desarrollamos componentes de infraestructura dispersos geográficamente que no tenían acceso a la base de datos. Y una de nuestras principales tareas era mantener la capacidad de analizar registros desde un solo lugar.

Sistema de registro 1cloud


Como ya hemos señalado, MS SQL se usó para almacenar registros en 1cloud, y log4net se usó para grabarlos. Y esto comenzó a crear ciertas dificultades para nosotros. Debido a los componentes geográficamente dispersos, se ha vuelto imposible mantener la conectividad de red con la base de datos y proporcionar un punto único para el análisis.

Al mismo tiempo, un gran volumen de registros y la imposibilidad de crear índices en todos los campos que necesitamos buscar condujeron a una simplificación excesiva del análisis de registros: tuvimos que abandonar la funcionalidad por el bien del rendimiento.

Para resolver este problema y proporcionar escalabilidad, presentamos un nuevo sistema de registro. En total, estudiamos más de cincuenta soluciones diferentes e identificamos cuatro que cumplían plenamente con nuestros requisitos:

  • lugar único para almacenar registros;
  • escala horizontal del sistema si es necesario;
  • procesamiento de grandes cantidades de datos;
  • Potente sistema de análisis de registro.

Estas cuatro soluciones son: Fluentd, Graylog, Logalyse y Logstash.

Logstash

La solución tiene 9.2 mil estrellas en GitHub . Logstash tiene licencia bajo la licencia Apache 2.0 y es parte de la pila ELK. Tiene una gran cantidad de complementos ( hay alrededor de 250 de ellos en GitHub). Funciona bajo Windows y Linux y tiene un alto rendimiento, que es prácticamente independiente de los volúmenes de datos.

El sistema le permite revisar y analizar rápidamente eventos de estaciones de trabajo, firewalls, enrutadores y conmutadores. Esto se debe al hecho de que no hay necesidad de "normalización" de eventos.

Sin embargo, debe entenderse que este es un motor "desnudo", ya que no proporciona visualizaciones listas para usar. Entre otras deficiencias, notamos la necesidad de instalar Java en todos los servidores, ya que Logstash está escrito en Ruby (JRuby).

La solución tiene una comunidad bastante grande: hay un canal IRC y un foro separado. Hay ejemplos en la red para la configuración de todo el sistema y la API . Las siguientes organizaciones usan Logstash: CERN Control Center, GitHub, SoundCloud.

Fluido

6.6 mil estrellas en GitHub . Distribuido bajo la licencia Apache 2.0 por la CNCF (Cloud Native Computing Foundation), fue fundado por Google y The Linux Foundation para promover la tecnología de contenedores.

Fluentd se ejecuta en Linux, Windows y Mac y está escrito en Ruby (CRuby). Fluentd tiene un sistema de complementos flexible que extiende su funcionalidad.

La solución tiene un formato de registro unificado: Fluentd intenta convertir los datos recibidos al formato JSON. Para garantizar un funcionamiento confiable, no se requieren soluciones de terceros, sin embargo, para esto es necesario llevar a cabo una configuración adicional. Tampoco se recomienda instalarlo en servidores que generan registros.

La comunidad es grande: hay un canal en Slack , así como un hilo en Grupos de Google . El sitio web oficial del proyecto tiene ejemplos de configuraciones y API . Empresas como Microsoft, Amazon, change.org y Nintendo usan Fluentd.

Graylog

4.3 mil estrellas en GitHub . Distribuido bajo la licencia GNU GPL v3. Funciona solo bajo Linux. Un ecosistema centralizado de complementos y un sistema de almacenamiento en búfer personalizado. Por conveniencia, permite que la palabra clave combine mensajes entrantes en secuencias y agrupe estas secuencias de diferentes hosts.

El sistema utiliza las funciones de Elasticsearch, pero a pesar de las frecuentes actualizaciones de Graylog y la comunidad desarrollada (hay un foro , un canal IRC , hay ejemplos de configuraciones y API en el sitio web oficial del proyecto), la integración de las versiones actuales de Elasticsearch en el proyecto lleva mucho tiempo. Por ejemplo, el año pasado surgió una situación en la que Graylog 2.2.1 (la última en ese momento) solo funcionaba con Elasticsearch versión 2.4.4, que se consideraba obsoleta.

En su trabajo, Graylog utiliza la Agencia Europea del Medio Ambiente, Dial Once, Stockopedia y otros.

LOGalyze

Funciona bajo Linux y Windows. El sistema tiene un alto rendimiento y puede generar informes detallados sobre palabras clave. Existe un serio inconveniente: LOGalyze recopila registros en su base de datos de archivos, donde luego los indexa, ocupando una cantidad significativa de espacio en disco.

Los desarrolladores de LOGalyze tienen su propio blog , y la discusión de la solución se lleva a cabo en grupos de Google . Hay una guía para la configuración del sistema y la migración de datos, así como la CLI .



Después de evaluar estas cuatro opciones, optamos por Logstash y decidimos organizar una pila ELK (ElasticSearch, Logstash, Kibana). De estos, Elasticsearch es un motor de búsqueda, Logstash es un mecanismo para recopilar y analizar registros, y Kibana se dedica a análisis y visualización de datos.



Elegimos ELK, ya que los tres componentes son desarrollados por un "fabricante", por lo tanto, se integran bien entre sí. Si es necesario, podemos usar cada una de estas herramientas individualmente para resolver otros problemas.

Este enfoque hace que el producto sea flexible y versátil. Todo esto permitirá un procesamiento más eficiente de los volúmenes de datos existentes y una implementación más rápida de nuevos servicios; será más fácil conectarse.

Ahora el entorno de prueba está listo. "Cubre" todos los servicios cuyos registros analizaremos. Estamos terminando los últimos procesos de depuración y estamos planeando un lanzamiento completo de la solución en el futuro cercano.

Por cierto, a pesar del hecho de que analizamos varias opciones en detalle y elegimos la mejor para nuestras necesidades, al final no fue sin una mosca en la pomada. Al probar la solución, nos enfrentamos a una situación en la que Kibana dejó caer Elasticsearch por solicitud, lo que se considera un caso extremadamente raro y degenerado. También durante el "ensamblaje" del sistema surgieron una serie de preguntas, principalmente relacionadas con la seguridad. En la versión básica, Elasticsearch no está protegido por nada: era necesario adaptar software de terceros para estos fines.

Después del lanzamiento, configuraremos sistemas de monitoreo para responder lo más rápido posible a fallas en el servicio de registro. Esperamos que la nueva pila de tecnología mejore la experiencia del usuario de nuestros clientes y desarrolle aún más nuestros servicios más rápido.

Materiales de nuestro blog corporativo:

Source: https://habr.com/ru/post/es420589/


All Articles