Ćwiczenie — Włączanie rejestrowania i monitorowanie funkcji platformy Azure w portalu

Ukończone

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.

  1. 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.

  2. 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
    
    
  3. 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).
    
  4. 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.

  5. 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

  1. W usłudze Azure Cloud Shell zmień katalog na folder główny projektu:

    cd ~/event-reporting
    
  2. Otwórz plik pom.xml w edytorze kodu usługi Cloud Shell:

    code pom.xml
    
  3. 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>.

  4. 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

  1. Otwórz plik host.json w edytorze kodu usługi Cloud Shell:

    code host.json
    
  2. 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 elementy logging i applicationInsights definiują różne ustawienia funkcji rejestrowania i usługi Application Insights.

  3. 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.

  1. 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 definicji run() funkcji.

  2. 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();
    }
    
  3. 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();
    }
    
  4. 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

  1. 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;
    
  2. Dodaj następującą definicję do klasy Function() aplikacji. Ta instrukcja tworzy wystąpienie obiektu TelemetryClient:

    private TelemetryClient telemetry = new TelemetryClient();
    
  3. Skopiuj każdą z instrukcji context.getLogger() i zmodyfikuj kod tak, aby każdy z powtórzonych wpisów wywoływał metodę telemetry.trackEvent() zamiast context.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();
    }
    . . .
    
  4. Naciśnij klawisze Ctrl+S, aby zapisać plik Function.java, a następnie naciśnij klawisze Ctrl+Q, aby zamknąć edytor kodu.

  5. 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.

  1. 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
    
  2. Zaloguj się w witrynie Azure Portal przy użyciu tego samego konta, które zostało wykorzystane do aktywowania piaskownicy.

  3. W menu po lewej stronie wybierz pozycję Wszystkie zasoby.

  4. Wybierz funkcję z listy zasobów — w tym ćwiczeniu nazwa funkcji zaczyna się od ciągu event-reporting. Na przykład: event-reporting-20200102030405006.

  5. Wyświetl aktywność w sekcji Przesyłanie strumieniowe dzienników:

    1. Wybierz pozycję Strumień dziennika w menu Aplikacja funkcji.

    2. Otwórz listę rozwijaną Dzienniki Szczegółowe informacje aplikacji i wybierz pozycję Dzienniki systemu plików.

      Image showing where to find Log Streaming.

    3. Zwróć uwagę, że przykładowy ruch generuje serię wpisów dziennika.

      Image showing Log Streaming.

  6. Wyświetl aktywność w sekcji Metryki na żywo:

    1. Wybierz listę rozwijaną Dzienniki systemu plików i wybierz pozycję Dzienniki Szczegółowe informacje aplikacji.

    2. 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.

      Image showing Application Insights and Live Metrics highlights.

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ń.