Rozwiązywanie problemów z opentelemetrią w języku Python

W tym artykule omówiono sposób rozwiązywania problemów z usługą OpenTelemetry w języku Python.

Lista kontrolna rozwiązywania problemów

Krok 1. Włączanie rejestrowania diagnostycznego

Eksporter usługi Microsoft Azure Monitor używa standardowej biblioteki rejestrowania języka Python do rejestrowania wewnętrznego. Dzienniki interfejsu API OpenTelemetry i eksportera usługi Azure Monitor mają przypisany poziom ważności lub ERROR dla nieregularnych WARNING działań. Poziom INFO ważności jest używany do zwykłego lub pomyślnego działania.

Domyślnie biblioteka rejestrowania języka Python ustawia poziom ważności na WARNING. W związku z tym należy zmienić poziom ważności, aby wyświetlić dzienniki w ramach tego ustawienia ważności. Poniższy przykładowy kod przedstawia sposób wyprowadzania dzienników wszystkich poziomów ważności do konsoli i pliku:

...
import logging

logging.basicConfig(format = "%(asctime)s:%(levelname)s:%(message)s", level = logging.DEBUG)

logger = logging.getLogger(__name__)
file = logging.FileHandler("example.log")
stream = logging.StreamHandler()
logger.addHandler(file)
logger.addHandler(stream)
...

Krok 2. Testowanie łączności między hostem aplikacji a usługą pozyskiwania

Zestawy SDK usługi Application Insights i agenci wysyłają dane telemetryczne w celu pozyskiwania ich jako wywołań REST w naszych punktach końcowych pozyskiwania. Aby przetestować łączność z serwera internetowego lub komputera hosta aplikacji z punktami końcowymi usługi pozyskiwania, użyj poleceń cURL lub nieprzetworzonych żądań REST z programu PowerShell. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z brakującymi danymi telemetrycznymi aplikacji w usłudze Azure Monitor Application Insights.

Krok 3. Unikanie zduplikowanych danych telemetrycznych

Zduplikowane dane telemetryczne są często spowodowane tworzeniem wielu wystąpień procesorów lub eksporterów. Upewnij się, że uruchamiasz jednocześnie tylko jednego eksportera i procesora dla każdego filaru telemetrii (dzienniki, metryki i śledzenie rozproszone).

W poniższych sekcjach opisano scenariusze, które mogą powodować zduplikowane dane telemetryczne.

Zduplikowane dzienniki śledzenia w Azure Functions

Jeśli zobaczysz parę wpisów dla każdego dziennika śledzenia w usłudze Application Insights, prawdopodobnie włączono następujące typy instrumentacji rejestrowania:

  • Instrumentacja rejestrowania natywnego w Azure Functions
  • Instrumentacja rejestrowania azure-monitor-opentelemetry w ramach dystrybucji

Aby zapobiec duplikowaniu, można wyłączyć rejestrowanie dystrybucji, ale pozostawić instrumentację rejestrowania natywnego w Azure Functions włączone. W tym celu ustaw zmienną środowiskową OTEL_LOGS_EXPORTER na None.

Zduplikowane dane telemetryczne w Azure Functions "Zawsze włączone"

Jeśli ustawienie Zawsze włączone w Azure Functions ma wartość Włączone, Azure Functions utrzymuje niektóre procesy uruchomione w tle po zakończeniu każdego uruchomienia. Załóżmy na przykład, że masz pięć minut funkcji czasomierza, która wywołuje configure_azure_monitor za każdym razem. Po 20 minutach możesz mieć czterech eksporterów metryk działających w tym samym czasie. Taka sytuacja może być źródłem danych telemetrycznych zduplikowanych metryk.

W takiej sytuacji ustaw ustawienie Zawsze włączone naWyłączone lub spróbuj ręcznie zamknąć dostawców między każdym configure_azure_monitor wywołaniem. Aby zamknąć każdego dostawcę, uruchom wywołania zamknięcia dla każdego bieżącego miernika, śledzenia i dostawcy rejestratora, jak pokazano w następującym kodzie:

get_meter_provider().shutdown()
get_tracer_provider().shutdown()
get_logger_provider().shutdown()

Skoroszyty platformy Azure i notesy Jupyter Notebook

Skoroszyty platformy Azure i notesy Jupyter Notebook mogą utrzymywać procesy eksportera uruchomione w tle. Aby zapobiec zduplikowanym telemetrii, wyczyść pamięć podręczną przed wykonaniem większej liczby wywołań do obiektu configure_azure_monitor.

Skontaktuj się z nami, aby uzyskać pomoc

Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii platformy Azure.