Brak dzienników usługi Application Insights lub są one niepoprawne dla aplikacji Azure Functions
Aplikację funkcji można ściśle monitorować za pomocą integracji między usługą Azure Functions i usługą Application Insights. Możesz też użyć usługi Application Insights bez żadnej konfiguracji niestandardowej.
Jeśli brakuje dzienników usługi Application Insights lub dane wydają się być częściowe lub niedokładne, wykonaj następujące kroki, aby rozwiązać ten problem.
Sprawdzanie konfiguracji aplikacji funkcji
Przejdź do aplikacji funkcji w Azure Portal.
Wybierz pozycję Diagnozuj i rozwiąż problemy, aby otworzyć Azure Functions diagnostykę.
Na pasku wyszukiwania wpisz Testy konfiguracji funkcji i otwórz go.
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 InsightsAPPLICATIONINSIGHTS_CONNECTION_STRING
PołączeniaZalecamy użycie APPLICATIONINSIGHTS_CONNECTION_STRING w celu zachowania bardziej stabilnego. Możliwość użycia
APPINSIGHTS_INSTRUMENTATIONKEY
zostanie wycofana do 2025 r.
Wbudowane
AzureWebJobsDashboard
rejestrowanie jest wyłączone zgodnie z zaleceniami.Próbkowanie jest włączone dla Azure Functions telemetrii (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, ponieważ od tej wersji można śledzić przepływy dziennika z Azure Functions do usługi Application Insights. Monitorując przepływy dziennika, możesz sprawdzić brakujące dzienniki.
Brakujące dzienniki lub 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 pokazanymi 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
wartość dla dowolnego typu próbkowania jest mniejsza niż 100, próbkowanie tego typu danych telemetrycznych.
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 przechowywanie danych w usłudze Application Insights.
Kontrolowanie woluminu i pełności dzienników
Można zwiększyć lub pominąć zapisywane dzienniki. W tym celu można użyć kombinacji poziomu dziennika i kategorii skonfigurowanych w host.json.
Rejestrator Azure Functions zawiera kategorię dla każdego dziennika. Kategoria wskazuje, która część kodu środowiska uruchomieniowego lub kodu funkcji wygenerowała dziennik. Przykład:
- I
Host.Results
Function.<YOUR_FUNCTION_NAME>
to niektóre z dostępnych kategorii. - Poziom dziennika jest przypisywany do każdego dziennika. Wartość wskazuje względne znaczenie, takie jak
Warning
lubInformation
.
Aby uzyskać więcej informacji, zobacz inne dostępne kategorie i poziomy dzienników .
Aby skonfigurować sposób zapisywania dzienników przez aplikację, wykonaj czynności opisane w przykładowym fragmencie 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 wdrożenia 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 host.json.
Aby uzyskać więcej przykładów dotyczących pomijania dzienników, zobacz functions-log-suppression.
Aplikacja funkcji zintegrowanej 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 platformy Azure.