Usługa funkcji
Monitoring Azure
Aby wyświetlić wielkości mierzone dotyczące usługi Azure Functions Service w interfejsie użytkownika Instana, należy zainstalować agenta hosta Instana, a następnie włączyć czujnik Azure zgodnie z opisem w sekcji Konfigurowanie czujnika . Czujnik Azure Functions jest automatycznie włączany po zainstalowaniu agenta hosta Instana.
Aby wyświetlić śledzenie Azure Functions w interfejsie użytkownika Instana, należy dodać śledzenie Instana Azure Functions do aplikacji Azure Functions zgodnie z opisem w sekcji Instalowanie śledzenia Instana Azure Functions .
Uwaga: Inne obsługiwane usługi Azure są dostępne w dokumentacji Azure .
Konfigurowanie
Konfigurowanie czujnika
Należy włączyć czujnik Azure w pliku configuration.yaml agenta < agentinstall_dir>/etc/instana/configuration.yaml`. Minimalna konfiguracja czujnika wygląda następująco:
com.instana.plugin.azure:
enabled: true
subscription: "[Your-Subscription-Id]"
tenant: "[Your-Tenant-Id]"
principals:
- id: "[Your-Service-Principal-Account-Id]"
secret: "[Your-Service-Principal-Secret]"
Czujnik usługi Azure Functions Service jest domyślnie włączony.
Konfiguracja opcjonalna
Czujnik Azure Functions może być wyłączony i może być filtrowany według znaczników i grup zasobów. Można skonfigurować czujnik funkcji Azure , używając konfiguracji agenta w programie <agentinstall_dir>/etc/instana/configuration.yaml :
com.instana.plugin.azure.functionapp:
# Valid values: true, false
enabled: false # enabled (true) by default
# Comma separated list of tags in key:value format
include_tags:
# Comma separated list of tags in key:value format
exclude_tags:
# Comma separated list of resource groups
include_resource_groups:
# Comma separated list of resource groups
exclude_resource_groups:
Aby wyłączyć monitorowanie usług Azure Functions, użyj następującej konfiguracji:
com.instana.plugin.azure.functionapp:
enabled: false
Można zdefiniować wiele znaczników i grup zasobów, rozdzielając je przecinkami. Znaczniki należy podać jako parę klucz-wartość, rozdzielając je dwukropkiem (:). Aby ułatwić konfigurowanie, można zdefiniować, które znaczniki i grupy zasobów mają być uwzględniane w wykrywaniu lub wykluczane z wykrywania. W przypadku definiowania znacznika lub grupy zasobów na obu listach (włączeń/wykluczeń), lista wykluczeń ma wyższy priorytet. Jeśli filtrowanie usług nie jest konieczne, nie należy definiować konfiguracji. Definiowanie wszystkich wartości w celu włączenia filtrowania nie jest obowiązkowe.
Aby uwzględnić usługi według znaczników w wykrywaniu, należy użyć następującej konfiguracji:
com.instana.plugin.azure.functionapp:
include_tags: # Comma separated list of tags in key:value format (e.g. env:prod,env:staging)
Aby wykluczyć usługi według znaczników z wykrywania, należy użyć następującej konfiguracji:
com.instana.plugin.azure.functionapp:
exclude_tags: # Comma separated list of tags in key:value format (e.g. env:dev,env:test)
Aby włączyć usługi według grup zasobów do wykrywania, należy użyć następującej konfiguracji:
com.instana.plugin.azure.functionapp:
include_resource_groups: # Comma separated list of resource groups (e.g. rg_prod,rg_staging)
Aby wykluczyć usługi według wykrywania grup zasobów, należy użyć następującej konfiguracji:
com.instana.plugin.azure.functionapp:
exclude_resource_groups: # Comma separated list of resource groups (e.g. rg_dev,rg_test)
Filtrowanie wykrywania można skonfigurować na poziomie globalnym dla wszystkich usług Azure . W przypadku definiowania filtrów dla usługi Azure Functions filtry globalne zostaną przesłonięte. Więcej informacji na temat globalnego filtrowania wykrywania usług Azure zawiera sekcja KonfiguracjaAzure.
Instalowanie znaczników funkcji Instana Azure
Obecnie są to wymagania dotyczące używania usługi Instana z funkcjami usługi Azure :
- Aplikacja funkcji Azure to aplikacja .NET Core.
- Aplikacja funkcji Azure jest wdrażana na serwerze Azure za pomocą opcji
Docker Container.
Aby Instana działała w aplikacji Azure Function, dodaj następujące wiersze do pliku Dockerfile:
DOTNET_STARTUP_HOOKS="[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Core.dll" \
CORECLR_ENABLE_PROFILING=1 \
CORECLR_PROFILER="{cf0d821e-299b-5307-a3d8-b283c03916dd}" \
CORECLR_PROFILER_PATH="[AzureWebJobsScriptRoot]/bin/instana_tracing/CoreProfiler.so" \
INSTANA_ENDPOINT_URL="[Serverless-ingress-URL-for-your-region]" \
INSTANA_AGENT_KEY="[Your-Instana-agent-key]"
Wartość INSTANA_ENDPOINT_URL zależy od regionu. Więcej informacji na ten temat zawiera dokumentacja Punkty końcowe monitorowania bez serwera .
Więcej informacji na temat konfigurowania Instana w środowisku .NET Core zawiera sekcja .Dokumentacja środowiska NET Core .
Zamiast instalowania i używania pakietów Instana Nuget, aplikacja Azure Function wymaga, aby wszystkie pakiety Instana Nuget zostały skopiowane do folderu wersji, w którym aplikacja została wydana w serwisie Azure. Jest to wymagane, jeśli aplikacja funkcji Azure jest wdrożona na serwerze Azure z opcją Docker Container .
Aby uzyskać więcej informacji na temat naszych pakietów, patrz .NET Śledzenie dokumentacji .
Upewnij się, że używasz najnowszej wersji, pobierając najnowsze pakiety Instana.Tracing.Core, Instana.Tracing.Core.Sdk i Instana.Tracing.Core.Rewriter.Linux .
Po zakończeniu procesu pobierania skopiuj następujące pliki do niektórych folderów w aplikacji funkcji Azure , która jest łatwo dostępna z serwisu Dockerfile:
Instana.Tracing.Core.dllInstana.Tracing.Core.Common.dllInstana.Tracing.Core.Instrumentation.dllInstana.Tracing.Core.Transport.dllInstana.Tracing.Api.dllCoreProfiler.soinstrumentation.json
Następnie skopiuj te pliki do folderu wersji w serwisie Azure w następujący sposób:
COPY "/[path-to-your-patch-folder]/Instana.Tracing.Core.dll" "[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Core.dll"
COPY "/[path-to-your-patch-folder]/Instana.Tracing.Core.Common.dll" "[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Core.Common.dll"
COPY "/[path-to-your-patch-folder]/Instana.Tracing.Core.Instrumentation.dll" "[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Core.Instrumentation.dll"
COPY "/[path-to-your-patch-folder]/Instana.Tracing.Core.Transport.dll" "[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Core.Transport.dll"
COPY "/[path-to-your-patch-folder]/Instana.Tracing.Api.dll" "[AzureWebJobsScriptRoot]/bin/Instana.Tracing.Api.dll"
COPY "/[path-to-your-patch-folder]/CoreProfiler.so" "[AzureWebJobsScriptRoot]/bin/instana_tracing/CoreProfiler.so"
COPY "/[path-to-your-patch-folder]/instrumentation.json" "[AzureWebJobsScriptRoot]/bin/instana_tracing/instrumentation.json "
Uwaga: Nie należy instalować pakietów Instana.Tracing.Core bezpośrednio w aplikacji funkcji Azure . Śledzenie nie będzie działać, jeśli po wdrożeniu aplikacji istnieją zduplikowane pliki bibliotek.
Następnie należy usunąć pakiety Instana.Tracing.Core i postępować zgodnie z instrukcjami, które zostały już opisane w tym temacie, dotyczącymi kopiowania plików bibliotek do folderu wersji wewnątrz katalogu Dockerfile.
Obsługiwane wyzwalacze
Lista wyzwalaczy Azure Functions obsługiwanych przez Instana jest dostępna. Niektóre z nich są testowane do tej pory i zachowanie jest znane. Dla reszty z nich oprzyrządowanie nadal nie jest testowane. Poniższa tabela zostanie zaktualizowana natychmiast po zmianie stanu.
Jedno zachowanie jest widoczne podczas testowania, to znaczy, jeśli metodą Run funkcji Azure jest STATIC, niektóre brakujące dane znajdują się wewnątrz wygenerowanego zakresu, np. Function name lub nawet Trigger name w przypadku wyzwalacza kolejki. Jest to spowodowane tym, że jeśli metodą jest STATIC, instrumentacja Instana nie może zgromadzić wszystkich niezbędnych danych dotyczących metody Run . Zaleca się używanie metod NON-STATIC, gdy tylko jest to możliwe.
| Nazwa wyzwalacza | Przetestowane | Widoczne dane rozpiętości za pomocą metod STATIC | Widoczne dane rozpiętości za pomocą metod NON-STATIC |
|---|---|---|---|
| Obiekt BLOB | Nie przetestowano. | ||
| CosmosDB | Nie przetestowano. | ||
| Siatka zdarzeń | Nie przetestowano. | ||
| Koncentrator zdarzeń | Nie przetestowano. | ||
| Kafka | Nie przetestowano. | ||
| HTTP | Oprzyrządowanie działa zarówno z metodami STATIC, jak i NON-STATIC. | Wyzwalacz, Nazwa metody, Środowisko wykonawcze | Wyzwalacz, Nazwa metody, Środowisko wykonawcze, Nazwa funkcji |
| Kolejka | Instrumentacja działa tylko z metodami typu NON-STATIC. | Nazwa metody, Runtime | Wyzwalacz, Nazwa metody, Środowisko wykonawcze, Nazwa funkcji |
| RabbitMQ | Nie przetestowano. | ||
| Magistrala usług | Nie przetestowano. | ||
| SignalR | Nie przetestowano. | ||
| Tabela | Nie przetestowano. | ||
| Licznik czasu | Oprzyrządowanie działa zarówno z metodami STATIC, jak i NON-STATIC. | Wyzwalacz, Nazwa metody, Środowisko wykonawcze | Wyzwalacz, Nazwa metody, Środowisko wykonawcze, Nazwa funkcji |
Wyświetlanie metryk
Aby wyświetlić pomiary, wykonaj następujące kroki:
- Na pasku bocznym interfejsu użytkownika Instana wybierz opcję Infrastruktura.
- Kliknij konkretnego monitorowanego hosta.
Następnie można wyświetlić panel kontrolny hosta ze wszystkimi zgromadzonymi wielkościami mierzonymi i monitorowanymi procesami.
Wielkości mierzone
Uwaga: Wielkości mierzone dla usługi Functions są pobierane co minutę, czyli rozwiązanie, które usługa Azure udostępnia do monitorowania tych usług.
| Nazwa wielkości mierzonej | Opis |
|---|---|
| Żądania | Łączna liczba żądań bez względu na ich wynikowy kod statusu HTTP. Dla aplikacji WebApps i FunctionApps. |
| Odebrane bajty | Liczba bajtów odebranych przez usługę Azure Spring Cloud od klientów. |
| Wysłane bajty | Liczba bajtów wysłanych przez usługę Azure Spring Cloud do klientów. |
| Http101 | Liczba żądań, których wynikiem jest kod statusu HTTP 101. |
| Http2xx | Liczba żądań, których wynikiem jest kod statusu HTTP = 200, ale < 300. |
| Http3xx | Liczba żądań, których wynikiem jest kod statusu HTTP = 300, ale < 400. |
| Http4xx | Liczba żądań, których wynikiem jest kod statusu HTTP = 400, ale < 500. |
| Http5xx | Liczba żądań, których wynikiem jest kod statusu HTTP = 500, ale < 600. |
| Zbiór roboczy pamięci | Bieżąca ilość pamięci używanej przez aplikację w MiB. Dla aplikacji WebApps i FunctionApps. |
| Średni zbiór roboczy pamięci | Średnia ilość pamięci używanej przez aplikację (w megabajtach) (MiB). Dla aplikacji WebApps i FunctionApps. |
| Czas odpowiedzi HTTP | Czas obsługi żądań przez aplikację (w sekundach). Dla aplikacji WebApps i FunctionApps. |
| IoReadBytesPer | Szybkość, z jaką proces aplikacji odczytuje bajty z operacji we/wy. Dla aplikacji WebApps i FunctionApps. |
| IoWriteBytesPer | Szybkość zapisywania przez proces aplikacji bajtów w operacjach we/wy. Dla aplikacji WebApps i FunctionApps. |
| IoReadOperationsPers | Szybkość wysyłania przez proces aplikacji operacji we/wy odczytu. Dla aplikacji WebApps i FunctionApps. |
| IoWriteOperationsPersekundę | Szybkość wysyłania przez proces aplikacji operacji we/wy zapisu. Dla aplikacji WebApps i FunctionApps. |
| RequestsInApplicationQueue | Liczba żądań w kolejce żądań aplikacji. Dla aplikacji WebApps i FunctionApps. |
| Status HealthCheck | Status kontroli poprawności. Dla aplikacji WebApps i FunctionApps. |
| Użycie FileSystem | Procent wykorzystania limitu systemu plików przez aplikację. Dla aplikacji WebApps i FunctionApps. |
Dane konfiguracyjne
FunctionApps
| Szczegóły usługi FunctionApp | Opis |
|---|---|
| Identyfikator | Unikalny identyfikator aplikacji funkcjonalnej. |
| Nazwa | Nazwa instancji FunctionApp . |
| Typ | Typ FunctionApp . |
| Lokalizacja | Region, w którym znajduje się instancja. |
| Rodzaj | Wskazuje typ konta FunctionApp . |
| Subskrypcja | Identyfikator subskrypcji instancji usługi FunctionApp . |
| Grupa zasobów | Grupa zasobów instancji usługi FunctionApp . |
| Stan | Bieżący stan wdrożenia instancji. |
Funkcje
| Szczegóły usługi funkcji | Opis |
|---|---|
| Identyfikator | Unikalny identyfikator funkcji. |
| Nazwa | Nazwa instancji usługi Functions. |
| Typ | Typ usługi funkcji. |
| Lokalizacja | Region, w którym znajduje się instancja. |
| Subskrypcja | Identyfikator subskrypcji instancji usługi Functions. |
| Grupa zasobów | Grupa zasobów instancji usługi Functions. |