Python'da OpenTelemetry sorunlarını giderme

Bu makalede Python'da OpenTelemetry sorunlarının nasıl giderılacağı açıklanır.

Sorun giderme denetim listesi

1. Adım: Tanılama günlüğünü etkinleştirme

Microsoft Azure İzleyici Exporter, iç günlüğü için Python standart günlük kitaplığını kullanır. OpenTelemetry API'sine ve Azure İzleyici Dışarı Aktarma günlüklerine düzensiz etkinlik için veya ERROR önem düzeyi WARNING atanır. Önem INFO derecesi, düzenli veya başarılı etkinlik için kullanılır.

Varsayılan olarak, Python günlük kitaplığı önem düzeyini olarak WARNINGayarlar. Bu nedenle, bu önem derecesi ayarı altındaki günlükleri görmek için önem derecesi düzeyini değiştirmeniz gerekir. Aşağıdaki örnek kod, tüm önem derecelerinin günlüklerinin konsola ve bir dosyaya nasıl çıkış yapılacağını gösterir:

...
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)
...

2. Adım: Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme

Application Insights SDK'ları ve aracıları, alım uç noktalarımızda REST çağrıları olarak alınabilmek için telemetri gönderir. Web sunucunuzdan veya uygulama ana bilgisayarınızdan alma hizmeti uç noktalarına bağlantıyı test etmek için cURL komutlarını veya PowerShell'den ham REST isteklerini kullanın. Daha fazla bilgi için bkz. Azure İzleyici Application Insights'ta eksik uygulama telemetrisi sorunlarını giderme.

3. Adım: Yinelenen telemetriden kaçının

Yinelenen telemetri genellikle birden çok işlemci veya dışarı aktarma örneği oluşturursanız ortaya çıkar. Her telemetri sütunu (günlükler, ölçümler ve dağıtılmış izleme) için aynı anda yalnızca bir dışarı aktarıcı ve işlemci çalıştırdığınızdan emin olun.

Aşağıdaki bölümlerde yinelenen telemetriye neden olabilecek senaryolar açıklanmaktadır.

Azure İşlevleri'de yinelenen izleme günlükleri

Application Insights'ta her izleme günlüğü için bir çift girdi görürseniz, büyük olasılıkla aşağıdaki günlük izleme türlerini etkinleştirmiş olursunuz:

  • Azure İşlevleri'de yerel günlük izlemesi
  • Dağıtım azure-monitor-opentelemetry içindeki günlüğe kaydetme izlemesi

Yinelemeyi önlemek için dağıtımın günlüğünü devre dışı bırakabilir, ancak yerel günlük izlemesini Azure İşlevleri etkin durumda bırakabilirsiniz. Bunu yapmak için ortam değişkenini OTEL_LOGS_EXPORTER olarak Noneayarlayın.

"Always On" Azure İşlevleri yinelenen telemetri

Azure İşlevleri'daki Always On ayarı Açık olarak ayarlanırsa, Azure İşlevleri her çalıştırma tamamlandıktan sonra bazı işlemlerin arka planda çalışmasını sağlar. Örneğin, her seferinde çağıran configure_azure_monitor beş dakikalık bir zamanlayıcı işlevine sahip olduğunuzu varsayalım. 20 dakika sonra, aynı anda çalışan dört ölçüm dışarı aktarıcınız olabilir. Bu durum yinelenen ölçüm telemetrinizin kaynağı olabilir.

Bu durumda AlwaysOn ayarını Kapalı olarak ayarlayın veya her configure_azure_monitor çağrı arasındaki sağlayıcıları el ile kapatmayı deneyin. Her sağlayıcıyı kapatmak için, aşağıdaki kodda gösterildiği gibi her geçerli ölçüm, izleyici ve günlükçü sağlayıcısı için kapatma çağrılarını çalıştırın:

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

Azure Çalışma Kitapları ve Jupyter Not Defterleri

Azure Çalışma Kitapları ve Jupyter Not Defterleri, ihracatçı işlemlerinin arka planda çalışmasını sürdürebilir. Yinelenen telemetriyi önlemek için, daha fazla çağrı configure_azure_monitoryapmadan önce önbelleği temizleyin.

Yardım için bize ulaşın

Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.