Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Sistem yang didukung
Sinyal Aplikasi didukung dan diuji di Amazon EKS, Kubernetes asli, Amazon ECS, dan Amazon. EC2 Petunjuk untuk mengaktifkan Sinyal Aplikasi di Amazon EC2 harus berfungsi pada platform apa pun yang mendukung CloudWatch agen dan AWS Distro. OpenTelemetry
Topik
Kompatibilitas Java
Application Signals mendukung aplikasi Java, dan mendukung pustaka dan kerangka kerja Java yang sama seperti yang dilakukan AWS Distro. OpenTelemetry Untuk informasi selengkapnya, lihat Pustaka, kerangka kerja, server aplikasi yang didukung,
Kompatibilitas .NET
Application Signals mendukung pustaka dan kerangka kerja .NET yang sama seperti yang dilakukan AWS Distro. OpenTelemetry Untuk informasi selengkapnya, lihat Instrumentasi yang didukung
Application Signals mendukung aplikasi.NET yang berjalan pada x86-64 atau ARM64 CPUs, dan mendukung Linux x64, Linux, ARM64 dan Microsoft Windows Server 2022 x64.
Kompatibilitas PHP
Sinyal Aplikasi mendukung aplikasi PHP dengan instrumentasi Kode OpenTelemetry Nol. Tidak ada AWS Distro untuk Open Telemetry (ADOT) SDK yang tersedia untuk tujuan ini. Anda harus menggunakan SDK OpenTelemetry Instrumentasi standar dengan Penelusuran Transaksi diaktifkan. Untuk mulai menggunakan instrumentasi kode nol di PHP, ikuti langkah-langkah ini dari dokumen Instrumentasi OpenTelemetry PHP, instrumentasi kode nol PHP
Kompatibilitas Ruby
Sinyal Aplikasi mendukung aplikasi Ruby dengan instrumentasi Kode OpenTelemetry Nol. Tidak ada AWS Distro untuk Open Telemetry (ADOT) SDK yang tersedia untuk tujuan ini. Anda harus menggunakan SDK OpenTelemetry Instrumentasi standar dengan Penelusuran Transaksi diaktifkan. Untuk mulai menggunakan instrumentasi kode nol di Ruby, ikuti langkah-langkah berikut dari dokumen Instrumentasi OpenTelemetry Ruby, instrumentasi kode nol Ruby.
Kompatibilitas Python
Sinyal Aplikasi mendukung pustaka dan kerangka kerja yang sama seperti yang dilakukan oleh AWS Distro. OpenTelemetry Untuk informasi selengkapnya, lihat Paket yang didukung di opentelemetry-python-contrib
Sebelum Anda mengaktifkan Sinyal Aplikasi untuk aplikasi Python Anda, perhatikan pertimbangan berikut.
Dalam beberapa aplikasi kontainer, variabel
PYTHONPATH
lingkungan yang hilang terkadang dapat menyebabkan aplikasi gagal memulai. Untuk mengatasi hal ini, pastikan Anda menyetel variabelPYTHONPATH
lingkungan ke lokasi direktori kerja aplikasi Anda. Ini karena masalah yang diketahui dengan OpenTelemetry instrumentasi otomatis. Untuk informasi selengkapnya tentang masalah ini, lihat Pengaturan autoinstrumentasi Python dari PYTHONPATHtidak sesuai. -
Gunakan
--noreload
bendera untuk mencegah pemuatan ulang otomatis.Tetapkan variabel
DJANGO_SETTINGS_MODULE
lingkungan ke lokasisettings.py
berkas aplikasi Django Anda. Ini memastikan bahwa OpenTelemetry dapat mengakses dan mengintegrasikan dengan benar dengan pengaturan Django Anda.
Kompatibilitas Node.js
Application Signals mendukung pustaka dan kerangka kerja Node.js yang sama seperti yang dilakukan oleh AWS Distro. OpenTelemetry Untuk informasi selengkapnya, lihat Instrumentasi yang didukung
Keterbatasan yang diketahui tentang Node.js dengan ESM
AWS Distro untuk Opentelemetry Node.js mendukung dua sistem modul: ECMAScript Modul (ESM) dan CommonJS (CJS). Untuk mengaktifkan Sinyal Aplikasi, kami menyarankan Anda menggunakan format modul CJS karena OpenTelemetry JavaScript dukungan ESM bersifat eksperimental dan pekerjaan sedang berlangsung. Untuk detail selengkapnya, lihat ECMAScript Modul vs CommonJS
Untuk menentukan apakah aplikasi Anda menggunakan CJS dan bukan ESM, pastikan bahwa aplikasi Anda tidak memenuhi persyaratan untuk mengaktifkan ESM. Untuk informasi selengkapnya tentang kondisi ini, lihat Mengaktifkan
AWS Distro untuk Opentelemetry Node.js menyediakan dukungan terbatas untuk ESM berdasarkan dukungan eksperimental untuk ESM OpenTelemetry JavaScript. Ini berarti sebagai berikut:
Versi Node.js harus 18.19.0 atau yang lebih baru.
Aplikasi Node.js yang ingin Anda instrumen harus menyertakan
@aws/aws-distro-opentelemetry-node-autoinstrumentation
dan@opentelemetry/instrumentation
sebagai dependensi.Aplikasi Node.js yang ingin Anda instrumen harus dimulai dengan opsi node berikut:
NODE_OPTIONS=' --import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs'
Untuk mengaktifkan Sinyal Aplikasi dengan format modul ESM Node.js, kami menyediakan pengaturan yang berbeda untuk platform yang berbeda:
Amazon EKS — Menyiapkan aplikasi Node.js dengan format modul ESM
Amazon ECS dengan strategi sespan - Setting up a Node.js application with the ESM module format
Amazon ECS dengan strategi daemon - Setting up a Node.js application with the ESM module format
Amazon ECS dengan AWS CDK
Amazon EC2 — Setting up a Node.js application with the ESM module format
Kubernetes — Menyiapkan aplikasi Node.js dengan format modul ESM
GoLang kompatibilitas
Sinyal Aplikasi mendukung GoLang aplikasi dengan instrumentasi Kode OpenTelemetry Nol. Tidak ada AWS Distro untuk Open Telemetry (ADOT) SDK yang tersedia untuk tujuan ini. Anda harus menggunakan SDK OpenTelemetry Instrumentasi standar dengan Penelusuran Transaksi diaktifkan. Untuk mulai menggunakan instrumentasi kode nol GoLang, ikuti langkah-langkah berikut dari dokumen OpenTelemetry GoLang Instrumentasi, Memulai dengan OpenTelemetry Go
Pertimbangan implementasi instrumentasi GoLang
Pelajari tentang detail implementasi penting untuk menggunakan GoLang instrumentasi. Panduan ini menjelaskan cara menerapkan propagasi konteks eksplisit dalam GoLang aplikasi dan mengatur Sinyal Aplikasi. Menerapkan GoLang instrumentasi dengan benar membantu Anda melacak dan menganalisis kinerja aplikasi Anda secara efektif.
Instrumentasi SDK AWS
Pustaka instrumentasi otomatis Golang tidak mendukung instrumentasi AWS SDK di luar kotak. Anda harus menggunakan instrumentasi otelaws
perpustakaan bersama dengan agen instrumentasi otomatis:
-
Instal ketergantungan yang diperlukan:
go get go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws
-
Tambahkan baris berikut ke aplikasi:
otelaws.AppendMiddlewares(&cfg.APIOptions)
-
Buat AWS klien berikutnya dengan
aws.Config
objek sebelumnya:s3Client := s3.NewFromConfig(cfg)
Contoh berikut akan menghasilkan rentang untuk AWS panggilan dan terintegrasi dengan instrumentasi otomatis.
func handleRequest(ctx context.Context) error { cfg, err := config.LoadDefaultConfig(ctx) if err != nil { return err } // Add OpenTelemetry instrumentation middleware to the AWS config otelaws.AppendMiddlewares(&cfg.APIOptions) // Create S3 client with the instrumented config s3Client := s3.NewFromConfig(cfg) // Now any operations with this client will be traced // with the context from the upstream call _, err = s3Client.ListBuckets(ctx, &s3.ListBucketsInput{}) return err }
Untuk informasi tentang mengonfigurasi executable instrumentasi otomatis, lihat Metode konfigurasi.
Instrumentasi panggilan HTTP
Panggilan HTTP dapat membagi jejak saat Konteks tidak diteruskan di antara permintaan — klien HTTP harus menggunakan NewRequestWithContext()
alih-alih NewRequest()
untuk memastikan layanan hilir menggunakan konteks yang sama. Ketika kedua layanan memiliki agen instrumentasi, bentang terhubung dengan ID jejak yang sama untuk memberikan end-to-end visibilitas.
func makeDownstreamCall(ctx context.Context, url string) ([]byte, error) { client := &http.Client{} // Create request with context from the upstream call req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) if err != nil { return nil, err } // Execute the request resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() }
Menginstrumentasi panggilan SQL
Rentang SQL dapat terputus dari rentang induknya, menyebabkan panggilan klien disimpulkan sebagai rentang server. Ini terjadi ketika panggilan SQL tidak menerima konteks dari penangan hulu mereka. Panggilan SQL standar suka Query
dan Exec
gunakan secara context.Background()
default, bukan konteks pemanggil upstream. Ganti panggilan SQL standar dengan padanan konteks-sadar mereka:
-
Gunakan
QueryContext
alih-alihQuery
-
Gunakan
ExecContext
alih-alihExec
Metode ini Lulus konteks permintaan upstream ke panggilan DB, mempertahankan kontinuitas jejak yang tepat.
func queryDatabase(ctx context.Context, db *sql.DB, userID string) (*sql.Rows, error) { // This breaks the trace context // row := db.Query("SELECT name FROM users WHERE id = $1", userID) // This passes the context from the upstream call for trace continuity rows, err := db.QueryContext(ctx, "SELECT name FROM users WHERE id = $1", userID) return rows, error }
catatan
db.system
Atribut saat ini tidak didukung untuk panggilan SQL. Keterbatasan ini mempengaruhi CloudWatch kemampuan untuk mengidentifikasi klien database secara akurat. Akibatnya, dependensi akan ditampilkan UnknownRemoteServicealih-alih nama klien DB yang membuat kueri.
Detektor sumber daya
Instrumentasi otomatis Go saat ini tidak mendukung konfigurasi detektor sumber daya saat runtime. OpenTelemetry Komunitas sedang mengerjakan fitur untuk mengonfigurasi detektor sumber daya menggunakan variabel lingkungan. Cari fitur ini di pembaruan masa depan. Sementara itu, Anda dapat menggunakan CloudWatch Agen dengan instrumentasi otomatis untuk secara otomatis menghasilkan atribut sumber daya host.
Matriks dukungan versi runtime
Bahasa | Versi waktu aktif |
---|---|
Java |
JVM versi 8, 11, 17, 21, dan 23 |
Python |
Python versi 3.9 dan lebih tinggi didukung |
.NET |
Rilis 1.6.0 dan di bawahnya mendukung .NET 6, 8, dan .NET Framework 4.6.2 dan yang lebih tinggi Rilis 1.7.0 dan yang lebih tinggi mendukung .NET 8, 9, dan .NET Framework 4.6.2 dan yang lebih tinggi |
Node.js |
Node.js versi 14, 16, 18, 20, dan 22 |
PHP |
PHP versi 8.0 dan lebih tinggi |
Ruby |
CRuby >= 3.1, JRuby >= 9.3.2.0, atau> = 22.1 TruffleRuby |
GoLang |
Golang versi 1.18 dan lebih tinggi |
Masalah yang diketahui
Koleksi metrik runtime dalam rilis Java SDK v1.32.5 diketahui tidak berfungsi dengan aplikasi yang menggunakan Wildfly. JBoss Masalah ini meluas ke add-on Amazon CloudWatch Observability EKS, memengaruhi versi melalui. 2.3.0-eksbuild.1
2.6.0-eksbuild.1
Masalah telah diperbaiki dalam rilis Java SDK v1.32.6
dan versi add-on Amazon CloudWatch Observability EKS. v3.0.0-eksbuild.1
Jika Anda terpengaruh, upgrade versi Java SDK atau nonaktifkan koleksi metrik runtime Anda dengan menambahkan variabel OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false
lingkungan ke aplikasi Anda.