Tutorial: Introdução ao monitoramento e registro em log usando o Logz.io para aplicativos Java em execução no Azure

Este tutorial mostra como configurar um aplicativo Java clássico para enviar logs para o serviço Logz.io para ingestão e análise. Logz.io fornece uma solução de monitoramento completa baseada em Elasticsearch/Logstash/Kibana (ELK) e Grafana.

O tutorial pressupõe que você esteja usando Log4J ou Logback. Essas bibliotecas são as duas mais usadas para registrar em log em Java, portanto, o tutorial deve funcionar para a maioria dos aplicativos em execução no Azure. Se já estiver a usar o stack da Elastic para monitorizar a sua aplicação Java, este tutorial mostra como reconfigurar para o endpoint Logz.io.

Neste tutorial, você aprenderá a:

  • Envie logs de um aplicativo Java existente para o Logz.io.
  • Envie logs de diagnóstico e métricas dos serviços do Azure para o Logz.io.

Pré-requisitos

Enviar logs de aplicativos Java para Logz.io

Primeiro, você aprende a configurar seu aplicativo Java com um token que lhe dá acesso à sua conta Logz.io.

Obtenha seu token de acesso Logz.io

Para obter o seu token, inicie sessão na sua conta Logz.io, selecione o ícone de engrenagem no canto inferior esquerdo e, em seguida, selecione Definições>Gerir tokens e selecione o separador Tokens para envio de dados. Copie o token de acesso padrão exibido e a URL do ouvinte , de modo que possa utilizá-los mais tarde.

Instalar e configurar a biblioteca de Logz.io para Log4J ou Logback

A biblioteca Logz.io Java está disponível no Maven Central, para que você possa adicioná-la como uma dependência à configuração do seu aplicativo. Verifique o número da versão no Maven Central e use a versão mais recente nas seguintes definições de configuração.

Se você estiver usando o Maven, adicione a seguinte dependência ao seu arquivo 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>

Se você estiver usando o Gradle, adicione a seguinte dependência ao script de construção:

Log4J:

implementation 'io.logz.log4j:logzio-log4j-appender:2.0.0'

Logback:

implementation 'io.logz.logback:logzio-logback-appender:2.0.0'

Em seguida, atualize o arquivo de configuração Log4J ou 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>

Substitua o marcador <your-logz-io-token> pelo token de acesso e o marcador <your-logz-io-listener-host> pelo host de escuta da sua região - por exemplo, listener.logz.io. Para obter mais informações sobre como encontrar a região da sua conta, consulte Região da conta.

O elemento logzioType refere-se a um campo lógico no Elasticsearch que é usado para separar documentos diferentes uns dos outros. É essencial configurar este parâmetro corretamente para tirar o máximo proveito de Logz.io.

Um "tipo" no Logz.io refere-se ao formato do seu log - por exemplo: Apache, NGinx, MySQL - e não à sua origem - por exemplo: server1, server2, server3. Para este tutorial, estamos chamando o tipo java porque estamos configurando aplicativos Java e esperamos que todos esses aplicativos tenham o mesmo formato.

Para uso avançado, você pode agrupar seus aplicativos Java em diferentes tipos, que têm seu próprio formato de log específico (configurável com Log4J e Logback). Por exemplo, você pode ter um tipo spring-boot-monolith e um tipo spring-boot-microservice.

Teste sua configuração e análise de log no Logz.io

Depois que a biblioteca de Logz.io estiver configurada, seu aplicativo deverá enviar logs diretamente para ela. Para testar se tudo funciona corretamente, aceda à consola Logz.io, selecione a guia Logs>Live tail e selecione executar. Você verá uma mensagem semelhante à seguinte, informando que a conexão está funcionando:

Requesting Live Tail access...
Access granted. Opening connection...
Connected. Tailing...

Em seguida, inicie seu aplicativo ou use-o para produzir alguns logs. Os logs devem aparecer diretamente na tela. Por exemplo, aqui estão as primeiras mensagens de inicialização de um aplicativo 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)

Agora que Logz.io processa seus logs, você pode se beneficiar de todos os serviços da plataforma.

Enviar dados de serviços do Azure para Logz.io

Em seguida, você aprenderá como enviar logs e métricas de seus recursos do Azure para o Logz.io.

