Sistem yang didukung - Amazon CloudWatch

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

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, dan. JVMs

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. Instrumentasi otomatis tersedia untuk sejumlah pustaka PHP yang umum digunakan. Untuk informasi selengkapnya, lihat OpenTelemetry registri.

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. Untuk daftar pustaka instrumentasi yang dirilis, lihat Registri.

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 variabel PYTHONPATH 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 PYTHONPATH tidak sesuai.

  • Untuk aplikasi Django, ada konfigurasi tambahan yang diperlukan, yang diuraikan dalam dokumentasi Python OpenTelemetry .

    • Gunakan --noreload bendera untuk mencegah pemuatan ulang otomatis.

    • Tetapkan variabel DJANGO_SETTINGS_MODULE lingkungan ke lokasi settings.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 di. GitHub

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 dalam dokumentasi Node.js.

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:

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 Automatic Instrumentation.

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:

  1. Instal ketergantungan yang diperlukan:

    go get go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws
  2. Tambahkan baris berikut ke aplikasi:

    otelaws.AppendMiddlewares(&cfg.APIOptions)
  3. 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-alih Query

  • Gunakan ExecContext alih-alih Exec

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