Självstudie: Komma igång med övervakning och loggning med hjälp av Logz.io för Java-appar som körs i Azure

Den här självstudien visar hur du konfigurerar ett klassiskt Java-program för att skicka loggar till tjänsten Logz.io för inmatning och analys. Logz.io är en komplett övervakningslösning baserad på ElasticSearch/Logstash/Kibana (ELK) och Grafana.

I självstudien förutsätter vi att du använder Log4J eller Logback. De här biblioteken är de två vanligaste för loggning i Java, så självstudien bör fungera för de flesta program som körs i Azure. Om du redan använder Elastic-stacken för att övervaka ditt Java-program visar självstudien hur du konfigurerar om för att rikta in dig mot Logz.io-slutpunkten.

I den här självstudien får du lära dig att:

  • Skicka loggar från ett befintligt Java-program till Logz.io.
  • Skicka diagnostikloggar och mått från Azure-tjänster till Logz.io.

Förutsättningar

Skicka Java-programloggar till Logz.io

Först får du lära dig hur du konfigurerar Java-programmet med en token som ger åtkomst till ditt Logz.io-konto.

Hämta din Logz.io-åtkomsttoken

Om du vill hämta din token loggar du in på ditt Logz.io konto, väljer kugghjulsikonen i det nedre vänstra hörnet och väljer sedan Inställningar > Hantera token och väljer fliken Dataöverföringstoken. Kopiera standardåtkomsttoken som visas samt lyssnarens URL så att du kan använda dem senare.

Installera och konfigurera Logz.io-biblioteket för Log4J eller Logback

Java-biblioteket Logz.io är tillgängligt i Maven Central, så du kan lägga till det som ett beroende i appkonfigurationen. Kontrollera versionsnumret i Maven Central och använd den senaste versionen i följande konfigurationsinställningar.

Om du använder Maven lägger du till följande beroende i filen 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>

Om du använder Gradle lägger du till följande beroende i byggskriptet:

Log4J:

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

Logback:

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

Uppdatera sedan konfigurationsfilen för Log4J eller 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>

Ersätt platshållaren <your-logz-io-token> med din åtkomsttoken och platshållaren <your-logz-io-listener-host> med din regions lyssnarvärd (till exempel listener.logz.io). Mer information om hur du hittar regionen för ditt konto finns i Kontoregion.

Elementet logzioType refererar till ett logiskt fält i ElasticSearch som används till att separera olika dokument från varandra. Det är viktigt att du konfigurerar den här parametern rätt för att få ut mesta möjliga av Logz.io.

En Logz.io "Type" är ditt loggformat (till exempel Apache, NGinx, MySQL) och inte din källa (till exempel server1, server2, server3). I den här självstudien anropar vi typen java eftersom vi konfigurerar Java-program, och vi förväntar oss att dessa program har samma format.

För avancerad användning kan du gruppera dina Java-program i olika typer med egna loggformat (kan konfigureras med Log4J och Logback). Du kan till exempel ha typen ”spring-boot-monolith” och typen ”spring-boot-microservice”.

Testa konfigurationen och logganalysen i Logz.io

När du har konfigurerat biblioteket Logz.io ska programmet skicka loggar direkt till det. Om du vill testa att allt fungerar korrekt går du till Logz.io-konsolen, väljer fliken Logg live > tail och väljer kör. Du bör se ett meddelande som anger att anslutningen fungerar, ungefär som det här:

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

Starta sedan programmet eller använd det så att du genererar några loggar. Du bör se loggarna direkt på skärmen. Här är till exempel de första startmeddelandena för ett Spring Boot-program:

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)

Nu när loggarna bearbetas av Logz.io kan du använda plattformens alla tjänster.

Skicka data om Azure-tjänster till Logz.io

Nu ska vi gå igenom hur du skickar loggar och mått från dina Azure-resurser till Logz.io.

Distribuera mallen

Det första steget är att distribuera mallen för integrering mellan Logz.io och Azure. Integrationen bygger på en färdig distributionsmall för Azure som konfigurerar alla nödvändiga byggstenar i pipelinen. Mallen skapar ett Event Hub-namnområde, en händelsehubb, två lagringsblobar samt de behörigheter och anslutningar som krävs. Resurserna som konfigureras via den automatiserade distributionen kan samla in data för en Azure-region och leverera dessa data till Logz.io.

Leta rätt på knappen Deploy to Azure (Distribuera till Azure) i det första steget i lagringsplatsens readme-fil.

När du väljer Deploy to Azure visas en lista med förifyllda fält på sidan Anpassad distribution i Azure-portalen.

Du kan lämna de flesta av fälten som de är, men se till att ange följande inställningar:

  • Resursgrupp: Välj antingen en befintlig grupp eller skapa en ny.
  • Logzio-loggar/måttvärd: Ange URL:en för den Logz.io lyssnaren. Om du inte känner till den här adressen tittar du på inloggningsadressen. Om den är app.logz.io använder du listener.logz.io (vilket är standardinställningen). Om den är app-eu.logz.io använder du listener-eu.logz.io.
  • Logzio-loggar/måtttoken: Ange token för det Logz.io konto som du vill skicka Azure-loggar eller -mått till. Du hittar denna token på kontosidan i Logz.io-gränssnittet.

Godkänn villkoren längst ned på sidan och välj Purchase (Köp). Azure distribuerar sedan mallen, det här kan ta några minuter. Slutligen visas ett meddelande om att distributionen lyckades längst upp i portalen.

Du kan gå till den definierade resursgruppen och granska de distribuerade resurserna.

Om du vill veta hur du konfigurerar logzio-azure-serverless för att säkerhetskopiera data till Azure Blob Storage kan du läsa Skicka Azure-aktivitetsloggar.

Strömma loggar och mått från Azure till Logz.io

Nu när du har distribuerat integreringsmallen måste du konfigurera Azure för att strömma diagnostikdata till händelsehubben du precis distribuerade. När data kommer till händelsehubben vidarebefordrar funktionsappen dessa data till Logz.io.

  1. Skriv ”diagnostik” i sökfältet och välj sedan Diagnostikinställningar.

  2. Välj en resurs i listan med resurser och välj Lägg till diagnostikinställning så att du öppnar panelen Diagnostikinställningar för resursen.

    Diagnostics settings panel

  3. Ge diagnostikinställningarna ett namn.

  4. Välj Strömma till en händelsehubb och sedan Konfigurera för att öppna panelen Välj händelsehubb.

  5. Välj din händelsehubb:

    • Välj namnområde för händelsehubb: Välj det namnområde som börjar med Logzio (LogzioNS6nvkqdcci10ptill exempel).
    • Välj namn på händelsehubb: För loggar väljer du insights-operational-logs och för mått väljer du insights-operational-metrics.
    • Välj namn på händelsehubbprincip: Välj LogzioSharedAccessKey.
  6. Välj OK för att återgå till panelen Diagnostikinställningar.

  7. Välj de data du vill strömma i loggavsnittet och sedan Spara.

Valda data strömmas nu till händelsehubben.

Visualisera dina data

Låt det gå en stund så att data hinner skickas från systemet till Logz.io och öppna sedan Kibana. Du bör se data (med typen eventhub) på dina instrumentpaneler. Mer information om hur du skapar instrumentpaneler finns i Kibana – Skapa instrumentpanel.

Därifrån kan du köra frågor mot specifika data på fliken Discover (Identifiera) eller skapa Kibana-objekt för att visualisera data på fliken Visualize (Visualisera).

Rensa resurser

När du är klar med de Azure-resurser du har skapat i den här självstudien kan du ta bort dem med hjälp av följande kommando:

az group delete --name <resource group>

Nästa steg

I den här självstudien har du lärt dig att konfigurera Java-program och Azure-tjänster för att skicka loggar och mått till Logz.io.

Gå vidare med att lära dig hur du använder Event Hub till att övervaka ditt program: