Tutorial: Introducción a la supervisión y el registro con Logz.io para aplicaciones de Java que se ejecutan en Azure

En este tutorial se muestra cómo configurar una aplicación de Java clásica para enviar registros al servicio Logz.io para su ingesta y análisis. Logz.io proporciona una solución de supervisión completa basada en Elasticsearch, Logstash, Kibana (ELK) y Grafana.

En el tutorial se da por hecho que está usando Log4J o Logback. Estas bibliotecas son las dos más utilizadas para el registro en Java, por lo que el tutorial debería funcionar en 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:

  • Enviar registros desde una aplicación de Java existente a Logz.io.
  • Enviar los registros de diagnóstico y las métricas de los servicios de Azure a Logz.io.

Requisitos previos

  • Kit para desarrolladores de Java, versión 11 o posterior
  • Una cuenta de Logz.io de Azure Marketplace
  • Una aplicación de Java existente que usa Log4J o Logback

Envío de registros de aplicación de Java a Logz.io

En primer lugar, aprenderá a configurar la aplicación de Java con un token que le da 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, así como 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 de Java de Logz.io 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 utiliza 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 utiliza Gradle, agregue la siguiente dependencia al archivo 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 de 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 más información sobre cómo encontrar la región de la cuenta, consulte Región de la cuenta.

El elemento logzioType hace referencia a un campo lógico de Elasticsearch que se usa para separar los distintos documentos entre sí. Es fundamental configurar este parámetro correctamente para sacar el máximo partido de Logz.io.

El elemento "Type" (Tipo) 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, vamos a llamar al tipo java porque estamos configurando aplicaciones de Java y esperamos que estas aplicaciones tengan el mismo formato.

Para un uso avanzado, puede agrupar las aplicaciones de Java en tipos diferentes, que tienen su propio formato de registro específico (configurable con Log4J y Logback). Por ejemplo, podría tener un tipo "spring-boot-monolith" y un tipo "spring-boot-microservice".

Prueba de la configuración y el análisis de registros en Logz.io

Una vez configurada la biblioteca Logz.io, la aplicación le enviará registros directamente. Para probar que todo funciona correctamente, vaya a la consola de Logz.io, seleccione la pestaña Final Registros > activos y, a continuación, seleccione Ejecutar. Verá un mensaje similar al siguiente, que indica 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 aparecerán 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 aprovechar todos los servicios de la plataforma.

Envío de datos de los servicios de Azure a Logz.io

A continuación, aprenderá a enviar registros y métricas de sus recursos de Azure a Logz.io.

Implementación de la plantilla

El primer paso es implementar la plantilla de integración de Azure y Logz.io. La integración se basa en una plantilla de implementación de Azure lista para usar que configura todos los bloques de creación necesarios de la canalización. La plantilla crea un espacio de nombres de Event Hub, 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 los datos de una sola región de Azure y enviarlos 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 Deploy to Azure (Implementar en Azure), se mostrará la página Custom Deployment (Implementación personalizada) en Azure Portal, con una lista de campos rellenados previamente.

Puede dejar la mayoría de los campos tal cual, pero asegúrese de especificar la siguiente configuración:

  • Resource group (Grupo de recursos): seleccione un grupo de recursos existente o cree uno.
  • Logzio Logs/Metrics Host (Registros de Logzio/Host de métricas): escriba la dirección URL del cliente de escucha de Logz.io. Si no está seguro de cuál es la dirección URL, compruebe la dirección URL de inicio de sesión. Si es app.logz.io, use listener.logz.io (que es la configuración predeterminada). Si es app-eu.logz.io, use listener-eu.logz.io.
  • Logzio Logs/Metrics Token (Registros de Logzio/Token de métricas): escriba el token de la cuenta de Logz.io a la que quiere enviar los registros o métricas de Azure. Encontrará este token en la página de la cuenta, en la interfaz de usuario de Logz.io.

Acepte los términos que se encuentra en la parte inferior de la página y seleccione Purchase (Comprar). Después, Azure implementará la plantilla, lo que puede tardar uno o dos minutos. Finalmente verá el mensaje "Deployment succeeded" (Implementación se realizó correctamente) en la parte superior del portal.

Puede visitar el grupo de recursos definido para revisar los recursos implementados.

Para más información sobre cómo configurar logzio-azure-serverless para realizar copias de seguridad de los datos en Azure Blob Storage, consulte Envío de los 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, deberá configurar Azure para transmitir los 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 función los reenvía a Logz.io.

  1. En la barra de búsqueda, escriba "diagnóstico" y, a continuación, seleccione Configuración de diagnóstico.

  2. Elija un recurso de la lista de recursos y, a continuación, seleccione Agregar configuración de diagnóstico para abrir el panel Configuración de diagnóstico para ese recurso.

    Diagnostics settings panel

  3. En Nombre, asigne un nombre a la configuración de diagnóstico.

  4. Seleccione Trasmitir a un centro de eventos y, después, seleccione Configurar para abrir el panel Seleccionar centro de eventos.

  5. Elija su centro de eventos:

    • Seleccionar el espacio de nombres del centro de eventos: elija el espacio de nombres que empieza por Logzio (LogzioNS6nvkqdcci10p, por ejemplo).
    • Seleccionar el nombre del centro de eventos: para los registros, elija insights-operational-logs y, para las métricas, elija insights-operational-metrics.
    • Seleccionar el nombre de la directiva del centro de eventos: elija LogzioSharedAccessKey.
  6. Seleccione Aceptar para volver a la página Configuración de diagnóstico.

  7. En la sección Registro, seleccione los datos que desea transmitir y, a continuación, seleccione Guardar.

Los datos seleccionados se transmitirán ahora al centro de eventos.

Visualización de los datos

A continuación, dé tiempo para que los datos lleguen desde su sistema a Logz.io y, a continuación, 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( Kibana - Create Dashboard).

Desde allí, puede consultar datos específicos en la pestaña Detectar o puede crear objetos Kibana para visualizar los datos en la pestaña Visualizar.

Limpieza de recursos

Cuando haya terminado con los recursos de Azure que creó en este tutorial, puede eliminarlos con 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: