Pregunta

En el trabajo, estamos creando una aplicación distribuida (posiblemente a través de varias máquinas en una LAN, posiblemente más tarde en varios continentes en una WAN + VPN). No queremos que los archivos de registro sean locales en cada máquina (llenando su disco y es imposible verlos en conjunto), por lo que necesitamos centralizar el registro a través de la red. La mayoría de los registros no serán importantes, por lo que UDP está bien para ellos, pero algunos son alertas importantes que pierden dinero y deben entregarse de manera confiable, lo que implica TCP. Nos preocupa que se congestione la red si el protocolo de registro es demasiado hablador o si arrastra las aplicaciones a un rastreo si no responde.

Algunas posibilidades que he considerado son:

  • syslog (parece perfecto, pero mi jefe tiene un animo contra esto, así que es posible que no pueda elegirlo).
  • escriba en Facebook (pero parece un poco pesado con un servidor en cada máquina, no todos los mensajes de registro necesitan una alta confiabilidad).
  • usando una cola de mensajes como rabbitmq que puede tener múltiples colas sintonizadas en diferentes niveles de seguridad de transacción.
  • en el peor de los casos, puedo escribir mi propio desde cero.

¿Tienes otras sugerencias? ¿Qué soluciones de registro centralizado ha utilizado y qué tan bien funcionaron?

Editar: Me inclinaba hacia scribe, porque su diseño de almacenamiento y envío desacopla la aplicación en ejecución de la latencia de la red. Pero después de esforzarme por instalarlo, descubrí que (1) no está disponible como un paquete binario (hoy en día es imperdonable) y (2) ¡depende totalmente de una biblioteca (ahorro) que tampoco está disponible como un paquete binario! Y lo peor de todo, ni siquiera compilaría correctamente. Eso no es código de calidad de lanzamiento, incluso en código abierto.

¿Fue útil?

Solución

Hemos utilizado con éxito ZeroMQ para los registros de un escenario de aplicación distribuida como el suyo. Es muy confiable e increíblemente rápido. Nos mudamos a ZeroMQ después de una implementación no tan exitosa con Spread . En nuestra configuración, un solo servidor ZeroMQ puede manejar más de 70 registros diferentes desde una aplicación distribuida ocupada de nivel medio a alto. Recibe datos de LAN y de Internet.

Si necesita una comparación detallada del servidor de colas, mire esta página desde el wiki de Second Life .

Espero que ayude!

Otros consejos

Hay varias alternativas recientemente. Cabe destacar que Scribe ya no se mantiene. Facebook desarrolló su sucesor llamado Caligraphus, y no es de código abierto. Aquí hay una lista de alternativas.

  • syslog: instalado en todas las distribuciones de Linux
  • Fluentd : registrador ligero basado en C + Ruby, que maneja los registros como flujo JSON
  • Flume : desarrollado en Cloudera, escrito en Java y funciona bien con los ecosistemas de Hadoop
  • Apache Kafka : desarrollado en LinkedIn, arquitectura basada en extracción
  • Scribe: código abierto por Facebook, pero ya no se mantiene

Descargo de responsabilidad: soy un remitente del proyecto Fluentd.

Syslog es bueno si pretende centrarse solo en los registros de infraestructura (por ejemplo, en el nivel del sistema). Escuché que KIWI Syslog Server es bueno, aunque no lo probé yo mismo. Por otro lado, si desea registrar una información relacionada con la aplicación, un syslog tal vez no sea la mejor opción para esto. En caso de que utilice los servicios de registro de apache (log4j, log4xxx y el resto), entonces logFaces sería una buena opción La solución está diseñada especialmente para agregar múltiples aplicaciones en un solo lugar. Funciona con conexiones TCP o UDP y tiene un visor de registro y una integración de base de datos decentes.

Divulgación : soy el autor de este producto.

Los otros ejemplos pueden ser excelentes, pero he tenido buena suerte con Syslog-NG . Es extremadamente flexible y configurable; aunque es bastante fácil recogerlo y hacer algo útil rápidamente.

También puede considerar el uso de alertas SNMP.

Revisé todas las alternativas recomendadas en este hilo. Busqué algo potenciado en python. Busqué más en Google y encontré al centinela https://getsentry.com/welcome/ Fuente abierta, bien documentada. Debería ser confiable para fines comerciales ya que hay un negocio basado en esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top