Migrowanie z zestawu OpenCensus Python SDK i eksportera OpenCensus usługi Azure Monitor dla języka Python do usługi Azure Monitor OpenTelemetry Python Distro

Uwaga

Zestaw OPENCensus Python SDK jest przestarzały, ale firma Microsoft obsługuje go do wycofania 30 września 2024 r. Zalecamy teraz ofertę języka Python opartą na protokole OpenTelemetry i udostępniamy wskazówki dotyczące migracji.

Wykonaj następujące kroki, aby przeprowadzić migrację aplikacji języka Python do usługi Azure MonitorApplication Szczegółowe informacje OpenTelemetry Distro.

Ostrzeżenie

  • Blog OpenCensus "How to Migrate to OpenTelemetry" nie ma zastosowania do użytkowników usługi Azure Monitor.
  • Podkładka OpenCensus OpenCensus openTelemetry nie jest zalecana ani obsługiwana przez firmę Microsoft.
  • Poniżej przedstawiono jedyny plan migracji dla klientów usługi Azure Monitor.

Krok 1. Odinstalowywanie bibliotek OpenCensus

Odinstaluj wszystkie biblioteki związane z bibliotekami OpenCensus, w tym wszystkie pakiety Pypi rozpoczynające się od opencensus-*.

pip freeze | grep opencensus | xargs pip uninstall -y

Krok 2. Usuwanie pliku OpenCensus z kodu

Usuń wszystkie wystąpienia zestawu OpenCensus SDK i eksportera OpenCensus usługi Azure Monitor z kodu.

Sprawdź instrukcje importu rozpoczynające się od opencensus , aby znaleźć wszystkie integracje, eksporterów i wystąpienia interfejsu API/zestawu SDK openCensus, które należy usunąć.

Poniżej przedstawiono przykłady instrukcji importu, które należy usunąć.

from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation as aggregation_module
from opencensus.stats import measure as measure_module

from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer

from opencensus.ext.azure.log_exporter import AzureLogHandler

Krok 3. Zapoznaj się z interfejsami API/zestawami SDK języka Python openTelemetry

Poniższa dokumentacja zawiera wstępnie wymaganą wiedzę na temat interfejsów API/zestawów SDK języka Python openTelemetry.

Uwaga

Biblioteki OpenTelemetry Python i OpenCensus Python mają różne powierzchnie interfejsu API, możliwości autokolekcje i instrukcje dołączania.

Krok 4. Konfigurowanie dystrybucji OpenTelemetry usługi Azure Monitor

Postępuj zgodnie ze stroną wprowadzenie , aby dołączyć do dystrybucji OpenTelemetry usługi Azure Monitor.

Zmiany i ograniczenia

Podczas migracji z usługi OpenCensus do usługi OpenTelemetry mogą wystąpić następujące zmiany i ograniczenia.

Obsługa języka Python < 3.7

Rozwiązania do monitorowania oparte na języku Python w języku OpenTelemetry obsługują tylko język Python 3.7 i nowsze, z wyłączeniem wcześniej obsługiwanych języków Python w wersji 2.7, 3.4, 3.5 i 3.6 z biblioteki OpenCensus. Zalecamy uaktualnienie dla użytkowników korzystających ze starszych wersji języka Python, ponieważ w miarę pisania tego dokumentu te wersje osiągnęły już koniec życia. Użytkownicy, którzy nie są w stanie uaktualnić, mogą nadal korzystać z rozwiązań OpenTelemetry, ale mogą znaleźć nieoczekiwane lub powodujące niezgodność zachowanie, które nie jest obsługiwane. W każdym razie ostatnia obsługiwana wersja opencensus-ext-azure zawsze istnieje i nadal działa dla tych wersji, ale dla tego projektu nie są tworzone żadne nowe wersje.

Konfiguracje

Język OpenCensus w języku Python udostępnia niektóre opcje konfiguracji związane z kolekcją i eksportowaniem danych telemetrycznych. Te same konfiguracje i inne elementy można osiągnąć przy użyciu interfejsów API języka Python i zestawu SDK openTelemetry. Dystrybucja języka Python usługi Azure Monitor openTelemetry to bardziej jeden przystanek, który odpowiada najbardziej typowym potrzebom monitorowania aplikacji języka Python. Ponieważ dystrybucja hermetyzuje interfejsy API OpenTelemetry/SDk, niektóre konfiguracje dla bardziej nietypowych przypadków użycia mogą nie być obecnie obsługiwane w przypadku dystrybucji. Zamiast tego możesz zdecydować się na dołączanie do eksportera OpenTelemetry usługi Azure Monitor, który przy użyciu interfejsów API/zestawów SDK OpenTelemetry powinien mieć możliwość dopasowania do potrzeb monitorowania. Niektóre z tych konfiguracji obejmują:

  • Propagatory niestandardowe
  • Niestandardowe próbkatory
  • Dodawanie dodatkowych procesorów zakresu/dzienników/czytników metryk

Spójność z funkcjami platformy Azure

Aby zapewnić możliwości śledzenia rozproszonego dla aplikacji języka Python, które wywołają inne aplikacje języka Python w ramach funkcji platformy Azure, udostępniono pakiet opencensus-extension-azure-functions , aby umożliwić korzystanie z połączonego rozproszonego grafu.

Obecnie rozwiązania OpenTelemetry dla usługi Azure Monitor nie obsługują tego scenariusza. Aby obejść ten problem, można ręcznie propagować kontekst śledzenia w aplikacji usługi Azure Functions, jak pokazano w poniższym przykładzie.

from opentelemetry.context import attach, detach
from opentelemetry.trace.propagation.tracecontext import \
  TraceContextTextMapPropagator

# Context parameter is provided for the body of the function
def main(req, context):
  functions_current_context = {
    "traceparent": context.trace_context.Traceparent,
    "tracestate": context.trace_context.Tracestate
  }
  parent_context = TraceContextTextMapPropagator().extract(
      carrier=functions_current_context
  )
  token = attach(parent_context)

  ...
  # Function logic
  ...
  detach(token)

Rozszerzenia i eksporterzy

Zestaw SDK OpenCensus oferuje sposoby zbierania i eksportowania danych telemetrycznych za pośrednictwem integracji i eksporterów OpenCensus. W usłudze OpenTelemetry integracje są teraz określane jako instrumentacje, podczas gdy eksporterzy pozostali z tą samą terminologią. Instrumentacje i eksporterzy języka Python OpenTelemetry są nadzbiorem elementów udostępnionych w bibliotece OpenCensus, więc pod względem pokrycia biblioteki i funkcjonalności biblioteki OpenTelemetry są bezpośrednim uaktualnieniem. Jeśli chodzi o dystrybucję opentelemetrii usługi Azure Monitor, jest ona dostarczana z niektórych popularnych instrumentacji języka Python OpenTelemetry, więc żaden dodatkowy kod nie jest konieczny. Firma Microsoft w pełni obsługuje te instrumentacje.

Jeśli chodzi o inne instrumentacje języka Python OpenTelemetry, które nie są uwzględnione na tej liście, użytkownicy mogą nadal ręcznie instrumentować przy użyciu nich. Należy jednak pamiętać, że stabilność i zachowanie nie są gwarantowane ani obsługiwane w tych przypadkach. W związku z tym należy używać ich według własnego uznania.

Jeśli chcesz zasugerować bibliotekę instrumentacji społeczności, aby uwzględnić w naszej dystrybucji, post lub up-vote pomysł w naszej społeczności opinii. W przypadku eksporterów dystrybucja OpenTelemetry usługi Azure Monitor jest dostarczana wraz z eksporterem OpenTelemetry usługi Azure Monitor. Jeśli chcesz również użyć innych eksporterów, możesz użyć ich z dystrybucją, tak jak w tym przykładzie.

Procesory telemetrii

Procesory telemetryczne OpenCensus w języku Python to zaawansowany mechanizm, w którym użytkownicy mogą modyfikować dane telemetryczne przed wysłaniem ich do eksportera. W świecie OpenTelemetry nie ma pojęcia funkcji TelemetryProcessors, ale istnieją interfejsy API i klasy, których można użyć do replikowania tego samego zachowania.

Ustawianie nazwy roli chmury i wystąpienia roli w chmurze

Postępuj zgodnie z instrukcjami podanymi tutaj , aby ustawić nazwę roli chmury i wystąpienie roli w chmurze dla telemetrii. Dystrybucja usługi Azure Monitor OpenTelemetry automatycznie pobiera wartości ze zmiennych środowiskowych i wypełnia odpowiednie pola.

Modyfikowanie zakresów za pomocą obiektów SpanProcessor

Wkrótce.

Modyfikowanie metryk za pomocą widoków

Wkrótce.

Liczniki wydajności

Eksporter OpenCensus Python usługi Azure Monitor automatycznie zbierał metryki związane z systemem i wydajnością nazywane licznikami wydajności. Te metryki są wyświetlane w performanceCounters wystąpieniu aplikacji Szczegółowe informacje. W usłudze OpenTelemetry nie wysyłamy już tych metryk jawnie do performanceCountersusługi . Metryki związane z żądaniami przychodzącymi/wychodzącymi można znaleźć w metrykach standardowych. Jeśli chcesz, aby metryki związane z autokolektacją systemu openTelemetry miały zastosowanie, możesz użyć instrumentacji metryk systemu eksperymentalnego, współautorem społeczności języka Python openTelemetry. Ten pakiet jest eksperymentalny i nie jest oficjalnie obsługiwany przez firmę Microsoft.

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ę: