Aracılığıyla paylaş


Python için Azure İzleyici Opentelemetry Distro istemci kitaplığı - sürüm 1.1.1

Opentelemetry Python'ın Azure İzleyici Dağıtımı, bir Opentelemetry Azure İzleyici izleme çözümü için kullanılabilen birden çok yüklenebilir bileşen sağlar. Python uygulamalarınızı azure izleyicisi dışarı aktarmaları aracılığıyla telemetriyi yakalamak ve Azure İzleyici'ye raporlamak için izlemenize olanak tanır.

Bu dağıtım aşağıdaki kitaplıkları otomatik olarak yükler:

Resmi olarak desteklenen izlemeler

OpenTelemetry izlemeleri, temel alınan izleme kitaplıklarından gönderilen isteklerin otomatik olarak toplanmasına olanak sağlar. Aşağıda, Azure İzleyici dağıtımıyla birlikte gelen OpenTelemetry izlemelerinin listesi yer alır. Bu izlemeler varsayılan olarak etkindir. Bu izlemeleri geri çevirme hakkında bilgi için aşağıdaki Kullanım bölümüne bakın.

İzleme Desteklenen kitaplık Adı Desteklenen sürümler
Azure Core İzleme OpenTelemetry azure_sdk
OpenTelemetry Django Instrumentation Django Bağlantı
OpenTelemetry FastApi İzleme fastapi Bağlantı
OpenTelemetry Flask Instrumentation Şişe Bağlantı
OpenTelemetry Psycopg2 İzleme psycopg2 Bağlantı
OpenTelemetry İstekleri İzleme istekler Bağlantı
OpenTelemetry UrlLib Instrumentation urllib Tümü
OpenTelemetry UrlLib3 Instrumentation urllib3 Bağlantı

Başka bir OpenTelemetry izlemesi için destek eklemek istiyorsanız lütfen bir özellik isteği gönderin. Bu arada, OpenTelemetry izlemesini kodunuzda kendi API'leri (örneğin instrument()) aracılığıyla el ile kullanabilirsiniz. Bir örnek için buna bakın.

Önemli kavramlar

Bu paket, telemetri verilerinin toplanmasına ve Azure İzleyici'ye gönderilmesine olanak tanımak için bir dizi OpenTelemetry ve Azure İzleyici bileşeni paketlemektedir. EL İle izleme için işlevini kullanın configure_azure_monitor . OTOMATIK izleme henüz desteklenmiyor.

Bunu gerçekleştirmenin ana bileşenleri Azure İzleyici OpenTelemetry dışarı aktarmalarıdır . İhracatçıları ve API'lerini doğrudan bu paket üzerinden kullanabileceksiniz. OpenTelemetry ve Azure İzleyici bileşenlerinin telemetri toplamayı ve dışarı aktarmayı etkinleştirmede nasıl çalıştığını anlamak için lütfen dışarı aktarma belgelerine gidin.

Şu anda OpenTelemetry'de kullanılabilen tüm izlemeler beta durumundadır, yani kararlı değildir ve gelecekte hataya neden olan değişiklikler olabilir. Bunları daha kararlı bir duruma göndermek için çalışmalar yapılmaktadır.

Başlarken

Önkoşullar

Bu paketi kullanmak için aşağıdakilere sahip olmanız gerekir:

Paketi yükleme

Pip ile Azure İzleyici Opentelemetry Distro'sını yükleyin:

pip install azure-monitor-opentelemetry

Kullanım

Azure İzleyici'ye uygulamanız için izleme ayarlamak için kullanabilirsiniz configure_azure_monitor . configure_azure_monitor aşağıdaki isteğe bağlı bağımsız değişkenleri destekler. Tüm geçiş parametreleri ilgili ortam değişkenlerine göre önceliklidir.

Parametre Açıklama Ortam Değişkeni
connection_string Application Insights kaynağınız için bağlantı dizesi. bağlantı dizesi açıkça geçirilmemesi durumunda ortam değişkeninden APPLICATIONINSIGHTS_CONNECTION_STRING otomatik olarak doldurulur. APPLICATIONINSIGHTS_CONNECTION_STRING
logger_name Altında telemetrinin toplandığı Python günlükçüsünün adı. N/A
instrumentation_options Hangi izlemelerin etkinleştirileceğini veya devre dışı bırakıldığını belirleyen iç içe yerleştirilmiş sözlük. İzlemeler , Kitaplık Adları ile adlandırılır. Örneğin, {"azure_sdk": {"enabled": False}, "flask": {"enabled": False}, "django": {"enabled": True}} Azure Core İzleme'yi ve Flask izlemesini devre dışı bırakır ancak Django ve diğer varsayılan izlemeleri etkin bırakır. Aşağıda OTEL_PYTHON_DISABLED_INSTRUMENTATIONS açıklanan ortam değişkeni, izlemeleri devre dışı bırakmak için de kullanılabilir. N/A

Şunun gibi OpenTelemetry ortam değişkenleriyle daha fazla yapılandırma yapabilirsiniz: | Ortam Değişkeni | Açıklama | |-------------|----------------------| | OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES | Uygulamanızla ilişkili OpenTelemetry kaynağını belirtir. | | OTEL_LOGS_EXPORTER | olarak ayarlanırsa None, günlük telemetrisinin toplanmasını ve dışarı aktarılmasını devre dışı bırakır. | | OTEL_METRICS_EXPORTER | olarak ayarlanırsa None, ölçüm telemetrisinin toplanmasını ve dışarı aktarılmasını devre dışı bırakır. | | OTEL_TRACES_EXPORTER | olarak ayarlanırsa None, dağıtılmış izleme telemetrisinin toplanmasını ve dışarı aktarılmasını devre dışı bırakır. | | OTEL_BLRP_SCHEDULE_DELAY | Günlüğe kaydetme dışarı aktarma aralığını milisaniye cinsinden belirtir. Varsayılan değer 5000'tir. | | OTEL_BSP_SCHEDULE_DELAY | Dağıtılmış izleme dışarı aktarma aralığını milisaniye cinsinden belirtir. Varsayılan değer 5000'tir. | | OTEL_TRACES_SAMPLER_ARG | Örneklenecek dağıtılmış izleme telemetrisinin oranını belirtir. Kabul edilen değerler [0,1] aralığındadır. Varsayılan değer 1.0'dır; başka bir deyişle telemetri örnekleme yapılmaz. | | OTEL_PYTHON_DISABLED_INSTRUMENTATIONS | Desteklenen izlemelerden hangilerinin devre dışı bırakılması gerekir belirtir. Devre dışı bırakılan izlemeler öğesinin configure_azure_monitorbir parçası olarak izlenmez. Ancak, bunlar doğrudan el ile izlenebilir instrument() . Küçük harf kitaplık adlarının virgülle ayrılmış bir listesini kabul eder. Örneğin, Psycopg2 ve FastAPI izlemelerini devre dışı bırakmak için olarak ayarlayın "psycopg2,fastapi" . Varsayılan olarak boş bir liste kullanılır ve desteklenen tüm izlemeler etkinleştirilir. | | OTEL_EXPERIMENTAL_RESOURCE_DETECTORS | Kaynak Öznitelikleri oluşturmak için kullanılacak Kaynak Algılayıcılarını belirtmek için kullanılan deneysel bir OpenTelemetry ortam değişkeni. Bu deneysel bir özelliktir ve bu değişkenin adı ve davranışı geriye dönük olmayan uyumlu bir şekilde değişebilir. Azure App Service ve Azure VM için Azure Kaynak Algılayıcıları'nı etkinleştirmek için varsayılan olarak "azure_app_service,azure_vm" kullanılır. Belirli kaynak algılayıcılarını eklemek veya kaldırmak için ortam değişkenini uygun şekilde ayarlayın. Daha fazla bilgi için OpenTelemetry Python Kaynak Algılayıcısı Belgelerine bakın . |

Azure İzleyici OpenTelemetry Exporter yapılandırmaları

Azure İzleyici OpenTelemetry dışarı aktarma yapılandırma parametrelerini doğrudan içine configure_azure_monitorgeçirebilirsiniz. Dışarı aktarmayla ilgili ek yapılandırmaya buradan göz atın.

...
configure_azure_monitor(
   connection_string="<your-connection-string>",
   disable_offline_storage=True,
)
...

Örnekler

Yukarıdaki yapılandırma seçeneklerinin nasıl kullanılabilmesini göstermek için burada örnekler mevcuttur.

Azure İşlevleri'de izleme

bağıntıyı izleme

Azure İşlevleri'de barındırılan Python uygulamanıza gelen izlenen gelen istekler, içinde izlenen telemetri verileriyle otomatik olarak ilişkilendirilmeyecektir. aşağıda gösterildiği gibi doğrudan ayıklayarak izleme bağıntısını TraceContext el ile elde edebilirsiniz:


import azure.functions as func

from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.propagate import extract

# Configure Azure monitor collection telemetry pipeline
configure_azure_monitor()

def main(req: func.HttpRequest, context) -> func.HttpResponse:
   ...
   # Store current TraceContext in dictionary format
   carrier = {
      "traceparent": context.trace_context.Traceparent,
      "tracestate": context.trace_context.Tracestate,
   }
   tracer = trace.get_tracer(__name__)
   # Start a span using the current context
   with tracer.start_as_current_span(
      "http_trigger_span",
      context=extract(carrier),
   ):
      ...

Günlüğe kaydetme sorunları

Azure İşlevleri çalışanı, azure İzleyici SDK'sını (çağrısıconfigure_azure_monitor()) kullanmadan günlüğe kaydetme telemetrisinin kendisini gönderir. Bu, günlük telemetrisi gönderirken yinelenen telemetri girdileriyle karşılaşmanıza neden olur. Müşterilere önerimiz, Azure İşlevleri çalışanı tarafından sağlanan yerleşik telemetriden çok daha zengin telemetri ve özelliklere izin verdiği için yalnızca SDK'nın kullanılmasıdır. Günlükçünüzün işleyicileri listesini temizleyerek Azure İşlevleri telemetri günlükçüsünün kapatılmasını sağlayabilirsiniz.

...
root_logger = logging.getLogger()
for handler in root_logger.handlers[:]:
    root_logger.removeHandler(handler)
...

Yukarıdaki günlükçülerin veya çağrının ayarlanmasından ÖNCE çağrısı configure_azure_monitor() yaptığınızdan emin olun.

Ayrıca Azure İşlevleri yapılandırması aracılığıyla günlüğe kaydetmeyi devre dışı bırakabilirsiniz.

v2.x+

...
{
  "logging": {
    ...
    "logLevel": {
      "default": "None",
      ...
    }
  }
}
...

v1.x

...
{
  "logger": {
    "categoryFilter": {
      "defaultLevel": "None",
      ...
    }
  }
}
...

Sorun giderme

Dışarı aktarma , Azure Core'da tanımlanan özel durumları oluşturur.

Sonraki adımlar

Daha fazla bilgi için belgelere göz atın.

Katkıda bulunma

Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için bkz. https://cla.microsoft.com.

Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.

Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları SSS bölümüne bakın veya ek sorularınız veya yorumlarınızla iletişime geçin opencode@microsoft.com .

Diğer belgeler