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 Szczegółowe informacje. 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" w artykule OpenTelemetry FAQ (Często zadawane pytania dotyczące biblioteki OpenTelemetry w usłudze Azure Monitor).

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.

Rozpocznij

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

Wymagania wstępne

Instalowanie biblioteki klienta

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

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

Włączanie Szczegółowe informacje aplikacji usługi Azure Monitor

Aby włączyć Szczegółowe informacje aplikacji usługi Azure Monitor, należy wprowadzić drobne modyfikacje aplikacji i ustawić ciąg "Połączenie ion". Ciąg Połączenie ion informuje 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 ciągu Połączenie ion z zasobu usługi Application Szczegółowe informacje

Napiwek

Jeśli jeszcze go nie masz, możesz teraz utworzyć zasób Szczegółowe informacje aplikacji. W tym przypadku zalecamy utworzenie nowej aplikacji Szczegółowe informacje zasobu w porównaniu z użyciem istniejącego zasobu.

Aby skopiować unikatowy ciąg Połączenie ion:

Zrzut ekranu przedstawiający przegląd Szczegółowe informacje aplikacji i parametry połączenia.

  1. Przejdź do okienka Przegląd zasobu Application Szczegółowe informacje.
  2. Znajdź ciąg Połączenie ion.
  3. Umieść kursor na parametry połączenia i wybierz ikonę Kopiuj do schowka.

Wklej ciąg Połączenie ion w środowisku

Aby wkleić ciąg Połączenie ion, wybierz elementy z następujących opcji:

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.1.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 Połączenie ion String Configuration (Konfiguracja ciągu Połączenie ion), aby zapoznać się z przykładem ustawienia ciągu Połączenie ion 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 Szczegółowe informacje aplikacji w witrynie Azure Portal. Wyświetlenie danych w portalu może potrwać kilka minut.

Zrzut ekranu przedstawiający kartę Przegląd Szczegółowe informacje aplikacji z wyróżnionymi żądaniami serwera i czasem odpowiedzi serwera.

Aplikacja Szczegółowe informacje 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 aplikacji Szczegółowe informacje, musisz ustawić nazwy ról w chmurze, aby reprezentować je prawidłowo na mapie aplikacji.

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

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 OpenTelemetry są bardziej wydajne na dużą skalę niż ich poprzedniki, zestawy SDK aplikacji Szczegółowe informacje.

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 Szczegółowe informacje aplikacji. 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 Szczegółowe informacje?

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

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 itp., zalecamy użycie eksportera OpenTelemetry usługi Azure Monitor platformy .NET: 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
Wykrywanie kontekstu zasobów dla maszyn wirtualnych/zestawu skalowania maszyn wirtualnych i usługi App Service
Wykrywanie kontekstu zasobów dla usługi AKS i funkcji
Filtrowanie zakresu testowania dostępności
Autopopulacji identyfikatora użytkownika, uwierzytelnionego identyfikatora użytkownika i adresu IP użytkownika
Ręcznie przesłoń/ustaw nazwę operacji, identyfikator użytkownika lub uwierzytelniony identyfikator użytkownika
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życie zestawu SDK javaScript usługi Application Szczegółowe informacje.

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 istnieje kilka lat od zestawu SDK przeglądarki, który jest realną alternatywą dla zestawu SDK języka JavaScript usługi Application Szczegółowe informacje.

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 Szczegółowe informacje. Zestaw SDK nie definiuje ogólnych zdarzeń klienta.

Czy działa aplikacja Szczegółowe informacje obok agentów konkurencji, takich jak AppDynamics, DataDog i NewRelic obsługiwane?

L.p. 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ść 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 Szczegółowe informacje. 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ę: