Ćwiczenie — Włączanie rejestrowania i monitorowanie funkcji platformy Azure w portalu
W poprzedniej lekcji przedstawiono kilka korzyści dotyczących dołączania aplikacji Szczegółowe informacje do aplikacji funkcji. Przedstawiono również niektóre z innych funkcji rejestrowania, które są dostępne dla twojego zespołu deweloperów.
Na tym etapie badań nad projektem wdrożono aplikację funkcji na platformie Azure przy użyciu narzędzia Maven i przetestowano aplikację funkcji w środowisku produkcyjnym. Następnym zadaniem jest dodanie do tej aplikacji funkcji śledzenia i rejestrowania.
W tym ćwiczeniu zaktualizujesz pliki konfiguracji projektu funkcji, aby obsługiwały zarówno przesyłanie strumieniowe dzienników, jak i aplikację Szczegółowe informacje. Dowiesz się również, jak dodawać niestandardowe wyzwalacze śledzenia i zdarzenia usługi Application Insights do kodu projektu.
Przesyłanie strumieniowe dzienników w czasie rzeczywistym
Teraz, po wdrożeniu i uruchomieniu aplikacji funkcji na platformie Azure, możesz rozwiązać ten problem przy użyciu prostego polecenia interfejsu wiersza polecenia platformy Azure, aby uzyskać przesyłanie strumieniowe dzienników w czasie rzeczywistym z aplikacji.
W witrynie Azure Portal na stronie Przegląd funkcji HttpExample . Użyj ikony Kopiuj do schowka , aby skopiować wartość grupy zasobów i aplikacji funkcji.
W oknie usługi Azure Cloud Shell wprowadź polecenie do przesyłania strumieniowego
az webapp log tail -n <functionAppName> -g <resourceGroup>
dzienników. Zastąp<functionAppName>
wartości i<resourceGroup>
wartościami zapisanymi w poprzednim kroku. Na przykład:az webapp log tail -n event-reporting-20240125192009873 -g learn-f0af729c-0493-4b45-a5b8-d6b4783b03da
Powinny zostać wyświetlone dane wyjściowe podobne do następującego komunikatu.
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).
Otwórz nową kartę w przeglądarce internetowej i wklej w pełni skonstruowany adres URL z poprzedniego ćwiczenia, aby uzyskać dostęp do aplikacji funkcji w celu wygenerowania niektórych dzienników.
Po zakończeniu testowania naciśnij klawisze Ctrl+C w usłudze Cloud Shell, aby zamknąć strumień dziennika.
Dodawanie instrumentacji do projektu Java dla usługi Application Szczegółowe informacje
Teraz, gdy aplikacja Szczegółowe informacje jest włączona dla aplikacji, następnym zadaniem jest włączenie jej w aplikacji. Aby włączyć rejestrowanie aplikacji i Szczegółowe informacje aplikacji, należy zmodyfikować pliki konfiguracji, aby uwzględnić wymagane biblioteki i inne zależności.
Istnieją dwa pliki konfiguracji, które należy zaktualizować: pom.xml i host.json.
Modyfikowanie pliku pom.xml
W usłudze Azure Cloud Shell zmień katalog na folder główny projektu:
cd ~/event-reporting
Otwórz plik pom.xml w edytorze kodu usługi Cloud Shell:
code pom.xml
Dodaj następujące elementy do sekcji autonomicznej
<dependencies>
, aby umożliwić aplikacji Szczegółowe informacje dla aplikacji:<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-web-auto</artifactId> <version>2.6.0</version> </dependency>
Uwaga
Upewnij się, że zależność
<dependency>
dla usługi Application Insights została dodana do autonomicznej kolekcji<dependencies>
, a nie do kolekcji<dependencies>
w elemencie<dependencyManagement>
.Naciśnij klawisze Ctrl+S, aby zapisać plik pom.xml, a następnie naciśnij klawisze Ctrl+Q, aby zamknąć edytor kodu.
Modyfikowanie pliku host.json
Otwórz plik host.json w edytorze kodu usługi Cloud Shell:
code host.json
Usuń istniejący kod JSON i zastąp go następującymi ustawieniami:
{ "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 } } }
Ustawienia elementu
extensionBundle
były już zdefiniowane, ale elementylogging
iapplicationInsights
definiują różne ustawienia funkcji rejestrowania i usługi Application Insights.Naciśnij klawisze Ctrl+S, aby zapisać plik host.json, a następnie naciśnij klawisze Ctrl+Q, aby zamknąć edytor kodu.
Dodawanie funkcji rejestrowania i śledzenia usługi Application Insights w kodzie projektu
Aby poprawić użyteczność danych zebranych przez aplikację Szczegółowe informacje, które są wyświetlane w plikach dziennika, należy dodać kilka poleceń rejestrowania danych do kodu aplikacji.
Dodawanie funkcji rejestrowania do pliku Function.java
Aby dodać rejestrowanie ogólne do funkcji, możesz dodać kod podobny do poniższego przykładu w kluczowych punktach w kodzie aplikacji, gdzie zastąp [LOG MESSAGE]
ciąg komunikatem, który ma być widoczny w plikach dziennika aplikacji.
context.getLogger().info("[LOG MESSAGE]");
Aby dodać funkcje rejestrowania do aplikacji, skorzystaj z poniższych instrukcji.
Otwórz plik Function.java swojej aplikacji w edytorze usługi Cloud Shell:
code ~/event-reporting/src/main/java/com/contoso/functions/Function.java
Jeśli sprawdzisz istniejący kod, zauważysz, że istnieje istniejące
context.getLogger()
polecenie. Jest to pierwsza instrukcja po definicjirun()
funkcji.Znajdź następującą sekcję kodu, służącą do testowania pod kątem pustych ciągów zapytania GET lub pustych żądań POST:
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(); }
Zmodyfikuj tę sekcję kodu tak, aby zawierała dwa polecenia
context.getLogger()
przekazujące stan funkcji do systemu rejestrowania: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(); }
Naciśnij klawisze Ctrl+S , aby zapisać plik Function.java , ale nie zamykaj edytora. W następnej sekcji tego ćwiczenia dodasz kod do aplikacji.
Dodawanie funkcji śledzenia usługi Application Insights do pliku Function.java
Dodaj następującą instrukcję
import
do istniejącego zestawu instrukcji importowania. Ta instrukcja importuje bibliotekę telemetrii usługi Application Insights:import com.microsoft.applicationinsights.TelemetryClient;
Dodaj następującą definicję do klasy
Function()
aplikacji. Ta instrukcja tworzy wystąpienie obiektuTelemetryClient
:private TelemetryClient telemetry = new TelemetryClient();
Skopiuj każdą z instrukcji
context.getLogger()
i zmodyfikuj kod tak, aby każdy z powtórzonych wpisów wywoływał metodętelemetry.trackEvent()
zamiastcontext.getLogger()
:. . . 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(); } . . .
Naciśnij klawisze Ctrl+S, aby zapisać plik Function.java, a następnie naciśnij klawisze Ctrl+Q, aby zamknąć edytor kodu.
Ostatnim zadaniem jest skompilowanie, spakowanie i ponowne wdrożenie aplikacji funkcji.
cd ~/event-reporting mvn clean package azure-functions:deploy
Funkcja rejestrowania i zbierania danych Szczegółowe informacje aplikacji jest teraz dodawana do funkcji.
Monitorowanie funkcji platformy Azure za pomocą usługi Application Insights
Aplikacja została już zaktualizowana tak, aby obsługiwała szczegółowe rejestrowanie za pomocą systemowego rejestratora oraz usługi Application Insights.
Aby wygenerować przykładowy ruch HTTP, skopiuj adres URL użyty do przetestowania aplikacji w przeglądarce internetowej w poprzednim ćwiczeniu. Użyj tego adresu URL z biblioteką cURL, aby utworzyć pętlę w usłudze Azure Cloud Shell; na przykład:
while :; do curl https://event-reporting-20200102030405006.azurewebsites.net/api/HttpExample?name=Bob; sleep 1; done
Zaloguj się w witrynie Azure Portal przy użyciu tego samego konta, które zostało wykorzystane do aktywowania piaskownicy.
W menu po lewej stronie wybierz pozycję Wszystkie zasoby.
Wybierz funkcję z listy zasobów — w tym ćwiczeniu nazwa funkcji zaczyna się od ciągu event-reporting. Na przykład: event-reporting-20200102030405006.
Wyświetl aktywność w sekcji Przesyłanie strumieniowe dzienników:
Wybierz pozycję Strumień dziennika w menu Aplikacja funkcji.
Otwórz listę rozwijaną Dzienniki Szczegółowe informacje aplikacji i wybierz pozycję Dzienniki systemu plików.
Zwróć uwagę, że przykładowy ruch generuje serię wpisów dziennika.
Wyświetl aktywność w sekcji Metryki na żywo:
Wybierz listę rozwijaną Dzienniki systemu plików i wybierz pozycję Dzienniki Szczegółowe informacje aplikacji.
Wybierz pozycję Otwórz w metrykach na żywo. Teraz możesz zobaczyć, że przykładowy ruch generuje wyniki aplikacji Szczegółowe informacje i metryk na żywo.
Gratulacje. Pomyślnie skonfigurowano funkcję platformy Azure na potrzeby szczegółowego rejestrowania.
Przed przejściem dalej wróć do usługi Cloud Shell i naciśnij klawisze Ctrl+C, aby zamknąć pętlę poleceń.