Gyakorlat – Naplózás hozzáadása és Azure-függvény monitorozása a Portalon
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.
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.
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
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).
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.
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
Az Azure Cloud Shell használatával változtassa meg a projekt gyökerének könyvtárát:
cd ~/event-reporting
Nyissa meg a pom.xml fájlt a Cloud Shell kódszerkesztőjével:
code pom.xml
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.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
Nyissa meg a host.json fájlt a Cloud Shell kódszerkesztőjével:
code host.json
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.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.
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ójarun()
utáni első utasítás.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(); }
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(); }
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
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;
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();
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(); } . . .
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.
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.
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
Jelentkezzen be az Azure Portalra ugyanazzal a fiókkal, amellyel a tesztkörnyezetet aktiválta.
Válassza a Minden erőforrás elemet a bal oldali menüben.
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.
A Naplóstreamelés tevékenység megtekintése:
Válassza a Naplóstream lehetőséget a Függvényalkalmazás menüben.
Nyissa meg az Alkalmazásnaplók Elemzések legördülő menüt, és válassza a Fájlrendszernaplók lehetőséget.
Figyelje meg, hogy a mintaforgalom naplóbejegyzések sorozatát hozza létre.
Az Élő metrikák tevékenység megtekintése:
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.
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.
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.