Udostępnij za pośrednictwem


Brak dzienników usługi Application Insights lub są one nieprawidłowe dla aplikacji usługi Azure Functions

Aplikację funkcji można uważnie monitorować za pomocą integracji między usługą Azure Functions i usługą Application Insights. Usługi Application Insights można używać bez żadnej konfiguracji niestandardowej.

Jeśli brakuje dzienników usługi Application Insights lub jeśli dane wydają się być częściowe lub niedokładne, wykonaj następujące kroki, aby rozwiązać ten problem.

Sprawdzanie konfiguracji aplikacji funkcji

  1. Przejdź do swojej aplikacji funkcji w witrynie Azure Portal.

  2. Wybierz pozycję Diagnozowanie i rozwiązywanie problemów, aby otworzyć diagnostykę usługi Azure Functions.

  3. Na pasku wyszukiwania wpisz Sprawdzanie konfiguracji funkcji i otwórz ją.

  4. Zostanie wyświetlony raport diagnostyczny wszystkich testów konfiguracji aplikacji funkcji. W szczególności w przypadku usługi Application Insights są wykonywane następujące kontrole:

    • Istnieje tylko jedno z następujących ustawień połączenia:

      • APPINSIGHTS_INSTRUMENTATIONKEY Klucz instrumentacji usługi Application Insights

      • APPLICATIONINSIGHTS_CONNECTION_STRING połączenie

        Zalecamy użycie APPLICATIONINSIGHTS_CONNECTION_STRING w celu zapewnienia bardziej stabilnego zachowania. Możliwość użycia APPINSIGHTS_INSTRUMENTATIONKEY zostanie wycofana do 2025 roku.

    • Zgodnie z zaleceniami wbudowane rejestrowanie elementu AzureWebJobsDashboard jest wyłączone.

    • Próbkowanie jest włączone dla telemetrii usługi Azure Functions (domyślnie włączone).

Zalecenie: aplikacja funkcji powinna być w wersji 4, a wersja środowiska uruchomieniowego powinna mieć co najmniej 4.15.2xx. Dzieje się tak dlatego, że od tej wersji można śledzić przepływy dzienników z usługi Azure Functions do usługi Application Insights. Monitorując przepływy dzienników, możesz sprawdzić brakujące dzienniki.

Niestandardowe dzienniki aplikacji

Domyślnie zapisywane dzienniki aplikacji niestandardowych są wysyłane do hosta usługi Functions, który następnie wysyła je do usługi Application Insights w kategorii Proces roboczy. Jednak niektóre stosy języków umożliwiają wysyłanie dzienników bezpośrednio do usługi Application Insights, co zapewnia pełną kontrolę nad sposobem emitowania dzienników. W takim przypadku potok rejestrowania zmienia się z worker > Functions host > Application Insights na worker > Application Insights.

Poniższa tabela zawiera podsumowanie opcji konfiguracji dostępnych dla każdego stosu:

Stos języka Gdzie skonfigurować dzienniki niestandardowe
.NET (model w procesie) host.json
.NET (model izolowany) Ustawienie domyślne (wysyłanie dzienników niestandardowych do hosta usługi Functions): host.json
Aby wysyłać dzienniki bezpośrednio do usługi Application Insights, zobacz Konfigurowanie usługi Application Insights w programie HostBuilder.
Node.JS host.json
Python host.json
Java Ustawienie domyślne (wysyłanie dzienników niestandardowych do hosta usługi Functions): host.json
Aby wysyłać dzienniki bezpośrednio do usługi Application Insights, zobacz Konfigurowanie agenta Java usługi Application Insights.
PowerShell host.json

Podczas konfigurowania dzienników aplikacji niestandardowych, które mają być wysyłane bezpośrednio, host nie emituje ich i host.json nie kontroluje już ich zachowania. Podobnie opcje uwidocznione przez każdy stos dotyczą tylko dzienników niestandardowych i nie zmieniają zachowania innych dzienników środowiska uruchomieniowego opisanych w tym artykule. W takim przypadku, aby kontrolować zachowanie wszystkich dzienników, może być konieczne wprowadzenie zmian w obu konfiguracjach.

Brakuje dzienników lub są one częściowe

Usługa Application Insights zbiera dane dzienników, wydajności i błędów. Konfiguracja próbkowania służy do zmniejszenia ilości danych telemetrycznych. Funkcja próbkowania jest domyślnie włączona z ustawieniami przedstawionymi w poniższym przykładzie host.json . Wykluczone typy nie są próbkowane.

{
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond" : 20,
        "excludedTypes": "Request;Exception"
      }
    }
  }
}

Jeśli zauważysz, że brakuje częściowo dzienników, może to nastąpić z powodu próbkowania. Aby określić rzeczywistą częstotliwość próbkowania, użyj zapytania analizy, które używa wymaganego interwału czasu pokazanego w poniższym fragmencie kodu. Jeśli zauważysz, że TelemetrySavedPercentage dla dowolnego typu próbkowania jest mniej niż 100, próbkowanie tego typu danych telemetrycznych jest próbkowane.

union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > todatetime("mm/dd/yyyy hh:mm:ss") and timestamp < todatetime("mm/dd/yyyy hh:mm:ss")
| summarize TelemetrySavedPercentage = 100/avg(itemCount), TelemetryDroppedPercentage = 100-100/avg(itemCount) by bin(timestamp, 1d), itemType
| sort by timestamp asc

Aby uzyskać więcej informacji, zobacz Zbieranie, przechowywanie i magazynowanie danych w usłudze Application Insights.

Kontrolowanie głośności i szczegółowości dzienników

Można zwiększyć lub pominąć zapisane dzienniki. W tym celu można użyć kombinacji poziomu dziennika i kategorii zgodnie z konfiguracją w host.json.

Rejestrator usługi Azure Functions zawiera kategorię dla każdego dziennika. Kategoria wskazuje, która część kodu środowiska uruchomieniowego lub kod funkcji wygenerował dziennik. Na przykład:

  • Wartości Host.Results i Function.<YOUR_FUNCTION_NAME> to niektóre z dostępnych kategorii.
  • Poziom dziennika jest przypisywany do każdego dziennika. Wartość wskazuje względną ważność, taką jak Warning lub Information.

Aby uzyskać więcej informacji, zobacz inne kategorie i dostępne poziomy dzienników.

Możesz skonfigurować sposób pisania dzienników przez aplikację, postępując zgodnie z przykładowym fragmentem kodu:

{
  "version": "2.0",
  "logging": {
    "logLevel": {
      "default": "Information", // catch all default, with modifications below for individual categories.
      "Function": "Warning", // Warning level from all Functions (except the ones configured below).
      "Host.Aggregator": "Trace", // Log all traces in the 'customMetrics' table of (and shown on Metrics/Alerts blade in AI) - use either this or Host.Results
      "Host.Results": "Error", // Error and Critical requests are only logged in the 'requests' table of the AI (and shown on Monitor Functions blade in Functions App) - use either this or Host.Aggregator
      "Function.Function1": "Information", //Information level logs from Function 1, logged in 'traces', 'dependencies' and 'customMetrics' tables of AI
      "Function.Function2.User": "Information" //user code logs from Function2, logged in 'traces' table of AI
    },
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "maxTelemetryItemsPerSecond": 1,
        "excludedTypes": "Exception"
      }
    }
  }
}

Aby skonfigurować te wartości na poziomie ustawień aplikacji (aby uniknąć ponownego wdrażania w host.json zmian), przesłoń określone wartości host.json , tworząc równoważną wartość jako ustawienie aplikacji. Aby uzyskać więcej informacji, zobacz Zastępowanie wartości pliku host.json.

Aby uzyskać więcej przykładów dotyczących pomijania dzienników, zobacz functions-log-suppression.

Zintegrowana aplikacja funkcji sieci wirtualnej nie generuje żadnych dzienników

Jeśli aplikacja funkcji jest zintegrowana z siecią wirtualną, musisz otworzyć port 443 dla ruchu wychodzącego w zaporze serwera, aby umożliwić zestawowi SDK usługi Application Insights lub agentowi usługi Application Insights wysyłanie danych do portalu dla następujących adresów URL:

  • dc.applicationinsights.azure.com
  • dc.applicationinsights.microsoft.com
  • dc.services.visualstudio.com
  • * .in.applicationinsights.azure.com

Aby uzyskać więcej informacji, zobacz Adresy IP używane przez usługę Azure Monitor.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.