Monitorowanie aplikacji dla usługi aplikacja systemu Azure i języka Python (wersja zapoznawcza)
Ważne
Zobacz Dodatkowe warunki użytkowania wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta lub wersji zapoznawczej albo w inny sposób nie zostały jeszcze wydane jako ogólnie dostępne.
Monitoruj aplikacje internetowe języka Python w usługach aplikacja systemu Azure bez modyfikowania kodu. W tym przewodniku pokazano, jak włączyć usługę Azure Monitor Application Szczegółowe informacje i oferuje porady dotyczące automatyzowania wdrożeń na dużą skalę.
Narzędzia integracji popularne biblioteki języka Python w kodzie umożliwiają automatyczne zbieranie i korelowanie zależności, dzienników i metryk. Po instrumentowaniu zbierasz wywołania i metryki z tych bibliotek języka Python:
Oprzyrządowanie | Nazwa obsługiwanej biblioteki | Obsługiwane wersje |
---|---|---|
Instrumentacja Django OpenTelemetry | django |
Link |
Instrumentacja FastApi OpenTelemetry | fastapi |
Link |
Instrumentacja platformy Flask OpenTelemetry | flask |
Link |
OpenTelemetry Psycopg2 Instrumentation | psycopg2 |
Link |
Instrumentacja żądań OpenTelemetry | requests |
Link |
Instrumentacja Biblioteki URLLib biblioteki OpenTelemetry | urllib |
wszystkie |
Instrumentacja OpenTelemetry UrlLib3 | urllib3 |
Link |
Uwaga
Jeśli używasz platformy Django, zobacz dodatkową sekcję Instrumentacja Django w tym artykule.
Rejestrowanie danych telemetrycznych jest zbierane na poziomie głównego rejestratora. Aby dowiedzieć się więcej na temat natywnej hierarchii rejestrowania języka Python, odwiedź dokumentację rejestrowania języka Python.
Wymagania wstępne
- Język Python w wersji 3.11 lub wcześniejszej.
- Usługa App Service musi być wdrożona jako kod. Kontenery niestandardowe nie są obsługiwane.
Włącz usługę Application Insights
Najprostszym sposobem monitorowania aplikacji języka Python w usługach aplikacja systemu Azure jest witryna Azure Portal.
Aktywowanie monitorowania w witrynie Azure Portal automatycznie instrumentuje aplikację przy użyciu aplikacji Szczegółowe informacje i nie wymaga żadnych zmian w kodzie.
Uwaga
W usłudze App Service należy używać autoinstrumentacji tylko wtedy, gdy nie używasz instrumentacji ręcznej biblioteki OpenTelemetry w kodzie, takiej jak dystrybucja OpenTelemetry usługi Azure Monitor lub eksporter OpenTelemetry usługi Azure Monitor. Zapobiega to wysyłaniu zduplikowanych danych. Aby dowiedzieć się więcej na ten temat, zapoznaj się z sekcją rozwiązywania problemów w tym artykule.
Automatycznainstrumentacja za pośrednictwem witryny Azure Portal
Aby uzyskać pełną listę obsługiwanych scenariuszy automatycznegoinstrumentacji, zobacz Obsługiwane środowiska, języki i dostawcy zasobów.
Włącz monitorowanie aplikacji języka Python w usłudze aplikacja systemu Azure Service bez konieczności wprowadzania zmian w kodzie.
Szczegółowe informacje aplikacji dla języka Python integruje się z usługą aplikacja systemu Azure Service opartą na kodzie.
Integracja jest dostępna w publicznej wersji zapoznawczej. Dodaje zestaw SDK języka Python, który jest ogólnie dostępny.
Wybierz pozycję Aplikacja Szczegółowe informacje w panelu sterowania platformy Azure dla usługi app Service, a następnie wybierz pozycję Włącz.
Wybierz opcję utworzenia nowego zasobu lub wybierz istniejący zasób aplikacji Szczegółowe informacje dla tej aplikacji.
Uwaga
Po wybraniu przycisku OK w celu utworzenia nowego zasobu zostanie wyświetlony monit o zastosowanie ustawień monitorowania. Wybranie pozycji Kontynuuj spowoduje połączenie nowego zasobu aplikacji Szczegółowe informacje z usługą app Service. Spowoduje to również wyzwolenie ponownego uruchomienia usługi App Service.
Określasz zasób i wszystko jest gotowe do użycia.
Konfigurowanie
Można skonfigurować za pomocą zmiennych środowiskowych OpenTelemetry, takich jak:
Zmienna środowiskowa | Opis |
---|---|
OTEL_SERVICE_NAME , OTEL_RESOURCE_ATTRIBUTES |
Określa atrybuty zasobów OpenTelemetry skojarzone z aplikacją. Można ustawić dowolne atrybuty zasobu za pomocą OTEL_RESOURCE_ATTRIBUTES lub użyć OTEL_SERVICE_NAME , aby ustawić tylko wartość service.name . |
OTEL_LOGS_EXPORTER |
Jeśli jest ustawiona wartość None , wyłącza zbieranie i eksportowanie danych telemetrycznych rejestrowania. |
OTEL_METRICS_EXPORTER |
Jeśli jest ustawiona wartość None , wyłącza zbieranie i eksportowanie danych telemetrycznych metryk. |
OTEL_TRACES_EXPORTER |
Jeśli jest ustawiona wartość None , wyłącza zbieranie i eksportowanie danych telemetrycznych śledzenia rozproszonego. |
OTEL_BLRP_SCHEDULE_DELAY |
Określa interwał eksportu rejestrowania w milisekundach. Wartość domyślna to 5000. |
OTEL_BSP_SCHEDULE_DELAY |
Określa interwał eksportu śledzenia rozproszonego w milisekundach. Wartość domyślna to 5000. |
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS |
Określa, które instrumentacje OpenTelemetry mają być wyłączone. Po wyłączeniu instrumentacje nie są wykonywane w ramach autoinstrumentacji. Akceptuje rozdzielaną przecinkami listę małych liter nazw bibliotek. Na przykład ustaw wartość na wartość , aby "psycopg2,fastapi" wyłączyć instrumentacje Psycopg2 i FastAPI. Domyślnie jest to pusta lista, włączając wszystkie obsługiwane instrumentacje. |
Dodawanie biblioteki instrumentacji społeczności
Więcej danych można zbierać automatycznie, dołączając biblioteki instrumentacji ze społeczności OpenTelemetry.
Uwaga
Nie obsługujemy ani nie gwarantujemy jakości bibliotek instrumentacji społeczności. Aby zasugerować jeden z naszych dystrybucji, post lub up-vote w naszej społeczności opinii. Należy pamiętać, że niektóre są oparte na eksperymentalnych specyfikacjach OpenTelemetry i mogą wprowadzać przyszłe zmiany powodujące niezgodność.
Aby dodać bibliotekę instrumentacji OpenTelemetry społeczności, zainstaluj ją za pośrednictwem pliku aplikacji requirements.txt
. Automatyczna instrygacja OpenTelemetry automatycznie pobiera i instrumentuje wszystkie zainstalowane biblioteki. Znajdź listę bibliotek społeczności tutaj.
Automatyzowanie monitorowania
Aby włączyć zbieranie danych telemetrycznych za pomocą Szczegółowe informacje aplikacji, należy ustawić tylko następujące ustawienia aplikacji:
Definicje ustawień aplikacji
Nazwa ustawienia aplikacji | Definicja | Wartość |
---|---|---|
APPLICATIONINSIGHTS_CONNECTION_STRING | ciąg Połączenie ions dla zasobu usługi Application Szczegółowe informacje | Przykład: abcd1234-ab12-cd34-abcd1234abcd |
ApplicationInsightsAgent_EXTENSION_VERSION | Główne rozszerzenie, które kontroluje monitorowanie środowiska uruchomieniowego. | ~3 |
Uwaga
Profiler i debuger migawek nie są dostępne dla aplikacji języka Python
Ustawienia aplikacji usługi App Service z usługą Azure Resource Manager
Ustawienia aplikacji dla usługi aplikacja systemu Azure można zarządzać i konfigurować przy użyciu szablonów usługi Azure Resource Manager. Tej metody można użyć podczas wdrażania nowych zasobów usługi App Service za pomocą automatyzacji usługi Resource Manager lub modyfikowania ustawień istniejących zasobów.
Podstawowa struktura pliku JSON ustawień aplikacji dla zasobu usługi App Service:
"resources": [
{
"name": "appsettings",
"type": "config",
"apiVersion": "2015-08-01",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
],
"tags": {
"displayName": "Application Insights Settings"
},
"properties": {
"key1": "value1",
"key2": "value2"
}
}
]
Na przykład szablonu usługi Resource Manager z ustawieniami aplikacji skonfigurowanymi dla Szczegółowe informacje aplikacji ten szablon może być przydatny. W szczególności zobacz sekcję, która rozpoczyna się w wierszu 238.
Automatyzowanie tworzenia zasobu usługi Application Szczegółowe informacje i łączenia z nowo utworzonym zasobem usługi App Service
Aby utworzyć szablon usługi Resource Manager z domyślnymi ustawieniami usługi Application Szczegółowe informacje, rozpocznij proces tak, jakby zamierzasz utworzyć nową aplikację internetową z włączoną Szczegółowe informacje aplikacji.
Utwórz nowy zasób usługi App Service z żądanymi informacjami o aplikacji internetowej. Włącz Szczegółowe informacje aplikacji na karcie Monitorowanie.
Wybierz pozycję Przejrzyj i utwórz. Następnie wybierz pozycję Pobierz szablon do automatyzacji.
Ta opcja generuje najnowszy szablon usługi Resource Manager ze skonfigurowanymi wszystkimi wymaganymi ustawieniami.
W poniższym przykładzie zastąp wszystkie wystąpienia AppMonitoredSite
swojej nazwy witryny:
Uwaga
W przypadku korzystania z systemu Windows ustaw wartość ApplicationInsightsAgent_EXTENSION_VERSION
~2
. W przypadku korzystania z systemu Linux ustaw wartość ApplicationInsightsAgent_EXTENSION_VERSION
~3
.
{
"resources": [
{
"name": "[parameters('name')]",
"type": "Microsoft.Web/sites",
"properties": {
"siteConfig": {
"appSettings": [
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
},
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
},
{
"name": "ApplicationInsightsAgent_EXTENSION_VERSION",
"value": "~2"
}
]
},
"name": "[parameters('name')]",
"serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"dependsOn": [
"[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"microsoft.insights/components/AppMonitoredSite"
],
"apiVersion": "2016-03-01",
"location": "[parameters('location')]"
},
{
"apiVersion": "2016-09-01",
"name": "[parameters('hostingPlanName')]",
"type": "Microsoft.Web/serverfarms",
"location": "[parameters('location')]",
"properties": {
"name": "[parameters('hostingPlanName')]",
"workerSizeId": "[parameters('workerSize')]",
"numberOfWorkers": "1",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"sku": {
"Tier": "[parameters('sku')]",
"Name": "[parameters('skuCode')]"
}
},
{
"apiVersion": "2015-05-01",
"name": "AppMonitoredSite",
"type": "microsoft.insights/components",
"location": "West US 2",
"properties": {
"ApplicationId": "[parameters('name')]",
"Request_Source": "IbizaWebAppExtensionCreate"
}
}
],
"parameters": {
"name": {
"type": "string"
},
"hostingPlanName": {
"type": "string"
},
"hostingEnvironment": {
"type": "string"
},
"location": {
"type": "string"
},
"sku": {
"type": "string"
},
"skuCode": {
"type": "string"
},
"workerSize": {
"type": "string"
},
"serverFarmResourceGroup": {
"type": "string"
},
"subscriptionId": {
"type": "string"
}
},
"$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0"
}
Włączanie za pomocą programu PowerShell
Aby włączyć monitorowanie aplikacji za pomocą programu PowerShell, należy zmienić tylko podstawowe ustawienia aplikacji. Poniższy przykład umożliwia monitorowanie aplikacji dla witryny internetowej o nazwie AppMonitoredSite
w grupie AppMonitoredRG
zasobów . Konfiguruje dane do wysłania 012345678-abcd-ef01-2345-6789abcd
do klucza instrumentacji.
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Uwaga
W przypadku korzystania z systemu Windows ustaw wartość Application Szczegółowe informacje Agent_EXTENSION_VERSION na ~2
wartość . W przypadku korzystania z systemu Linux ustaw wartość Application Szczegółowe informacje Agent_EXTENSION_VERSION na ~3
.
$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop
Instrumentacja Django
Aby użyć instrumentacji Django OpenTelemetry, należy ustawić zmienną DJANGO_SETTINGS_MODULE
środowiskową w ustawieniach usługi App Service, aby wskazywała z folderu aplikacji na moduł ustawień. Aby uzyskać więcej informacji, zobacz dokumentację platformy Django.
Często zadawane pytania
Jaka jest różnica między metrykami standardowymi z metryk usługi Application Szczegółowe informacje a metrykami usługi aplikacja systemu Azure Service?
Aplikacja Szczegółowe informacje zbiera dane telemetryczne dla żądań wysyłanych do aplikacji. Jeśli błąd wystąpi w usłudze WebApps/WebServer, a żądanie nie dotarło do aplikacji użytkownika, aplikacja Szczegółowe informacje nie ma żadnych danych telemetrycznych.
Czas trwania obliczany serverresponsetime
przez aplikację Szczegółowe informacje nie musi być zgodny z czasem odpowiedzi serwera obserwowanym przez usługę Web Apps. To zachowanie jest spowodowane tym, że aplikacja Szczegółowe informacje liczy czas trwania tylko wtedy, gdy żądanie rzeczywiście dociera do aplikacji użytkownika. Jeśli żądanie jest zablokowane lub umieszczone w kolejce na serwerze WebServer, czas oczekiwania jest uwzględniany w metrykach usługi Web Apps, ale nie w metrykach usługi Application Szczegółowe informacje.
Rozwiązywanie problemów
W tym miejscu udostępniamy nasz przewodnik rozwiązywania problemów dotyczący monitorowania aplikacji języka Python w usługach aplikacja systemu Azure przy użyciu funkcji automatycznegoinstrumentacji.
Zduplikowane dane telemetryczne
W usłudze App Service należy używać autoinstrumentacji tylko wtedy, gdy nie używasz instrumentacji ręcznej biblioteki OpenTelemetry w kodzie, takiej jak dystrybucja OpenTelemetry usługi Azure Monitor lub eksporter OpenTelemetry usługi Azure Monitor. Korzystanie z autoinstrumentacji na podstawie instrumentacji ręcznej może spowodować zduplikowane dane telemetryczne i zwiększyć koszt. Aby użyć autoinstrumentacji OpenTelemetry usługi App Service, najpierw usuń instrumentację ręczną openTelemetry z kodu.
Brak telemetrii
Jeśli brakuje telemetrii, wykonaj następujące kroki, aby upewnić się, że automatycznainstrumentacja jest włączona poprawnie.
Krok 1. Sprawdzanie bloku Szczegółowe informacje aplikacji w zasobie usługi App Service
Upewnij się, że funkcja autoinstrumentacji jest włączona w bloku Aplikacja Szczegółowe informacje w zasobie usługi App Service:
Krok 2. Upewnij się, że Ustawienia aplikacji są poprawne
Upewnij się, że ApplicationInsightsAgent_EXTENSION_VERSION
ustawienie aplikacji jest ustawione na wartość ~3
i że wskazuje APPLICATIONINSIGHTS_CONNECTION_STRING
odpowiedni zasób aplikacji Szczegółowe informacje.
Krok 3. Sprawdzanie dzienników diagnostyki i stanu autoinstrumentacji
Przejdź do folderu /var/log/applicationinsights/ i otwórz status_*.json.
Upewnij się, że AgentInitializedSuccessfully
ustawiono wartość true i IKey
mieć prawidłowy klucz iKey.
Oto przykładowy plik JSON:
"AgentInitializedSuccessfully":true,
"AppType":"python",
"MachineName":"c89d3a6d0357",
"PID":"47",
"IKey":"00000000-0000-0000-0000-000000000000",
"SdkVersion":"1.0.0"
Plik applicationinsights-extension.log
w tym samym folderze może pokazywać inną pomocną diagnostykę.
Aplikacje Django
Jeśli aplikacja używa platformy Django i nie uruchamia się lub używa nieprawidłowych ustawień, upewnij się, że ustawiono zmienną DJANGO_SETTINGS_MODULE
środowiskową. Aby uzyskać szczegółowe informacje, zobacz sekcję Instrumentacja Django.
Testowanie łączności między hostem aplikacji a usługą pozyskiwania
Zestawy SDK Szczegółowe informacje aplikacji i agenci wysyłają dane telemetryczne, aby uzyskać pozyskane jako wywołania REST do naszych punktów końcowych pozyskiwania. Możesz przetestować łączność z serwera internetowego lub maszyny hosta aplikacji do punktów końcowych usługi pozyskiwania przy użyciu pierwotnych klientów REST z poziomu programu PowerShell lub poleceń curl. Zobacz Rozwiązywanie problemów z brakującą telemetrią aplikacji w usłudze Azure Monitor Application Szczegółowe informacje.
Aby uzyskać najnowsze aktualizacje i poprawki błędów, zapoznaj się z informacjami o wersji. -->
Następne kroki
- Włączanie wysyłania diagnostyki platformy Azure do usługi Application Szczegółowe informacje
- Monitorowanie metryk kondycji usługi w celu upewnienia się, że usługa jest dostępna i odpowiada
- Otrzymywanie powiadomień o alertach za każdym razem, gdy wystąpią zdarzenia operacyjne lub metryki przekroczą próg
- Omówienie dostępności