Udostępnij za pośrednictwem


Włączanie usługi Azure Monitor OpenTelemetry dla aplikacji .NET, Node.js, Python i Java

W tym artykule opisano sposób włączania i konfigurowania zbierania danych opartych na protokole OpenTelemetry w celu obsługi środowisk w usłudze Azure Monitor Application Insights. Omówimy sposób instalowania dystrybucji OpenTelemetry usługi Azure Monitor. Dystrybucja OpenTelemetry usługi Azure Monitor udostępnia dystrybucję OpenTelemetry, która obejmuje obsługę funkcji specyficznych dla usługi Azure Monitor. Dystrybucja umożliwia automatyczne telemetrię, włączając biblioteki instrumentacji OpenTelemetry do zbierania śladów, metryk, dzienników i wyjątków oraz umożliwia zbieranie niestandardowych danych telemetrycznych. Możesz również użyć funkcji Metryki na żywo zawartej w dystrybucji, aby monitorować i zbierać więcej danych telemetrycznych z dynamicznych aplikacji internetowych w środowisku produkcyjnym. Aby uzyskać więcej informacji na temat zalet korzystania z dystrybucji OpenTelemetry usługi Azure Monitor, zobacz Dlaczego należy używać dystrybucji "Azure Monitor OpenTelemetry"?.

Aby dowiedzieć się więcej na temat zbierania danych przy użyciu biblioteki OpenTelemetry, zobacz Często zadawane pytania dotyczące zbierania danych lub OpenTelemetry.

Stan wydania OpenTelemetry

Oferty OpenTelemetry są dostępne dla aplikacji .NET, Node.js, Python i Java.

Uwaga

  • Aby uzyskać stan wersji funkcji po funkcji, zobacz często zadawane pytania.
  • Druga karta tego artykułu obejmuje wszystkie scenariusze platformy .NET, w tym klasyczne ASP.NET, aplikacje konsolowe, formularze systemu Windows (WinForms) itp.

Rozpocznij

Wykonaj kroki opisane w tej sekcji, aby instrumentować aplikację przy użyciu funkcji OpenTelemetry.

Wymagania wstępne

Instalowanie biblioteki klienta

Zainstaluj najnowszy Azure.Monitor.OpenTelemetry.AspNetCore pakiet NuGet:

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

Włączanie usługi Azure Monitor Application Insights

Aby włączyć usługę Azure Monitor Application Insights, należy wprowadzić drobne modyfikacje aplikacji i ustawić "Parametry połączenia". Parametry połączenia informują aplikację, gdzie mają być wysyłane dane telemetryczne zbierane przez dystrybucję i są unikatowe dla Ciebie.

Modyfikowanie aplikacji

Dodaj UseAzureMonitor() element do uruchamiania aplikacji znajdujący się w program.cs klasie .

// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;

// Create a new WebApplicationBuilder instance.
var builder = WebApplication.CreateBuilder(args);

// Add OpenTelemetry and configure it to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the application.
var app = builder.Build();

// Run the application.
app.Run();

Kopiowanie parametrów połączenia z zasobu usługi Application Insights

Napiwek

Jeśli jeszcze go nie masz, możesz teraz utworzyć zasób usługi Application Insights. W tym przypadku zalecamy utworzenie nowego zasobu usługi Application Insights w porównaniu z użyciem istniejącego zasobu.

Aby skopiować unikatowe parametry połączenia:

Zrzut ekranu przedstawiający przegląd i parametry połączenia usługi Application Insights.

  1. Przejdź do okienka Przegląd zasobu usługi Application Insights.
  2. Znajdź parametry połączenia.
  3. Umieść kursor na parametry połączenia i wybierz ikonę Kopiuj do schowka.

Wklej parametry połączenia w środowisku

Aby wkleić parametry połączenia, wybierz następujące opcje:

Odp. Ustawianie za pomocą zmiennej środowiskowej (zalecane)

Zastąp <Your Connection String> ciąg w poniższym poleceniu unikatowym parametry połączenia.

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

B. Ustawianie za pomocą pliku konfiguracji — tylko język Java (zalecane)

Utwórz plik konfiguracji o nazwie applicationinsights.jsoni umieść go w tym samym katalogu, co applicationinsights-agent-3.5.3.jar w przypadku następującej zawartości:

{
  "connectionString": "<Your Connection String>"
}

Zastąp <Your Connection String> element w poprzednim formacie JSON unikatowym parametry połączenia.

C. Ustaw za pomocą kodu — ASP.NET Core, Node.js i Tylko język Python (niezalecane)

Zobacz Konfiguracja parametrów połączenia, aby zapoznać się z przykładem ustawienia parametrów połączenia za pomocą kodu.

Uwaga

Jeśli ustawisz parametry połączenia w więcej niż jednym miejscu, przestrzegamy następującego pierwszeństwa:

  1. Kod
  2. Zmienna środowiskowa
  3. Plik konfiguracji

Potwierdzanie, że dane przepływają

Uruchom aplikację i otwórz kartę Zasób usługi Application Insights w witrynie Azure Portal. Wyświetlenie danych w portalu może potrwać kilka minut.

Zrzut ekranu przedstawiający kartę Przegląd usługi Application Insights z wyróżnionymi żądaniami serwera i czasem odpowiedzi serwera.

Usługa Application Insights jest teraz włączona dla aplikacji. Wszystkie poniższe kroki są opcjonalne i umożliwiają dalsze dostosowywanie.

Ważne

Jeśli masz co najmniej dwie usługi, które emitują dane telemetryczne do tego samego zasobu usługi Application Insights, musisz ustawić nazwy ról w chmurze, aby reprezentować je prawidłowo na mapie aplikacji.

W ramach instrumentacji usługi Application Insights zbieramy i wysyłamy dane diagnostyczne do firmy Microsoft. Te dane pomagają nam uruchamiać i ulepszać usługę Application Insights. Aby dowiedzieć się więcej, zobacz Statsbeat in aplikacja systemu Azure Insights (Statystyki w usłudze aplikacja systemu Azure Insights).

Przykłady

Przykładowe aplikacje OpenTelemetry w usłudze Azure Monitor są dostępne dla wszystkich obsługiwanych języków.

Następne kroki

  • Aby uzyskać szczegółowe informacje na temat dodawania i modyfikowania usługi Azure Monitor OpenTelemetry, zobacz Dodawanie i modyfikowanie funkcji OpenTelemetry usługi Azure Monitor.
  • Aby jeszcze bardziej skonfigurować dystrybucję OpenTelemetry, zobacz Azure Monitor OpenTelemetry configuration (Konfiguracja biblioteki OpenTelemetry w usłudze Azure Monitor).
  • Aby przejrzeć kod źródłowy, zobacz repozytorium GitHub aspnetcore usługi Azure Monitor.
  • Aby zainstalować pakiet NuGet, sprawdź dostępność aktualizacji lub wyświetl informacje o wersji, zobacz stronę Pakiet NuGet platformy AspNetCore usługi Azure Monitor.
  • Aby zapoznać się z usługami Azure Monitor i OpenTelemetry, zobacz Przykładowa aplikacja usługi Azure Monitor.
  • Aby dowiedzieć się więcej na temat biblioteki OpenTelemetry i jej społeczności, zobacz repozytorium GitHub OpenTelemetry .NET.
  • Aby włączyć środowiska użycia, włącz monitorowanie użytkowników sieci Web lub przeglądarki.

Często zadawane pytania

Ta sekcja zawiera odpowiedzi na typowe pytania.

Co to jest OpenTelemetry?

Jest to nowy standard open source umożliwiający obserwowanie. Dowiedz się więcej na stronie OpenTelemetry.

Dlaczego usługa Microsoft Azure Monitor inwestuje w rozwiązanie OpenTelemetry?

Firma Microsoft jest jednym z największych współautorów usługi OpenTelemetry.

Najważniejsze propozycje dotyczące biblioteki OpenTelemetry są neutralne dla dostawcy i zapewniają spójne interfejsy API/zestawy SDK w różnych językach.

Z biegiem czasu uważamy, że platforma OpenTelemetry umożliwi klientom usługi Azure Monitor obserwowanie aplikacji napisanych w językach poza obsługiwanymi językami. Rozszerza również typy danych, które można zbierać za pomocą bogatego zestawu bibliotek instrumentacji. Ponadto zestawy SDK (Software Development Kit) openTelemetry są zwykle bardziej wydajne na dużą skalę niż ich poprzedniki, zestawy SDK usługi Application Insights.

Na koniec platforma OpenTelemetry jest zgodna ze strategią firmy Microsoft w celu przyjęcia rozwiązania open source.

Jaki jest stan funkcji OpenTelemetry?

Zobacz Stan openTelemetry.

Co to jest "Dystrybucja opentelemetrii usługi Azure Monitor"?

Można go traktować jako cienką otokę, która łączy wszystkie składniki OpenTelemetry dla środowiska pierwszej klasy na platformie Azure. Ta otoka jest również nazywana dystrybucją w usłudze OpenTelemetry.

Dlaczego należy używać dystrybucji "Azure Monitor OpenTelemetry"?

Korzystanie z dystrybucji OpenTelemetry usługi Azure Monitor za pośrednictwem natywnej biblioteki OpenTelemetry z poziomu społeczności ma kilka zalet:

W duchu OpenTelemetry zaprojektowaliśmy dystrybucję tak, aby była otwarta i rozszerzalna. Możesz na przykład dodać następujące elementy:

  • Eksporter Protokołu OTLP (OpenTelemetry Protocol) i wysyłany jednocześnie do drugiego miejsca docelowego
  • Inne biblioteki instrumentacji nieuwzględniane w dystrybucji

Ponieważ dystrybucja dystrybucji zapewnia dystrybucję OpenTelemetry, dystrybucja obsługuje wszystkie elementy obsługiwane przez bibliotekę OpenTelemetry. Na przykład można dodać więcej procesorów telemetrycznych, eksporterów lub bibliotek instrumentacji, jeśli usługa OpenTelemetry je obsługuje.

Uwaga

Dystrybucja ustawia próbkator na niestandardowy przykładowy, stały współczynnik dla usługi Application Insights. Można to zmienić na inny przykład, ale może to spowodować wyłączenie niektórych dołączonych możliwości dystrybucji. Aby uzyskać więcej informacji na temat obsługiwanego przykładnika, zobacz sekcję Włączanie próbkowania w temacie Konfigurowanie usługi Azure Monitor OpenTelemetry.

W przypadku języków bez obsługiwanego autonomicznego eksportera OpenTelemetry usługa Azure Monitor OpenTelemetry Distro jest jedynym obecnie obsługiwanym sposobem korzystania z biblioteki OpenTelemetry w usłudze Azure Monitor. W przypadku języków z obsługiwanym autonomicznym eksporterem OpenTelemetry możesz użyć dystrybucji OpenTelemetry usługi Azure Monitor lub odpowiedniego autonomicznego eksportera OpenTelemetry OpenTelemetry w zależności od scenariusza telemetrii. Aby uzyskać więcej informacji, zobacz Kiedy należy używać eksportera OpenTelemetry usługi Azure Monitor?.

Jak przetestować dystrybucję opentelemetrii usługi Azure Monitor?

Zapoznaj się z naszymi dokumentami dotyczącymi włączania dla platform .NET, Java, JavaScript (Node.js) i języka Python.

Czy należy używać interfejsu OpenTelemetry lub zestawu SDK usługi Application Insights?

Zalecamy korzystanie z dystrybucji OpenTelemetry, chyba że wymagana jest funkcja dostępna tylko z obsługą formalną w zestawie SDK usługi Application Insights.

Wdrażanie biblioteki OpenTelemetry teraz uniemożliwia przeprowadzenie migracji w późniejszym terminie.

Kiedy należy używać eksportera OpenTelemetry usługi Azure Monitor?

W przypadku ASP.NET Core, Java, Node.js i Python zalecamy użycie dystrybucji OpenTelemetry usługi Azure Monitor. Jest to jeden wiersz kodu, aby rozpocząć pracę.

W przypadku wszystkich innych scenariuszy platformy .NET, w tym klasycznych ASP.NET, aplikacji konsolowych, formularzy systemu Windows (WinForms) itp., zalecamy użycie eksportera OpenTelemetry platformy .NET usługi Azure Monitor: Azure.Monitor.OpenTelemetry.Exporter.

W przypadku bardziej złożonych scenariuszy telemetrii języka Python wymagających zaawansowanej konfiguracji zalecamy użycie eksportera OpenTelemetry usługi Azure Monitor w języku Python.

Jaki jest bieżący stan wersji funkcji w usłudze Azure Monitor OpenTelemetry Distro?

Na poniższym wykresie przedstawiono obsługę funkcji OpenTelemetry dla każdego języka.

