Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Migrasi ke Python OpenTelemetry
Panduan ini membantu Anda memigrasikan aplikasi Python dari X-Ray SDK OpenTelemetry ke instrumentasi. Ini mencakup pendekatan instrumentasi otomatis dan manual, dengan contoh kode untuk skenario umum.
Bagian-bagian
Solusi instrumentasi otomatis kode nol
Dengan X-Ray SDK, Anda harus memodifikasi kode aplikasi Anda untuk melacak permintaan. OpenTelemetry menawarkan solusi instrumentasi otomatis kode nol untuk melacak permintaan. Dengan OpenTelemetry, Anda memiliki opsi untuk menggunakan solusi instrumentasi otomatis kode nol untuk melacak permintaan.
Kode nol dengan instrumentasi otomatis OpenTelemetry berbasis
-
Menggunakan AWS Distro for OpenTelemetry (ADOT) Auto-instrumentation for Python — Untuk instrumentasi otomatis untuk aplikasi Python, lihat Tracing
and Metrics with the Distro for Python Auto-Instrumentation. AWS OpenTelemetry (Opsional) Anda juga dapat mengaktifkan Sinyal CloudWatch Aplikasi saat secara otomatis menginstrumentasi aplikasi Anda AWS dengan instrumentasi otomatis ADOT Python untuk memantau kesehatan aplikasi saat ini dan melacak kinerja aplikasi jangka panjang terhadap tujuan bisnis Anda. Sinyal Aplikasi memberi Anda tampilan menyatu dan terpusat aplikasi pada aplikasi, layanan, dan dependensi Anda, serta membantu Anda memantau dan menentukan prioritas kesehatan aplikasi.
Instrumen aplikasi Anda secara manual
Anda dapat secara manual instrumen aplikasi Anda menggunakan pip
perintah.
Menelusuri inisialisasi pengaturan
Dengan ADOT Auto-instrumentasi untuk Python
Anda dapat menggunakan instrumentasi otomatis ADOT untuk Python untuk mengkonfigurasi secara otomatis untuk aplikasi Python Anda. OpenTelemetry Dengan menggunakan instrumentasi otomatis ADOT, Anda tidak perlu membuat perubahan kode manual untuk melacak permintaan yang masuk, atau untuk melacak pustaka seperti klien SDK atau HTTP. AWS Untuk informasi selengkapnya, lihat Menelusuri dan Metrik dengan AWS Distro untuk Instrumentasi Otomatis Python OpenTelemetry
Instrumentasi otomatis ADOT untuk Python mendukung:
-
X-Ray Remote Sampling melalui variabel lingkungan
export OTEL_TRACES_SAMPLER=xray
-
Propagasi konteks jejak X-Ray (diaktifkan secara default)
-
Deteksi sumber daya (deteksi sumber daya untuk lingkungan Amazon EC2, Amazon ECS, dan Amazon EKS diaktifkan secara default)
-
Instrumentasi pustaka otomatis untuk semua OpenTelemetry instrumentasi yang didukung diaktifkan secara default. Anda dapat menonaktifkan secara selektif melalui variabel
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
lingkungan. (semua diaktifkan secara default) -
Pembuatan manual Spans
Dari plug-in layanan X-Ray hingga penyedia sumber daya OpenTelemetry AWS
X-Ray SDK menyediakan plug-in yang dapat Anda tambahkan ke untuk menangkap informasi spesifik platform dari layanan yang dihosting seperti Amazon, EC2 Amazon ECS, dan Elastic Beanstalk. xray_recorder
Ini mirip dengan Penyedia Sumber Daya OpenTelemetry yang menangkap informasi sebagai atribut Sumber Daya. Ada beberapa Penyedia Sumber Daya yang tersedia untuk berbagai AWS platform.
-
Mulailah dengan menginstal paket AWS ekstensi,
pip install opentelemetry-sdk-extension-aws
-
Konfigurasikan detektor sumber daya yang diinginkan. Contoh berikut menunjukkan cara mengonfigurasi penyedia EC2 sumber daya Amazon di OpenTelemetry SDK
from opentelemetry import trace from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.extension.aws.resource.ec2 import ( AwsEc2ResourceDetector, ) from opentelemetry.sdk.resources import get_aggregated_resources provider = TracerProvider( active_span_processor=span_processor, resource=get_aggregated_resources([ AwsEc2ResourceDetector(), ])) trace.set_tracer_provider(provider)
Menelusuri permintaan yang masuk
AWS Instrumentasi SDK
Menginstrumentasi panggilan HTTP keluar melalui permintaan
Dukungan instrumentasi untuk perpustakaan lain
Anda dapat menemukan daftar lengkap instrumentasi Library yang didukung untuk OpenTelemetry Python di bawah Pustaka, kerangka kerja, server aplikasi, dan file yang didukung
Atau, Anda dapat mencari OpenTelemetry Registry untuk mengetahui apakah OpenTelemetry mendukung instrumentasi. Lihat Registry
Membuat data jejak secara manual
Anda dapat membuat segmen dan sub-segmen menggunakan xray_recorder
dalam aplikasi Python Anda. Untuk informasi selengkapnya, lihat Menginstrumentasi kode Python secara manual. Anda juga dapat menambahkan anotasi dan metadata secara manual ke data jejak.
Membuat bentang Dengan OpenTelemetry SDK
Gunakan start_as_current_span
API untuk memulai rentang dan atur untuk membuat bentang. Untuk contoh cara membuat bentang, lihat Membuat bentangSERVER
jenis yang diubah menjadi segmen X-Ray sementara yang lain diubah menjadi sub-segmen X-Ray.
from opentelemetry import trace from opentelemetry.trace import SpanKind import time tracer = trace.get_tracer("my.tracer.name") # Create a new span to track some work with tracer.start_as_current_span("parent", kind=SpanKind.SERVER) as parent_span: time.sleep(1) # Create a nested span to track nested work with tracer.start_as_current_span("child", kind=SpanKind.CLIENT) as child_span: time.sleep(2) # the nested span is closed when it's out of scope # Now the parent span is the current span again time.sleep(1) # This span is also closed when it goes out of scope
Menambahkan anotasi dan metadata ke jejak dengan SDK OpenTelemetry
X-Ray Python SDK menyediakan terpisah APIs, put_annotation
dan put_metadata
untuk menambahkan anotasi dan metadata ke jejak. Di OpenTelemetry SDK, anotasi dan metadata hanyalah atribut pada rentang, ditambahkan melalui API. set_attribute
Atribut rentang yang Anda inginkan untuk menjadi anotasi pada jejak ditambahkan di bawah kunci cadangan aws.xray.annotations
yang nilainya adalah daftar pasangan kunci-nilai anotasi. Semua atribut rentang lainnya menjadi metadata pada segmen atau sub-segmen yang dikonversi.
Selain itu, jika Anda menggunakan kolektor ADOT, Anda dapat mengonfigurasi atribut rentang mana yang harus dikonversi ke anotasi X-Ray indexed_attributes
dengan menentukan konfigurasi kolektor.
Contoh di bawah ini menunjukkan cara menambahkan anotasi dan metadata ke jejak menggunakan SDK. OpenTelemetry
with tracer.start_as_current_span("parent", kind=SpanKind.SERVER) as parent_span: parent_span.set_attribute("TransactionId", "qwerty12345") parent_span.set_attribute("AccountId", "1234567890") # This will convert the TransactionId and AccountId to be searchable X-Ray annotations parent_span.set_attribute("aws.xray.annotations", ["TransactionId", "AccountId"]) with tracer.start_as_current_span("child", kind=SpanKind.CLIENT) as child_span: # The MicroTransactionId will be converted to X-Ray metadata for the child subsegment child_span.set_attribute("MicroTransactionId", "micro12345")
Instrumentasi Lambda
Untuk memantau fungsi lambda Anda pada X-Ray, Anda mengaktifkan X-Ray dan menambahkan izin yang sesuai ke peran pemanggilan fungsi. Selain itu, jika Anda melacak permintaan hilir dari fungsi Anda, Anda akan menginstrumentasi kode dengan X-Ray Python SDK.
Dengan OpenTelemetry X-Ray, disarankan untuk menggunakan lapisan lambda Sinyal CloudWatch Aplikasi dengan Sinyal Aplikasi dimatikan. Ini akan mengotomatiskan fungsi Anda dan akan menghasilkan rentang untuk pemanggilan fungsi dan permintaan hilir apa pun dari fungsi Anda. Selain melacak, jika Anda tertarik menggunakan Sinyal Aplikasi untuk memantau kesehatan fungsi Anda, lihat Mengaktifkan aplikasi Anda di Lambda.
-
Temukan ARN layer Lambda yang diperlukan untuk fungsi Anda dari AWS Lambda Layer dan tambahkan. OpenTelemetry ARNs
-
Tetapkan variabel lingkungan berikut untuk fungsi Anda.
-
AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-instrument
— Ini memuat instrumentasi otomatis untuk fungsi tersebut -
OTEL_AWS_APPLICATION_SIGNALS_ENABLED=false
— Ini akan menonaktifkan pemantauan Sinyal Aplikasi
-
Membuat bentang secara manual dengan instrumentasi Lambda
Selain itu, Anda dapat menghasilkan rentang kustom dalam fungsi Anda untuk melacak pekerjaan. Anda dapat melakukannya dengan hanya menggunakan opentelemetry-api
paket dalam hubungannya dengan Application Signals lambda layer auto-instrumentation.
-
Sertakan
opentelemetry-api
sebagai dependensi dalam fungsi Anda -
Cuplikan kode berikut adalah contoh untuk menghasilkan rentang kustom
from opentelemetry import trace # Get the tracer (auto‑configured by the Application Signals layer) tracer = trace.get_tracer(__name__) def handler(event, context): # This span is a child of the layer's root span with tracer.start_as_current_span("my-custom-span") as span: span.set_attribute("key1", "value1") span.add_event("custom-event", {"detail": "something happened"}) # Any logic you want to trace result = some_internal_logic() return { "statusCode": 200, "body": result }