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
- Subskrypcja platformy Azure: tworzenie bezpłatnej subskrypcji platformy Azure
- Zasób usługi Application Insights: tworzenie zasobu usługi Application Insights
- ASP.NET Core Application przy użyciu oficjalnie obsługiwanej wersji platformy .NET
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:
- Przejdź do okienka Przegląd zasobu usługi Application Insights.
- Znajdź parametry połączenia.
- 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.json
i 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:
- Kod
- Zmienna środowiskowa
- 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.
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:
- Zmniejsza nakład pracy przy włączaniu
- Obsługiwane przez firmę Microsoft
- Udostępnia funkcje specyficzne dla platformy Azure, takie jak:
- Próbkowanie zgodne z klasycznymi zestawami SDK usługi Application Insights
- Uwierzytelnianie Microsoft Entra
- Magazyn w trybie offline i automatyczne ponawianie prób
- Statystykabeat
- Metryki standardowe usługi Application Insights
- Wykrywanie metadanych zasobów w celu automatycznego wypełniania nazwy roli chmury i wystąpienia roli chmury w różnych środowiskach platformy Azure
- Metryki na żywo
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
- ✅ Ta funkcja jest dostępna dla wszystkich klientów z formalnym wsparciem.
- ⚠✔ Ta funkcja jest dostępna jako publiczna wersja zapoznawcza. Zobacz Dodatkowe warunki użytkowania dla wersji zapoznawczych platformy Microsoft Azure.
- ❌ Ta funkcja jest niedostępna lub nie ma zastosowania.
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ę:
- Wypełnij ankietę opinii klientów społeczności OpenTelemetry.
- Poinformuj firmę Microsoft o sobie, dołączając do społeczności wczesnych użytkowników openTelemetry.
- Skontaktuj się z innymi użytkownikami usługi Azure Monitor w społeczności technicznej firmy Microsoft.
- Wyślij żądanie funkcji na forum opinii platformy Azure.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla