Tutorial: Introducción a la supervisión y el registro mediante Logz.io para aplicaciones Java que se ejecutan en Azure
En este tutorial se muestra cómo configurar una aplicación Java clásica para enviar registros al servicio Logz.io para la ingesta y el análisis. Logz.io proporciona una solución de supervisión completa basada en Elasticsearch/Logstash/Kibana (ELK) y Grafana.
El tutorial asume que estás usando Log4J o Logback. Estas bibliotecas son las dos más usadas para el registro en Java, por lo que el tutorial debe funcionar para la mayoría de las aplicaciones que se ejecutan en Azure. Si ya está usando Elastic Stack para supervisar la aplicación de Java, en este tutorial se muestra cómo modificar la configuración para que el destino sea el punto de conexión de Logz.io.
En este tutorial, aprenderá a:
- Envíe registros desde una aplicación Java existente a Logz.io.
- Envíe registros de diagnóstico y métricas de servicios de Azure a Logz.io.
Prerrequisitos
- Kit para desarrolladores de Java, versión 11 o posterior
- Una cuenta de Logz.io del Azure Marketplace
- Una aplicación Java existente que usa Log4J o Logback
Envío de registros de aplicaciones Java a Logz.io
En primer lugar, aprenderá a configurar la aplicación Java con un token que le proporcione acceso a su cuenta de Logz.io.
Obtención del token de acceso de Logz.io
Para obtener el token, inicie sesión en la cuenta de Logz.io, seleccione el icono de engranaje en la esquina inferior izquierda y, a continuación, seleccione Configuración>Administrar tokens y seleccione la pestaña Tokens de envío de datos. Copie el token de acceso predeterminado mostrado y la dirección URL del agente de escucha para que pueda usarlas más adelante.
Instalación y configuración de la biblioteca de Logz.io para Log4J o Logback
La biblioteca Logz.io Java está disponible en Maven Central, por lo que puede agregarla como una dependencia a la configuración de la aplicación. Compruebe el número de versión en Maven Central y use la versión más reciente en las siguientes opciones de configuración.
Si usa Maven, agregue la siguiente dependencia al archivo pom.xml:
Log4J:
<dependency>
<groupId>io.logz.log4j2</groupId>
<artifactId>logzio-log4j2-appender</artifactId>
<version>2.0.0</version>
</dependency>
Logback:
<dependency>
<groupId>io.logz.logback</groupId>
<artifactId>logzio-logback-appender</artifactId>
<version>2.0.0</version>
</dependency>
Si usa Gradle, agregue la siguiente dependencia al script de compilación:
Log4J:
implementation 'io.logz.log4j:logzio-log4j-appender:2.0.0'
Logback:
implementation 'io.logz.logback:logzio-logback-appender:2.0.0'
A continuación, actualice el archivo de configuración Log4J o Logback:
Log4J:
<Appenders>
<LogzioAppender name="Logzio">
<logzioToken><your-logz-io-token></logzioToken>
<logzioType>java</logzioType>
<logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
</LogzioAppender>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Logzio"/>
</Root>
</Loggers>
Logback:
<configuration>
<!-- Use shutdownHook so that we can close gracefully and finish the log drain -->
<shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
<appender name="LogzioLogbackAppender" class="io.logz.logback.LogzioLogbackAppender">
<token><your-logz-io-token></token>
<logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
<logzioType>java</logzioType>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<root level="debug">
<appender-ref ref="LogzioLogbackAppender"/>
</root>
</configuration>
Reemplace el marcador de posición <your-logz-io-token>
por el token de acceso y el marcador de posición <your-logz-io-listener-host>
por el host del agente de escucha de la región (por ejemplo, listener.logz.io). Para obtener más información sobre cómo buscar la región de la cuenta, consulte Región de cuenta.
El elemento logzioType
hace referencia a un campo lógico de Elasticsearch que se usa para separar documentos diferentes entre sí. Es esencial configurar este parámetro correctamente para sacar el máximo partido de Logz.io.
El elemento "type" de Logz.io es el formato de registro (por ejemplo: Apache, NGinx, MySQL) y no el origen (por ejemplo: server1
, server2
, server3
). En este tutorial, llamamos al tipo java
porque estamos configurando aplicaciones Java y esperamos que esas aplicaciones tengan el mismo formato.
Para el uso avanzado, puede agrupar las aplicaciones Java en diferentes tipos, que tienen su propio formato de registro específico (configurable con Log4J y Logback). Por ejemplo, podrías tener un tipo de spring-boot-monolith
y un tipo de spring-boot-microservice
.
Probar la configuración y el análisis de registros en Logz.io
Una vez configurada la biblioteca de Logz.io, la aplicación ahora debe enviar registros directamente a ella. Para comprobar que todo funciona correctamente, vaya a la consola de Logz.io, seleccione la pestaña Registros>Cola activa y, después, seleccione Ejecutar. Debería ver un mensaje similar al siguiente, indicando que la conexión funciona:
Requesting Live Tail access...
Access granted. Opening connection...
Connected. Tailing...
A continuación, inicie la aplicación o úsela para generar algunos registros. Los registros deben aparecer directamente en la pantalla. Por ejemplo, estos son los primeros mensajes de inicio de una aplicación de Spring Boot:
2019-09-19 12:54:40.685Z Starting JavaApp on javaapp-default-9-5cfcb8797f-dfp46 with PID 1 (/workspace/BOOT-INF/classes started by cnb in /workspace)
2019-09-19 12:54:40.686Z The following profiles are active: prod
2019-09-19 12:54:42.052Z Bootstrapping Spring Data repositories in DEFAULT mode.
2019-09-19 12:54:42.169Z Finished Spring Data repository scanning in 103ms. Found 6 repository interfaces.
2019-09-19 12:54:43.426Z Bean 'spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties' of type [org.springframework.boot.autoconfigure.task.TaskExecutionProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
Ahora que Logz.io procesa los registros, puede beneficiarse de todos los servicios de la plataforma.
Envío de datos de servicios de Azure a Logz.io
A continuación, aprenderá a enviar registros y métricas de los recursos de Azure a Logz.io.
Implementación de la plantilla
El primer paso es implementar la plantilla de integración de Azure Logz.io. La integración se basa en una plantilla de implementación de Azure lista para configurar todos los componentes básicos necesarios de la canalización. La plantilla crea un espacio de nombres del centro de eventos, un centro de eventos, dos blobs de almacenamiento y todos los permisos y conexiones correctos necesarios. Los recursos configurados por la implementación automatizada pueden recopilar datos de una sola región de Azure y enviar esos datos a Logz.io.
Busque el botón Deploy to Azure (Implementar en Azure) que se muestra en el primer paso del archivo Léame del repositorio.
Al seleccionar Implementar en Azure, la página Implementación Personalizada de Azure Portal se aparece con una lista de campos rellenados previamente.
Puede dejar la mayoría de los campos as-is, pero asegúrese de especificar la siguiente configuración:
- grupo de recursos: seleccione un grupo existente o cree uno nuevo.
- Logzio Logs/Metrics Host: Introduzca la dirección URL del listener de Logz.io. Si no está seguro de lo que es esta dirección URL, compruebe la dirección URL de inicio de sesión. Si es
app.logz.io
, uselistener.logz.io
(que es la configuración predeterminada). Si esapp-eu.logz.io
, usalistener-eu.logz.io
. - logzio Logs/Metrics Token: escriba el token de la cuenta de Logz.io a la que desea enviar registros o métricas de Azure. Puede encontrar este token en la página de la cuenta en la interfaz de usuario de Logz.io.
Acepte los términos de la parte inferior de la página y seleccione Comprar. A continuación, Azure implementa la plantilla, que puede tardar un minuto o dos. Finalmente, verá el mensaje "Implementación correcta" en la parte superior del portal.
Puede visitar el grupo de recursos definido para revisar los recursos implementados.
Para obtener información sobre cómo configurar logzio-azure-serverless
para realizar copias de seguridad de datos en Azure Blob Storage, consulte Envío de registros de actividad de Azure.
Transmisión de registros y métricas de Azure a Logz.io
Ahora que ha implementado la plantilla de integración, debe configurar Azure para transmitir datos de diagnóstico al centro de eventos que acaba de implementar. Cuando los datos entran en el centro de eventos, la aplicación de funciones reenvía esos datos a Logz.io.
En la barra de búsqueda, escriba Diagnósticoy seleccione Configuración de diagnóstico.
Elija un recurso de la lista de recursos y, a continuación, seleccione Añadir configuración de diagnóstico para abrir el panel de configuración de diagnóstico para ese recurso.
En Nombre, asigne un nombre a la configuración de diagnóstico.
Seleccione Trasmitir a un centro de eventos y, después, seleccione Configurar para abrir el panel Seleccionar centro de eventos.
Elija el centro de eventos:
- Selecciona un espacio de nombres del hub de eventos: elige el espacio de nombres que comienza con Logzio (
LogzioNS6nvkqdcci10p
, por ejemplo). - Seleccione el nombre del centro de eventos: elija insights-operational-logs para los registros y insights-operational-metricspara las métricas.
- Seleccione la política del centro de eventos: elija LogzioSharedAccessKey.
- Selecciona un espacio de nombres del hub de eventos: elige el espacio de nombres que comienza con Logzio (
Seleccione Aceptar para volver a la página Configuración de diagnóstico.
En la sección Registro, seleccione los datos que desea transmitir y, a continuación, seleccione Guardar.
Los datos seleccionados ahora se transmiten al centro de eventos.
Visualización de los datos
A continuación, deje que sus datos tengan tiempo para transferirse desde su sistema a Logz.io, y luego abra Kibana. Verá los datos (con el tipo eventhub
) llenando los paneles. Para obtener más información sobre cómo crear paneles, consulte Kibana - Create Dashboard.
Desde allí, puede consultar datos específicos en la pestaña Detectar
Limpieza de recursos
Cuando haya terminado con los recursos de Azure que creó en este tutorial, puede eliminarlos mediante el siguiente comando:
az group delete --name <resource group>
Pasos siguientes
En este tutorial, ha aprendido a configurar la aplicación Java y los servicios de Azure para enviar registros y métricas a Logz.io.
A continuación, obtenga más información sobre el uso del centro de eventos para supervisar la aplicación: