Condividi tramite


Guida: Introduzione al monitoraggio e ai log con Logz.io per le app Java in esecuzione su Azure

Questa esercitazione illustra come configurare un'applicazione Java classica per inviare log al servizio Logz.io per l'inserimento e l'analisi. Logz.io offre una soluzione di monitoraggio completa basata su Elasticsearch/Logstash/Kibana (ELK) e Grafana.

L'esercitazione presuppone che si stia utilizzando Log4J o Logback. Queste librerie sono le due più usate per il logging in Java, quindi l'esercitazione dovrebbe funzionare per la maggior parte delle applicazioni che girano su Azure. Se usi già Elastic Stack per monitorare l'applicazione Java, questo tutorial ti mostra come riconfigurare l'obiettivo sull'endpoint Logz.io.

In questa esercitazione si apprenderà come:

  • Inviare log da un'applicazione Java esistente a Logz.io.
  • Inviare log di diagnostica e metriche dai servizi di Azure a Logz.io.

Prerequisiti

Inviare i log dell'applicazione Java a Logz.io

In primo luogo, si apprenderà come configurare l'applicazione Java con un token che consente l'accesso all'account Logz.io.

Ottenere il token di accesso Logz.io

Per ottenere il token, accedere all'account Logz.io, selezionare l'icona dell'ingranaggio nell'angolo in basso a sinistra, quindi selezionare Impostazioni>Gestisci token e selezionare la scheda Token di spedizione dati. Copiare il token di accesso predefinito visualizzato e l'URL del listener per usarli in un secondo momento.

Installare e configurare la libreria di Logz.io per Log4J o Logback

La libreria Java Logz.io è disponibile in Maven Central, quindi è possibile aggiungerla come dipendenza alla configurazione dell'app. Controllare il numero di versione in Maven Central e usare la versione più recente nelle impostazioni di configurazione seguenti.

Se si usa Maven, aggiungere la dipendenza seguente al file 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 si usa Gradle, aggiungere la dipendenza seguente allo script di compilazione:

Log4J:

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

Logback:

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

Aggiornare quindi il file di configurazione 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>

Sostituire il segnaposto <your-logz-io-token> con il token di accesso e il segnaposto <your-logz-io-listener-host> con l'host del listener della tua regione, ad esempio listener.logz.io. Per ulteriori informazioni sulla regione del tuo account, consulta Regione dell'account.

L'elemento logzioType fa riferimento a un campo logico in Elasticsearch usato per separare documenti diversi l'uno dall'altro. È essenziale configurare questo parametro correttamente per sfruttare al meglio Logz.io.

Un Logz.io "type" è il formato di log, ad esempio Apache, NGinx, MySQL e non l'origine, ad esempio: server1, server2, server3. Per questa esercitazione viene chiamato il tipo java perché si configurano applicazioni Java e si prevede che queste applicazioni abbiano tutti lo stesso formato.

Per un utilizzo avanzato, è possibile raggruppare le applicazioni Java in tipi diversi, che hanno tutti un formato di log specifico (configurabile con Log4J e Logback). Ad esempio, è possibile avere un tipo spring-boot-monolith e un tipo spring-boot-microservice.

Testare la configurazione e l'analisi dei log sulla piattaforma Logz.io.

Dopo aver configurato la libreria Logz.io, l'applicazione dovrebbe ora inviare i log direttamente. Per verificare che tutto funzioni correttamente, passare alla console di Logz.io, selezionare la scheda Logs>Live tail e quindi selezionare run. Verrà visualizzato un messaggio simile al seguente, che indica che la connessione funziona:

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

Avviare quindi l'applicazione o usarla per produrre alcuni log. I log dovrebbero essere visualizzati direttamente sullo schermo. Ecco ad esempio i primi messaggi di avvio di un'applicazione 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)

Ora che Logz.io elabora i log, è possibile trarre vantaggio da tutti i servizi della piattaforma.

Inviare i dati dei servizi di Azure a Logz.io

Si apprenderà quindi come inviare log e metriche dalle risorse di Azure a Logz.io.

Distribuire il modello

Il primo passaggio consiste nel distribuire il modello di integrazione di Logz.io - Azure. L'integrazione si basa su un modello di distribuzione di Azure pronto per configurare tutti i blocchi predefiniti necessari della pipeline. Il modello crea uno spazio dei nomi dell'hub eventi, un hub eventi, due BLOB di archiviazione e tutte le autorizzazioni e le connessioni corrette necessarie. Le risorse configurate dalla distribuzione automatizzata possono raccogliere dati per una singola area di Azure e spedirli a Logz.io.

Trovare il pulsante "Deploy to Azure" (Distribuisci in Azure) visualizzato nel primo passaggio del file leggimi del repository.

Quando si seleziona Distribuisci in Azure, viene visualizzata la pagina distribuzione personalizzata nel portale di Azure con un elenco di campi precompilati.

È possibile lasciare la maggior parte dei campi as-is ma assicurarsi di immettere le impostazioni seguenti:

  • gruppo di risorse: selezionare un gruppo esistente o crearne uno nuovo.
  • Logzio Logs/Metrics Host: Immettere l'URL del listener Logz.io. Se non sei sicuro di quale sia questo URL, controlla il tuo URL di accesso. Se è app.logz.io, usare listener.logz.io (ovvero l'impostazione predefinita). Se è app-eu.logz.io, usare listener-eu.logz.io.
  • Logzio Logs/Metrics Token: immettere il token dell'account Logz.io a cui si vogliono spedire i log o le metriche di Azure. È possibile trovare questo token nella pagina dell'account nell'interfaccia utente di Logz.io.

Accetta le condizioni nella parte inferiore della pagina e seleziona Acquista. Azure distribuisce quindi il modello, che potrebbe richiedere un minuto o due. Alla fine viene visualizzato il messaggio "Distribuzione riuscita" nella parte superiore del portale.

È possibile visitare il gruppo di risorse definito per esaminare le risorse distribuite.

Per informazioni su come configurare logzio-azure-serverless per eseguire il backup dei dati in Archiviazione BLOB di Azure, consultare Inviare i log di attività di Azure.

Trasmettere log e metriche di Azure a Logz.io

Dopo aver distribuito il modello di integrazione, è necessario configurare Azure per trasmettere i dati di diagnostica all'hub eventi appena distribuito. Quando i dati vengono inseriti nell'hub eventi, l'app per le funzioni inoltra i dati a Logz.io.

  1. Nella barra di ricerca digitare Diagnostic, quindi selezionare Impostazioni di diagnostica.

  2. Scegliere una risorsa dall'elenco delle risorse e quindi selezionare Aggiungi un'impostazione di diagnostica per aprire il pannello impostazioni di diagnostica per tale risorsa.

    pannello delle impostazioni di diagnostica

  3. Assegnare alle impostazioni di diagnostica un nome .

  4. Selezionare Trasmetti a un hub eventi, quindi selezionare Configura per aprire il pannello Seleziona Hub Eventi.

  5. Scegliere l'hub eventi:

    • Selezionare lo spazio dei nomi dell'hub di eventi: scegliere lo spazio dei nomi che inizia con Logzio (LogzioNS6nvkqdcci10p, ad esempio).
    • Selezionarenome dell'hub degli eventi: per i log scegliere insights-operational-logs e per le metriche scegliere insights-operational-metrics.
    • Selezionare il nome della policy dell'hub eventi: scegliere LogzioSharedAccessKey.
  6. Selezionare OK per tornare al pannello impostazioni di diagnostica.

  7. Nella sezione Log selezionare i dati da trasmettere e quindi selezionare Salva.

I dati selezionati ora vengono inviati all'hub eventi.

Visualizza i tuoi dati

Successivamente, dai ai tuoi dati un po' di tempo per passare dal tuo sistema a Logz.io, e poi apri Kibana. Verranno visualizzati i dati (con il tipo eventhub) che riempiono i dashboard. Per altre informazioni su come creare dashboard, vedere Kibana - Creare dashboard.

Da lì, puoi eseguire query per dati specifici nella scheda Individua, oppure creare oggetti Kibana per visualizzare i dati nella scheda Visualizza.

Pulire le risorse

Al termine delle risorse di Azure create in questa esercitazione, è possibile eliminarle usando il comando seguente:

az group delete --name <resource group>

Passaggi successivi

In questa esercitazione si è appreso come configurare l'applicazione Java e i servizi di Azure per inviare log e metriche a Logz.io.

Altre informazioni sull'uso dell'hub eventi per monitorare l'applicazione: