View a markdown version of this page

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 untuk. OpenTelemetry

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

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

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

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

    • Gunakan ben --noreload dera untuk mencegah pemuatan ulang otomatis.

    • Atur variabel DJANGO_SETTINGS_MODULE lingkungan ke lokasi settings.py file 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 didukung.

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 JS di. GitHub

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

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-autoinstrumentation dan @opentelemetry/instrumentation sebagai 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:

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:

  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 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 QueryContext ih-alih Query

  • Gunakan al ExecContext ih-alih Exec

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.