Funkcja .NET Node.js Python Java
Śledzenie rozproszone
Metryki niestandardowe
Metryki standardowe (dokładność, na którą ma obecnie wpływ próbkowanie)
Próbkowanie o stałej częstotliwości
Magazyn w trybie offline i automatyczne ponawianie prób
Raportowanie wyjątków
Zbieranie dzienników ⚠️
Zdarzenia niestandardowe ⚠️ ⚠️ ⚠️
Uwierzytelnianie Microsoft Entra
Metryki na żywo
Filtrowanie metryk na żywo
Wykrywanie kontekstu zasobów dla maszyn wirtualnych/zestawu skalowania maszyn wirtualnych i usługi App Service
Wykrywanie kontekstu zasobów dla usługi Azure Kubernetes Service (AKS) i funkcji
Zdarzenia testowania dostępności generowane przy użyciu interfejsu API śledzenia dostępności
Filtrowanie żądań, zależności, dzienników i wyjątków według anonimowego identyfikatora użytkownika i syntetycznego źródła
Filtrowanie zależności, dzienników i wyjątków według nazwy operacji
Próbkowanie adaptacyjne
Profiler ⚠️
Debuger migawek

Klawisz

Czy można używać funkcji OpenTelemetry dla przeglądarek internetowych?

Tak, ale nie zalecamy jej i platforma Azure nie obsługuje jej. Język JavaScript openTelemetry jest mocno zoptymalizowany pod kątem Node.js. Zamiast tego zalecamy używanie zestawu SDK języka JavaScript usługi Application Insights.

Kiedy można oczekiwać, że zestaw SDK OpenTelemetry będzie dostępny do użycia w przeglądarkach internetowych?

Internetowy zestaw SDK openTelemetry nie ma ustalonej osi czasu dostępności. Prawdopodobnie kilka lat od zestawu SDK przeglądarki jest realną alternatywą dla zestawu SDK języka JavaScript usługi Application Insights.

Czy mogę przetestować metrykę OpenTelemetry w przeglądarce internetowej dzisiaj?

Piaskownica internetowa OpenTelemetry to rozwidlenie przeznaczone do działania openTelemetry w przeglądarce. Nie można jeszcze wysyłać danych telemetrycznych do usługi Application Insights. Zestaw SDK nie definiuje ogólnych zdarzeń klienta.

Czy działa usługa Application Insights obok agentów konkurencji, takich jak AppDynamics, DataDog i NewRelic, jest obsługiwana?

Ta praktyka nie jest czymś, co planujemy przetestować ani obsługiwać , chociaż nasze dystrybucje umożliwiają eksportowanie do punktu końcowego OTLP wraz z usługą Azure Monitor jednocześnie.

Czy mogę używać funkcji w wersji zapoznawczej w środowiskach produkcyjnych?

Nie zalecamy tego. Zobacz Dodatkowe warunki użytkowania dla wersji zapoznawczych platformy Microsoft Azure.

Jaka jest różnica między instrumentacją ręczną i automatyczną?

Zobacz Omówienie usługi OpenTelemetry.

Czy mogę użyć modułu zbierającego OpenTelemetry?

Niektórzy klienci używają modułu zbierającego OpenTelemetry jako alternatywy dla agenta, mimo że firma Microsoft oficjalnie nie obsługuje podejścia opartego na agencie do monitorowania aplikacji. W międzyczasie społeczność typu open source przyczyniła się do eksportera usługi Azure Monitor modułu zbierającego openTelemetry, którego niektórzy klienci używają do wysyłania danych do usługi Azure Monitor Application Insights. Nie jest to obsługiwane przez firmę Microsoft.

Jaka jest różnica między usługami OpenCensus i OpenTelemetry?

OpenCensus jest prekursorem OpenTelemetry. Firma Microsoft pomogła połączyć rozwiązania OpenTracing i OpenCensus w celu utworzenia biblioteki OpenTelemetry— jednego standardu obserwacji dla świata. Bieżący zestaw SDK języka Python zalecany w środowisku produkcyjnym dla usługi Azure Monitor jest oparty na usłudze OpenCensus. Firma Microsoft zobowiązuje się do tworzenia usługi Azure Monitor na podstawie biblioteki OpenTelemetry.

Rozwiązywanie problemów

Nie działa? Zapoznaj się ze stroną rozwiązywania problemów dla ASP.NET Core.

Pomoc techniczna

Wybierz kartę dla wybranego języka, aby odnaleźć opcje pomocy technicznej.

  • W przypadku problemów z pomoc techniczna platformy Azure otwórz bilet pomoc techniczna platformy Azure.
  • W przypadku problemów z usługą OpenTelemetry skontaktuj się bezpośrednio ze społecznością platformy .NET OpenTelemetry.
  • Aby uzyskać listę otwartych problemów związanych z eksporterem usługi Azure Monitor, zobacz stronę Problemów z usługą GitHub.

Opinie dotyczące usługi OpenTelemetry

Aby przekazać opinię: