Gyakorlat – Naplózás hozzáadása és Azure-függvény monitorozása a Portalon

Befejeződött

Az előző leckében megismerkedett az Alkalmazás Elemzések függvényalkalmazásba való beépítésének néhány előnyével. Megismerhette a fejlesztői csapat számára elérhető egyéb naplózási funkciókat is.

A projekt kutatásának ezen szakaszában üzembe helyezte a függvényalkalmazást az Azure-ban a Maven használatával, és éles környezetben tesztelte a függvényalkalmazást. A következő feladata a követési és naplózási funkciók hozzáadása az alkalmazáshoz.

Ebben a gyakorlatban frissítenie kell a függvényprojekt konfigurációs fájljait a naplóstreamelés és az alkalmazás Elemzések támogatása érdekében. Azt is megtudhatja, hogyan adhat hozzá egyéni nyomkövetési és Application Insight-eseményindítókat a projektkódhoz.

Naplók streamelése valós időben

Most, hogy a függvényalkalmazás üzembe lett helyezve és fut az Azure-ban, az egyszerű Azure CLI-paranccsal elháríthatja, hogy valós idejű naplóstreamelést kapjon az alkalmazástól.

  1. Az Azure PortalOn, a HttpExample függvény Áttekintés lapján. A Másolás a vágólapra ikonnal másolja az erőforráscsoport és a függvényalkalmazás értékét.

  2. Az Azure Cloud Shell ablakában adja meg a az webapp log tail -n <functionAppName> -g <resourceGroup> naplók streameléséhez használható parancsot. Cserélje le és <resourceGroup> cserélje le <functionAppName> az előző lépésben mentett értékeket. Példa:

    az webapp log tail -n event-reporting-20240125192009873 -g learn-f0af729c-0493-4b45-a5b8-d6b4783b03da
    
    
  3. A kimenetnek az alábbi üzenethez hasonlóan kell megjelennie.

    2024-01-25T20:44:58  Welcome, you are now connected to log-streaming service. The default timeout is 2 hours. Change the timeout with the App Setting SCM_LOGSTREAM_TIMEOUT (in seconds). 
    2024-01-25T20:45:58  No new trace in the past 1 min(s).
    
  4. Nyisson meg egy új lapot a webböngészőben, és illessze be az előző gyakorlatból származó teljes URL-címet a függvényalkalmazás eléréséhez, hogy naplókat hozzon létre.

  5. A tesztelés befejezése után a Cloud Shellben nyomja le a Ctrl+C billentyűkombinációt a naplóstream bezárásához.

Eszközállapot hozzáadása a Java-projekthez az Alkalmazás Elemzések

Most, hogy az Alkalmazás Elemzések engedélyezve van az alkalmazáshoz, a következő feladata, hogy engedélyezze azt az alkalmazásban. Az alkalmazásnaplózás és az alkalmazás Elemzések engedélyezéséhez módosítania kell a konfigurációs fájlokat, hogy tartalmazzák a szükséges kódtárakat és egyéb függőségeket.

Két konfigurációs fájlt kell frissítenie: pom.xml és host.json.

A pom.xml fájl módosítása

  1. Az Azure Cloud Shell használatával változtassa meg a projekt gyökerének könyvtárát:

    cd ~/event-reporting
    
  2. Nyissa meg a pom.xml fájlt a Cloud Shell kódszerkesztőjével:

    code pom.xml
    
  3. Adja hozzá a következő elemeket az önálló <dependencies> szakaszhoz, hogy lehetővé teszi az Alkalmazás Elemzések az alkalmazás számára:

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-web-auto</artifactId>
        <version>2.6.0</version>
    </dependency>
    

    Feljegyzés

    Győződjön meg róla, hogy az Application Insights <dependency> szolgáltatását a különálló <dependencies> gyűjteményhez adja hozzá, nem pedig a(z) <dependencies> gyűjteményhez, amely a(z) <dependencyManagement> elem része.

  4. A pom.xml fájl mentéséhez nyomja le a CTRL+S billentyűkombinációt, a kódszerkesztő bezárásához pedig a Ctrl+Q billentyűkombinációt.

A host.json fájl módosítása

  1. Nyissa meg a host.json fájlt a Cloud Shell kódszerkesztőjével:

    code host.json
    
  2. Törölje a meglévő JSON-kódot, és cserélje le a következő beállításokra:

    {
        "version": "2.0",
        "extensionBundle": {
            "id": "Microsoft.Azure.Functions.ExtensionBundle",
            "version": "[1.*, 2.0.0)"
        },
        "logging": {
            "fileLoggingMode": "always",
            "logLevel": {
                "default": "Information"
            }
        },
        "applicationInsights": {
            "samplingSettings": {
                "isEnabled": true,
                "maxTelemetryItemsPerSecond" : 5
            }
        }
    }
    

    A(z) extensionBundle beállításai már meg lettek határozva, a(z) logging és a(z) applicationInsights azonban különböző beállításokat határoz meg ezekhez a funkciókhoz.

  3. A host.json fájl mentéséhez nyomja le a CTRL+S billentyűkombinációt, a kódszerkesztő bezárásához pedig a Ctrl+Q billentyűkombinációt.

Naplózás és Application Insights-nyomkövetés hozzáadása a projektkódhoz

A naplófájlokban megjelenő alkalmazás Elemzések által gyűjtött adatok hasznosságának javítása érdekében néhány adatnaplózási parancsot kell hozzáadnia az alkalmazás kódjához.

Naplózás hozzáadása a Function.java fájlhoz

Ha általános naplózást szeretne hozzáadni a függvényhez, az alábbi példához hasonló kódot adhat hozzá az alkalmazáskód kulcspontjaihoz, ahol a [LOG MESSAGE] sztringet egy üzenetre cseréli, amelyet látni szeretne az alkalmazás naplófájljaiban.

context.getLogger().info("[LOG MESSAGE]");

Ha hozzá szeretné adni a naplózást az alkalmazásához, használja az alábbi lépéseket.

  1. Nyissa meg az alkalmazás Function.java fájlját a Cloud Shell-szerkesztőben:

    code ~/event-reporting/src/main/java/com/contoso/functions/Function.java
    

    Ha megvizsgálja a meglévő kódot, láthatja, hogy létezik egy meglévő context.getLogger() parancs; ez a függvény definíciója run() utáni első utasítás.

  2. Keresse meg a következő kódszakaszt, amely egy üres GET lekérdezési sztringre vagy üres POST-kérésre tesztel:

    if (name == null) {
        return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build();
    } else {
        return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
    }
    
  3. Módosítsa ezt a kódszakaszt úgy, hogy két context.getLogger() parancsot tartalmazzon, amelyek a függvény állapotát adják vissza a naplózási rendszernek:

    if (name == null) {
        context.getLogger().info("Execution failure - Incorrect or missing parameter used.");
        return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build();
    } else {
        context.getLogger().info("Execution success - name parameter = " + name);
        return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
    }
    
  4. A Ctrl+S billentyűkombinációval mentse a Function.java fájlt, de ne zárja be a szerkesztőt. A gyakorlat következő szakaszában kódot fog hozzáadni az alkalmazáshoz.

Application Insights-nyomkövetés hozzáadása a Function.java fájlhoz

  1. Adja hozzá a következő import utasítást a létező importáláskészlethez; ez az utasítás importálja az Application Insights telemetria-könyvtárát:

    import com.microsoft.applicationinsights.TelemetryClient;
    
  2. Adja hozzá a következő definíciót az alkalmazás Function() osztályához; ez az utasítás példányosítja a(z) TelemetryClient objektumot:

    private TelemetryClient telemetry = new TelemetryClient();
    
  3. Másolja a(z) context.getLogger() utasítások minden egyes példányát, és módosítsa a kódot úgy, hogy minden duplikált bejegyzés a(z) telemetry.trackEvent() műveletet hívja meg a(z) context.getLogger() helyett:

    . . .
    context.getLogger().info("Java HTTP trigger processed a request.");
    telemetry.trackEvent("Java HTTP trigger processed a request.");
    
    // Parse query parameter
    String query = request.getQueryParameters().get("name");
    String name = request.getBody().orElse(query);
    
    if (name == null) {
        context.getLogger().info("Execution failure - Incorrect or missing parameter used.");
        telemetry.trackEvent("Execution failure - Incorrect or missing parameter used.");
        return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build();
    } else {
        context.getLogger().info("Execution success - name parameter = " + name);
        telemetry.trackEvent("Execution success - name parameter = " + name);
        return request.createResponseBuilder(HttpStatus.OK).body("Hi, " + name).build();
    }
    . . .
    
  4. A Function.java fájl mentéséhez nyomja le a CTRL+S billentyűkombinációt, a kódszerkesztő bezárásához pedig a Ctrl+Q billentyűkombinációt.

  5. Utolsó lépésként fel kell építenie, be kell csomagolnia és újból üzembe kell helyeznie a függvényalkalmazást.

    cd ~/event-reporting
    mvn clean package azure-functions:deploy
    

A naplózás és az alkalmazás Elemzések adatgyűjtés mostantól hozzáadódik a függvényhez.

Az Application Insights használata az Azure-függvény monitorozására

Az alkalmazást ezzel frissítette, hogy a rendszernaplózó és az Application Insights esetén is támogassa a részletes naplózást.

  1. Minta HTTP-forgalom létrehozásához másolja ki az alkalmazás teszteléséhez használt URL-címet egy webböngészőben az előző gyakorlatban. Használja ezt az URL-címet a cURL használatával egy hurok létrehozásához az Azure Cloud Shellben; például:

    while :; do curl https://event-reporting-20200102030405006.azurewebsites.net/api/HttpExample?name=Bob; sleep 1; done
    
  2. Jelentkezzen be az Azure Portalra ugyanazzal a fiókkal, amellyel a tesztkörnyezetet aktiválta.

  3. Válassza a Minden erőforrás elemet a bal oldali menüben.

  4. Az erőforrások listájában válassza ki a függvényét. Ebben a gyakorlatban a függvénye neve így kezdődik: eseményjelentés. Például: eseményjelentés-20200102030405006.

  5. A Naplóstreamelés tevékenység megtekintése:

    1. Válassza a Naplóstream lehetőséget a Függvényalkalmazás menüben.

    2. Nyissa meg az Alkalmazásnaplók Elemzések legördülő menüt, és válassza a Fájlrendszernaplók lehetőséget.

      Image showing where to find Log Streaming.

    3. Figyelje meg, hogy a mintaforgalom naplóbejegyzések sorozatát hozza létre.

      Image showing Log Streaming.

  6. Az Élő metrikák tevékenység megtekintése:

    1. Válassza ki a Fájlrendszernaplók legördülő menüt, és válassza az Alkalmazás Elemzések naplók lehetőséget.

    2. Válassza a Megnyitás élő metrikákban lehetőséget. Most már láthatja, hogy a mintaforgalom alkalmazás Elemzések és élő metrikák eredményeit hozza létre.

      Image showing Application Insights and Live Metrics highlights.

Gratulálunk, sikeresen konfigurálta az Azure-függvényt a részletes naplózáshoz.

A folytatás előtt váltson vissza a Cloud Shellre, és a Ctrl+C parancs lenyomásával zárja be a parancsciklust.