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 dystrybucji OpenTelemetry usługi Azure Monitor Application Insights.
Ostrzeżenie
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.
- Dokumentacja języka Python OpenTelemetry
- Dokumentacja dystrybucji usługi Azure Monitor dotycząca konfiguracji i telemetrii
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ść za pomocą usługi Azure Functions
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 usługi Application Insights. W usłudze OpenTelemetry nie wysyłamy już tych metryk jawnie do performanceCounters
usł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.
Pomoc techniczna
Aby przejrzeć kroki rozwiązywania problemów, opcje pomocy technicznej lub przekazać opinię na temat funkcji OpenTelemetry, zobacz Rozwiązywanie problemów, pomoc techniczna i opinie dotyczące usługi Azure Monitor Application Insights.