por - que pasa si desinstalo java
Registro de Java centralizado (4)
Estoy buscando una manera de centralizar las preocupaciones de registro del software distribuido (escrito en Java) que sería bastante fácil, ya que el sistema en cuestión tiene un solo servidor. Pero teniendo en cuenta que es muy probable que en el futuro se ejecuten más instancias del servidor en particular (y habrá más aplicaciones que lo necesiten), tendría que haber algo así como un Servidor de registro, que se ocupa de los registros entrantes y los hace accesibles para el equipo de soporte.
La situación actual es que varias aplicaciones Java usan log4j que escribe sus datos en archivos locales, por lo que si un cliente expira problemas, el equipo de soporte debe solicitar los registros, lo que no siempre es fácil y lleva mucho tiempo. . En el caso de una falla del servidor, el problema de diagnóstico no es tan grande, ya que de todos modos hay acceso remoto, pero aun así, monitorear todo a través de un Servidor de Registro todavía tendría mucho sentido.
Mientras repasaba las preguntas sobre el "registro centralizado", encontré otra Question (en realidad, la única con una respuesta utilizable (en este caso). El problema es que todas las aplicaciones se ejecutan en un entorno cerrado (dentro de una red) y las directrices de seguridad no permita que nada relacionado con el software interno salga de la red de entornos.
También encontré un maravilloso artículo sobre cómo se implement un servidor de registro de este tipo. Dado que el artículo fue escrito en 2001, pensé que alguien ya podría haber resuelto este problema en particular. Pero mis resultados de búsqueda no obtuvieron nada.
Mi pregunta : ¿Existe un marco de registro que controle el inicio de sesión en las redes con un servidor centralizado al que pueda acceder el equipo de soporte?
Especificación:
- Disponibilidad
- El servidor debe ser ejecutado por nosotros.
- Compatibilidad con Java 1.5
- Compatibilidad con una red heterogénea.
- Mejor caso: el protocolo usa HTTP para enviar registros (para evitar problemas de firewall)
- Best-Case: usa log4j o LogBack o básicamente cualquier cosa que implemente slf4j
No es necesario, pero es bueno tener
- La autenticación y la seguridad son, por supuesto, un problema, pero podrían retrasarse por lo menos durante un tiempo (si se trata de software abierto lo ampliaríamos a nuestras necesidades OT: siempre devolvemos los proyectos ).
- La minería de datos y el análisis es algo que es muy útil para mejorar el software, pero podría ser una aplicación externa.
Mi peor escenario es que no hay un software como ese. Para ese caso, probablemente implementaríamos esto nosotros mismos. Pero si existe una aplicación cliente-servidor, apreciaría mucho no tener que hacer este trabajo particularmente problemático.
Gracias por adelantado
Actualización: la solución debe ejecutarse en varias plataformas habilitadas para Java. (Sobre todo Windows, Linux, algunos HP Unix)
Actualización: después de mucha más investigación, encontramos una solución que pudimos adquirir. clusterlog.net (fuera de línea desde al menos mediados de 2015) proporciona servicios de registro para software distribuido y es compatible con log4j y logback (que es compatible con slf4j). Nos permite analizar el camino de cada usuario a través de la aplicación. Por lo tanto, es muy fácil reproducir errores informados (o incluso no informados). También nos notifica eventos importantes por correo electrónico y tiene un sistema de informes donde los registros del mismo origen se vuelven a sumar en un formato de fácil acceso. Desplegaron (lo cual fue perfecto) aquí hace solo un par de días y está funcionando muy bien.
Actualización (2016): esta pregunta todavía recibe mucho tráfico, pero el sitio al que me refería ya no existe.
NXLOG o LogStash o Graylogs2
o
LogStash + ElasticSearch (+ opcionalmente Kibana)
Ejemplo:
1) http://logstash.net/docs/1.3.3/tutorials/getting-started-simple
2) http://logstash.net/docs/1.3.3/tutorials/getting-started-centralized
Eche un vistazo a logFaces, parece que se cumplen sus especificaciones. http://www.moonlit-software.com/
- Disponibilidad (cheque)
- El servidor debe ser ejecutado por nosotros. (comprobar)
- Compatibilidad con Java 1.5 (verificar)
- Compatibilidad con una red heterogénea. (comprobar)
- Mejor caso: el protocolo usa HTTP para enviar registros (para evitar problemas de firewall) (casi TCP / UDP)
- Best-Case: usa log4j o LogBack o básicamente cualquier cosa que implemente slf4j (verificar)
- Autenticación (verificar)
- Minería de datos y análisis (posible a través de la API de extensión)
Puede usar Log4j con SocketAppender, por lo tanto, debe escribir la parte del servidor como procesamiento de LogEvent. ver http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/SocketAppender.html
Hay una solución lista para usar de Facebook - Scribe - que está usando Apache Hadoop bajo el capó. Sin embargo, la mayoría de las compañías de las que soy consciente todavía tienden a desarrollar sistemas internos para eso. Trabajé en una de esas compañías y trabajé con registros allí hace dos años. También usamos Hadoop. En nuestro caso, tuvimos la siguiente configuración:
- Teníamos un pequeño grupo dedicado de máquinas para la agregación de registros.
- Los trabajadores extrajeron registros del servicio de producción y luego analizaron las líneas individuales.
- Entonces, los reductores agregarían los datos necesarios y prepararían informes.
Tuvimos un número pequeño y fijo de informes en los que estábamos interesados. En casos raros cuando queríamos realizar un tipo diferente de análisis, simplemente agregamos un código de reductor especializado para eso y, opcionalmente, lo ejecutamos contra registros antiguos.
Si no puede decidir con anticipación qué tipo de análisis le interesa, será mejor almacenar datos estructurados preparados por los trabajadores en HBase o en alguna otra base de datos NoSQL ( aquí, por ejemplo, las personas usan Mongo DB ). De esta forma, no necesitará volver a agregar datos de los registros sin procesar y podrá consultar el almacén de datos en su lugar.
Hay una serie de buenos artículos sobre tales soluciones de agregación de registro, por ejemplo, usando Pig para consultar los datos agregados . Pig le permite consultar grandes conjuntos de datos basados en Hadoop con consultas similares a SQL.