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 untuk. OpenTelemetry
Topik
Kompatibilitas Java
Sinyal Aplikasi mendukung aplikasi Java, dan mendukung perpustakaan dan kerangka kerja Java yang sama seperti yang AWS dilakukan Distro OpenTelemetry . Untuk informasi selengkapnya, silakan lihat Pustaka, kerangka kerja, server aplikasi, dan JVM yang didukung
Kompatibilitas.NET
Sinyal Aplikasi mendukung pustaka dan kerangka kerjan.NET yang sama AWS seperti Distro OpenTelemetry . Untuk informasi selengkapnya, lihat Instrumentasi yang https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/blob/main/docs/internal/instrumentation-libraries.md
Sinyal Aplikasi mendukung aplikasi.NET yang berjalan pada CPU x86-64 atau ARM64, dan mendukung Linux x64, Linux ARM64, dan Microsoft Windows Server 2022 x64.
catatan
AWS Distro for Open Telemetry (ADOT) SDK untuk.NET tidak mendukung AWS SDK untuk.NET V4. Gunakan AWS SDK.NET V3 untuk dukungan Sinyal Aplikasi lengkap.
Kompatibilitas PHP
Sinyal Aplikasi mendukung aplikasi PHP dengan instrumentasi OpenTelemetry Zero Code. Tidak ada AWS Distro for Open Telemetry (ADOT) SDK yang tersedia untuk tujuan ini. Anda harus menggunakan OpenTelemetry Instrumentasi SDK standar dengan Pencarian 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 OpenTelemetry Zero Code. Tidak ada AWS Distro for Open Telemetry (ADOT) SDK yang tersedia untuk tujuan ini. Anda harus menggunakan OpenTelemetry Instrumentasi SDK standar dengan Pencarian Transaksi diaktifkan. Untuk mulai menggunakan instrumentasi kode nol di Ruby, ikuti langkah-langkah ini dari dokumen OpenTelemetry Ruby Instrumentation, instrumentasi kode nol Ruby.
Kompatibilitas Python
Sinyal Aplikasi mendukung pustaka dan kerangka kerja yang sama seperti yang AWS dilakukan Distro OpenTelemetry . Untuk informasi selengkapnya, lihat Paket yang didukung di opent
Sebelum Anda mengaktifkan Sinyal Aplikasi untuk aplikasi Python Anda, perhatikan pertimbangan berikut.
Dalam beberapa aplikasi kontainer, variabel
PYTHONPATHlingkungan yang hilang terkadang dapat menyebabkan aplikasi gagal memulai. Untuk mengatasi masalah ini, pastikan Anda menyetel variabelPYTHONPATHlingkungan 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 PYTHONPATH tidak sesuai.Untuk aplikasi Django, ada konfigurasi tambahan yang diperlukan, yang diuraikan dalam dokument asi
OpenTelemetry Python. Gunakan ben
--noreloaddera untuk mencegah pemuatan ulang otomatis.Atur variabel
DJANGO_SETTINGS_MODULElingkungan ke lokasisettings.pyfile aplikasi Django Anda. Ini memastikan bahwa OpenTelemetry dapat mengakses dan mengintegrasikan dengan benar dengan pengaturan Django Anda.
Node.js kompatibilitas
Sinyal Aplikasi mendukung Node.js pustaka dan kerangka kerja yang sama seperti yang AWS dilakukan Distro OpenTelemetry . Untuk informasi selengkapnya, lihat Instrumentasi yang https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main
Keterbatasan yang diketahui tentang Node.js ESM
AWS Distro untuk Opentelemetry Node.js mendukung dua sistem modul: ECMAScript Modules (ESM) dan CommonJS (CJS). Untuk mengaktifkan Sinyal Aplikasi, Anda menyarankan Anda menggunakan format modul CJS karena OpenTelemetry JavaScript dukungan ESM bersifat eksperimental dan sedang berlangsung. Untuk lebih jelasnya, lihat Modul ECMAScript versus Common
Untuk menentukan apakah aplikasi Anda menggunakan CJS dan bukan ESM, pastikan aplikasi Anda tidak memenuhi persyaratan untuk mengaktifkan ESM. Untuk informasi selengkapnya tentang kondisi ini, lihat Mengaktifkan
AWS Distro for Opentelemetry Node.js memberikan dukungan terbatas untuk ESM berdasarkan OpenTelemetry JavaScript dukungan eksperimental untuk ESM. Ini berarti sebagai berikut:
Node.js Versi harus 18.19.0 atau yang lebih baru.
Node.js Aplikasi yang ingin Anda instrumen harus menyertakan
@aws/aws-distro-opentelemetry-node-autoinstrumentationdan@opentelemetry/instrumentationsebagai dependensi.Node.js Aplikasi 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 Node.js ESM, kami menyediakan pengaturan yang berbeda untuk platform yang berbeda:
Amazon EX — Menyiapkan Node.js aplikasi dengan format modul ESM
Amazon ECS dengan strategi sidecar — 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 Node.js aplikasi dengan format modul ESM
GoLang kompatibilitas
Sinyal Aplikasi mendukung GoLang aplikasi dengan instrumentasi OpenTelemetry Zero Code. Tidak ada AWS Distro for Open Telemetry (ADOT) SDK yang tersedia untuk tujuan ini. Anda harus menggunakan OpenTelemetry Instrumentasi SDK standar dengan Pencarian Transaksi diaktifkan. Untuk mulai menggunakan instrumentasi kode nol di GoLang, ikuti langkah-langkah berikut dari dokumen OpenTelemetry GoLang Instrumentasi, Mem ulai dengan OpenTelemetry Go Automatic Instrumentation.
GoLang Instrumentasi pertimbangan implementasi
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 AWS SDK
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.Configobjek 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 mengkonfigurasi instrumentasi otomatis yang dapat dieksekusi, lihat Metode konfigurasi.
Instrumentasi panggilan HTTP
Panggilan HTTP dapat membagi jejak saat Konteks tidak diteruskan di antara permintaan — klien HTTP harus menggunakan alih- NewRequestWithContext() alih NewRequest() untuk memastikan layanan hilir menggunakan konteks yang sama. Ketika kedua layanan memiliki agen instrumentasi, rentang terhubung dengan ID jejak yang sama untuk memberikan visibilitas ujung ke ujung.
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() }
Instrumentasi panggilan SQL
Rentang SQL mungkin terputus dari rentang induknya, menyebabkan panggilan klien disimpulkan sebagai rentang server. Ini terjadi ketika panggilan SQL tidak menerima konteks dari penangan upstream mereka. Panggilan SQL standar seperti Query dan Exec context.Background() digunakan secara default, bukan konteks pemanggil upstream. Ganti panggilan SQL standar dengan padanan konteksnya:
-
Gunakan al
QueryContextih-alihQuery -
Gunakan al
ExecContextih-alihExec
Metode ini Meneruskan konteks permintaan hulu ke panggilan DB, mempertahankan kontinuitas pelacakan 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
A db.system tribut saat ini tidak didukung untuk panggilan SQL. Keterbatasan ini mempengaruhi CloudWatch kemampuan untuk mengidentifikasi klien database secara akurat. Akibatnya, dependensi akan ditampilkan al UnknownRemoteService ih-alih nama klien DB yang membuat kueri.
Detektor sumber daya
Instrumentasi otomatis Go saat ini tidak mendukung konfigurasi detektor sumber daya saat runtime. Kom OpenTelemetry unitas sedang mengerjakan fitur untuk mengkonfigurasi detektor sumber daya menggunakan variabel lingkungan. Cari fitur ini di pembaruan mendatang. 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, 23, dan 25 |
|
Python |
Versi Python 3.10, 3.11, 3.12, 3.13, 3.14 |
|
.NET |
.NET 8, 9, 10 dan .NET Framework 4.6.2 dan yang lebih tinggi |
|
Node.js |
Node.js versi 18, 20, 22, dan 24 |
|
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 JBoss Wildfly. Masalah ini meluas ke add-on Amazon CloudWatch Observability EKS, yang memengaruhi versi 2.3.0-eksbuild.1 melalui2.6.0-eksbuild.1. Masalah telah diperbaiki dalam rilis Java SDK v1.32.6 dan versi v3.0.0-eksbuild.1 add-on Amazon CloudWatch Observability EKS.
Jika Anda terpengaruh, tingkatkan versi Java SDK atau nonaktifkan koleksi metrik runtime Anda dengan menambahkan variabel lingkungan OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false ke aplikasi Anda.