Implantar o modelo

A primeira etapa é implantar o modelo de integração Logz.io - Azure. A integração é baseada em um modelo de implantação do Azure pronto que configura todos os blocos de construção necessários do pipeline. O modelo cria um namespace do Hub de Eventos, um Hub de Eventos, dois blobs de armazenamento e todas as permissões e conexões corretas necessárias. Os recursos configurados pela implantação automatizada podem coletar dados para uma única região do Azure e enviar esses dados para Logz.io.

Encontre o botão Implantar no Azure exibido na primeira etapa do readme do repositório.

Quando você seleciona Implantar no Azure, a página de Implantação Personalizada no portal do Azure aparece com uma lista de campos pré-preenchidos.

Você pode deixar a maioria dos campos as-is mas certifique-se de inserir as seguintes configurações:

  • Grupo de recursos: Selecione um grupo existente ou crie um novo.
  • Logzio Logs/Metrics Host: Insira a URL do ouvinte Logz.io. Se não estiver certo de qual é este URL, verifique o URL de início de sessão. Se estiver app.logz.io, use listener.logz.io (que é a configuração padrão). Se for app-eu.logz.io, use listener-eu.logz.io.
  • Logzio Logs/Metrics Token: insira o token da conta de Logz.io para a qual você deseja enviar logs ou métricas do Azure. Você pode encontrar esse token na página da conta na interface do usuário do Logz.io.

Concorde com os termos na parte inferior da página e selecione Comprar. Em seguida, o Azure implanta o modelo, o que pode levar um ou dois minutos. Eventualmente, você verá a mensagem "Implantação bem-sucedida" na parte superior do portal.

Você pode visitar o grupo de recursos definido para revisar os recursos implantados.

Para saber como configurar logzio-azure-serverless para fazer backup de dados no Armazenamento de Blobs do Azure, consulte Enviar logs de atividade do Azure.

Transmita logs e métricas do Azure para Logz.io

Agora que você implantou o modelo de integração, precisa configurar o Azure para transmitir dados de diagnóstico para o Hub de Eventos que acabou de implantar. Quando os dados entram no Hub de Eventos, o aplicativo de função encaminha esses dados para Logz.io.

  1. Na barra de pesquisa, digite de diagnóstico e, em seguida, selecione Configurações de diagnóstico.

  2. Escolha um recurso na lista de recursos e, em seguida, selecione Adicionar configuração de diagnóstico para abrir o painel Configurações de diagnóstico para esse recurso.

    Painel de configurações de diagnóstico

  3. Dê um nome às suas configurações de diagnóstico.

  4. Selecione Transmitir para um hub de eventos, depois selecione Configurar para abrir o painel Selecionar hub de eventos.

  5. Escolha o seu Hub de Eventos:

    • Selecionar namespace do hub de eventos: Escolha o namespace que começa com Logzio (LogzioNS6nvkqdcci10p, por exemplo).
    • Selecione o nome do hub de eventos: Para logs, escolha insights-operational-logs e para métricas escolha insights-operational-metrics.
    • Selecione o nome da política do hub de eventos: Escolha LogzioSharedAccessKey.
  6. Selecione OK para retornar ao painel de Definições de Diagnóstico.

  7. Na secção Log, selecione os dados que pretende transmitir e, em seguida, selecione Guardar.

Os dados selecionados agora são transmitidos para o Hub de Eventos.

Visualize seus dados

Em seguida, dê algum tempo aos seus dados para passar do seu sistema para o Logz.io e, em seguida, abra o Kibana. Você deve ver dados (com o tipo eventhub) preenchendo seus painéis. Para obter mais informações sobre como criar painéis, consulte Kibana - Criar painel.

A partir daí, você pode consultar dados específicos na guia Descobrir ou criar objetos Kibana para visualizar seus dados na guia Visualizar.

Limpar recursos

Quando terminar de usar os recursos do Azure criados neste tutorial, você poderá excluí-los usando o seguinte comando:

az group delete --name <resource group>

Próximos passos

Neste tutorial, você aprendeu como configurar seu aplicativo Java e os serviços do Azure para enviar logs e métricas para Logz.io.

Em seguida, saiba mais sobre como usar o Hub de Eventos para monitorar seu aplicativo: