Zelfstudie: Aan de slag met bewaking en logboekregistratie met behulp van Logz.io voor Java-apps die worden uitgevoerd in Azure

In deze zelfstudie leert u hoe u een klassieke Java-toepassing kunt configureren voor het verzenden van logboeken naar de Logz.io-service voor gegevensopname en analyse. Logz.io biedt een volledige bewakingsoplossing op basis van Elasticsearch/Logstash/Kibana (ELK) en Grafana.

In deze zelfstudie wordt ervan uitgegaan dat u Log4J of Logback gebruikt. Deze bibliotheken worden het meest gebruikt voor logboekregistratie in Java, dus de zelfstudie moet werken voor de meeste toepassingen die worden uitgevoerd in Azure. Als u de Elastic Stack al gebruikt om uw Java-toepassing te bewaken, kunt u in deze zelfstudie zien hoe u opnieuw kunt configureren voor het Logz.io-eindpunt.

In deze zelfstudie leert u het volgende:

  • Logboeken van een bestaande Java-toepassing naar Logz.io verzenden.
  • Diagnostische logboeken en metrische gegevens van Azure-Services naar Logz.io verzenden.

Vereisten

Java-toepassingslogboeken naar Logz.io verzenden

Eerst leert u hoe u uw Java-toepassing kunt configureren met een token waarmee u toegang krijgt tot uw Logz.io-account.

Uw Logz.io-toegangstoken ophalen

Als u uw token wilt ophalen, meldt u zich aan bij uw Logz.io account, selecteert u het tandwielpictogram in de linkerbenedenhoek, selecteert u Instellingen Tokens beheren en selecteert u het tabblad Tokens voor gegevensverzending. Kopieer het standaardtoegangstoken dat wordt weergegeven, evenals de listener-URL, zodat u deze later kunt gebruiken.>

De Logz.io-bibliotheek voor Log4J of Logback installeren en configureren

De Java-bibliotheek van Logz.io is beschikbaar op Maven Central, zodat u deze als afhankelijkheid kunt toevoegen aan uw app-configuratie. Controleer het versienummer op Maven Central en gebruik de meest recente versie in de volgende configuratie-instellingen.

Als u Maven gebruikt, voegt u de volgende afhankelijkheid toe aan het bestand pom.xmltoe:

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>

Als u Gradle gebruikt, voegt u de volgende afhankelijkheid toe aan uw build-script toe:

Log4J:

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

Logback:

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

Werk vervolgens uw Log4J- of Logback-configuratie bestand bij:

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>

Vervang de tijdelijke aanduiding <your-logz-io-token> door uw toegangstoken en de tijdelijke aanduiding <your-logz-io-listener-host> door de listener-host van uw regio (bijvoorbeeld listener.logz.io). Zie Accountregio voor meer informatie over het vinden van de regio van uw account.

Het element logzioType verwijst naar een logisch veld in Elasticsearch dat wordt gebruikt om verschillende documenten van elkaar te scheiden. Het is essentieel om deze parameter goed te configureren om optimaal te profiteren van Logz.io.

Een Logz.io 'Type' is de logboekindeling (bijvoorbeeld: Apache, NGinx, MySQL) en niet uw bron (bijvoorbeeld: server1, server2, server3). Voor deze zelfstudie roepen we het type java aan omdat we Java-toepassingen configureren. We verwachten dat alle toepassingen dezelfde indeling hebben.

Voor geavanceerd gebruik kunt u uw Java-toepassingen groeperen in verschillende typen, die allemaal een eigen specifieke logboekindeling hebben (configureerbaar met Log4J en Logback). U kunt bijvoorbeeld het type 'spring-boot-monolith' en het type 'spring-boot-microservice' hebben.

Uw configuratie en logboekanalyse testen op Logz.io

Nadat de Logz.io-bibliotheek is geconfigureerd, moet uw toepassing nu logboeken rechtstreeks naar deze map verzenden. Als u wilt testen of alles correct werkt, gaat u naar de Logz.io-console, selecteert u het tabblad Logboeken > Live tail en selecteert u vervolgens Uitvoeren. Als het goed is, ziet u een bericht dat lijkt op het volgende. Dit betekent dat de verbinding werkt:

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

Start vervolgens uw toepassing of gebruik deze om een aantal logboeken te maken. De logboeken moeten rechtstreeks op het scherm worden weergegeven. Dit zijn bijvoorbeeld de eerste opstartberichten van een Spring boot-toepassing:

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 uw logboeken zijn verwerkt door Logz.io, kunt u profiteren van alle services van het platform.

Gegevens van Azure-services naar Logz.io verzenden

U gaat nu leren hoe u logboeken en metrische gegevens van uw Azure-resources naar Logz.io verzendt.

De sjabloon implementeren

De eerste stap bestaat uit het implementeren van de Logz.io-Azure-integratiesjabloon. De integratie is gebaseerd op een kant-en-klare Azure-implementatiesjabloon waarmee alle benodigde bouwstenen van de pijplijn worden ingesteld. De sjabloon maakt een Event Hub-naamruimte, een Event Hub, twee opslag-blobs en alle vereiste machtigingen en verbindingen. De resources die door de geautomatiseerde implementatie worden ingesteld, kunnen gegevens verzamelen voor één Azure-regio en die gegevens naar Logz.io verzenden.

Zoek de knop Implementeren in Azure op, die wordt weergegeven in de eerste stap van de Leesmij van de opslagplaats.

Wanneer u Implementeren in Azure selecteert, wordt de pagina Aangepaste implementatie in de Azure-portal weergegeven met een lijst met vooraf ingevulde velden.

U kunt de meeste velden ongewijzigd laten, maar u moet de volgende instellingen opgeven:

  • Resourcegroep: selecteer een bestaande groep of maak een nieuwe.
  • Logzio Logs/Metrics Host: Voer de URL van de Logz.io listener in. Controleer uw aanmeldings-URL als u niet zeker weet wat deze URL is. Als het app.logz.io is, gebruikt u listener.logz.io (de standaardinstelling). Als het app-eu.logz.io is, gebruikt u listener-eu.logz.io.
  • Logzio Logs/Metrics Token: Voer het token in van het Logz.io account waarnaar u Azure-logboeken of metrische gegevens wilt verzenden. U vindt dit token op de accountpagina in de gebruikersinterface van Logz.io.

Ga akkoord met de voorwaarden onder aan de pagina en selecteer Aankoop. De sjabloon wordt door Azure geïmplementeerd. Dit kan enkele minuten duren. U ziet dan het bericht 'Implementatie voltooid' boven aan de portal.

U kunt de gedefinieerde resourcegroep bezoeken om de geïmplementeerde resources te bekijken.

Zie Azure-activiteitenlogboeken verzenden voor meer informatie over het serverloos configureren van logzio-azure om een back-up te maken van gegevens in Azure Blob Storage.

Logboeken en metrische gegevens van Azure streamen naar Logz.io

Nu u de integratiesjabloon hebt geïmplementeerd, moet u Azure configureren voor het streamen van diagnostische gegevens naar de Event hub die u zojuist hebt geïmplementeerd. Wanneer gegevens in de Event Hub worden geleverd, stuurt de functie-app die gegevens vervolgens door naar Logz.io.

  1. Typ 'Diagnose' in de zoekbalk en selecteer vervolgens Diagnostische instellingen.

  2. Kies een resource in de lijst met resources en selecteer Diagnostische instelling toevoegen om het venster Diagnostische instellingen te openen voor die resource.

    Diagnostics settings panel

  3. Geef de diagnostische instellingen een Naam.

  4. Selecteer Streamen naar een Event Hub en selecteer vervolgens Configureren om het venster Event Hub selecteren te openen.

  5. Kies uw Event Hub:

    • Selecteer event hub-naamruimte: Kies de naamruimte die begint met Logzio (LogzioNS6nvkqdcci10pbijvoorbeeld).
    • Selecteer de naam van de Event Hub: kies voor logboeken inzichten-operationele logboeken en voor metrische gegevens inzichten-operational-metrics.
    • Selecteer de naam van het Event Hub-beleid: Kies LogzioSharedAccessKey.
  6. Selecteer OK om terug te gaan naar het venster Diagnostische instellingen.

  7. Selecteer in de sectie Logboek de gegevens die u wilt streamen en selecteer vervolgens Opslaan.

De geselecteerde gegevens worden nu naar de Event Hub gestreamd.

Uw gegevens visualiseren

Geef uw gegevens nu enige tijd om van uw systeem naar Logz.io te gaan en open vervolgens Kibana. Als het goed is, ziet u dat gegevens (met het type eventhub) op uw dashboards zijn ingevuld. Zie Kibana - Dashboard maken voor meer informatie over het maken van dashboards.

Van daaruit kunt u een query uitvoeren op specifieke gegevens op het tabblad Ontdekken of Kibana-objecten maken om uw gegevens te visualiseren op het tabblad Visualiseren.

Resources opschonen

Wanneer u klaar bent met de Azure-resources die u in deze zelfstudie hebt gemaakt, kunt u deze verwijderen met de volgende opdracht:

az group delete --name <resource group>

Volgende stappen

In deze zelfstudie hebt u geleerd hoe u uw Java-toepassing en Azure-Services kunt configureren om logboeken en metrische gegevens naar Logz.io te verzenden.

Meer informatie over het gebruik van Event Hub voor het bewaken van uw toepassing: