View a markdown version of this page

Melakukan pemecahan masalah instalasi yang terjadi pada Sinyal Aplikasi Anda - Amazon CloudWatch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Melakukan pemecahan masalah instalasi yang terjadi pada Sinyal Aplikasi Anda

Bagian ini berisi tips pemecahan masalah untuk CloudWatch Sinyal Aplikasi.

Mengat OpenTelemetry asi konflik konfigurasi di Amazon EKS dengan Sinyal Aplikasi

Jika Anda menggunakan OpenTelemetry (oTel) untuk pemantauan kinerja aplikasi (APM) dengan Amazon EKS dan mengonfigurasi titik akhir eksportir OTLP khusus selain CloudWatch titik akhir, Anda mungkin mengalami perilaku berikut setelah menginstal atau meningkatkan ke add-on CloudWatch Observability versi 5.0.0 atau yang lebih baru:

  • Gangguan pada telemetri OTel yang ada — CloudWatch Pengaya pengamatan dapat menggantikan titik akhir eksportir OTLP yang Anda kodekan dalam aplikasi Anda. Penggantian ini tidak memengaruhi titik akhir yang dikonfigurasi melalui variabel lingkungan kontainer atau. envFrom ConfigMap Saat diganti, metrik dan jejak Anda mungkin tidak mencapai tujuan yang dituju. Untuk mempertahankan pengaturan APM yang ada setelah memutakhirkan ke V5.0.0 atau yang lebih baru, lihat Memilih keluar dari Sinyal Aplikasi

  • Sinyal Aplikasi mungkin tidak berfungsi jika sebelumnya Anda mengaktifkan Sinyal Aplikasi menggunakan add-on CloudWatch Observability dan memiliki titik akhir OTLP khusus yang dikonfigurasi. Untuk mengatasinya, hapus titik akhir OTLP khusus atau atur variabel lingkungan OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true saat menginstal atau memutakhirkan ke versi 5.0.0 atau yang lebih baru

Sinyal Aplikasi Kinerja start dingin lapisan Java

Menambahkan Application Signals Layer ke fungsi Java Lambda meningkatkan latensi startup (cold start time). Kiat-kiat berikut dapat membantu mengurangi latensi untuk fungsi yang sensitif terhadap waktu.

Startup cepat untuk agen Java — Sinyal Aplikasi Java Lambda Layer menyertakan fitur Startup Cepat yang dimatikan secara default tetapi dapat diaktifkan dengan menyetel variabel OTEL_JAVA_AGENT_FAST_STARTUP_ENABLED ke true. Saat diaktifkan, fitur ini mengonfigurasi JVM untuk menggunakan kompiler tingkat 1 C1 kompilasi berjenjang untuk menghasilkan kode asli yang dioptimalkan dengan cepat untuk cold start yang lebih cepat. Kompiler C1 memprioritaskan kecepatan dengan biaya pengoptimalan jangka panjang sedangkan kompiler C2 memberikan kinerja keseluruhan yang unggul dengan membuat profil data dari waktu ke waktu.

Untuk informasi selengkapnya, lihat Startup cepat untuk agen Java.

Kurangi waktu mulai dingin dengan Provisioned Concurrency — konkurensi AWS Lambda yang disediakan melakukan pra-alokasi sejumlah instance fungsi tertentu, membuatnya tetap diinisialisasi dan siap menangani permintaan segera. Ini mengurangi waktu mulai dingin dengan menghilangkan kebutuhan untuk menginisialisasi lingkungan fungsi selama eksekusi, memastikan kinerja yang lebih cepat dan lebih konsisten, terutama untuk beban kerja yang sensitif terhadap latensi. Untuk informasi selengkapnya, lihat Mengon figurasi konkurensi yang disediakan untuk suatu fungsi.

Optimalkan kinerja startup menggunakan Lambda SnapStart - AWS Lambda SnapStart adalah fitur yang mengoptimalkan kinerja startup fungsi Lambda dengan membuat snapshot pra-inisialisasi dari lingkungan eksekusi setelah fase inisialisasi fungsi. Snapshot ini kemudian digunakan kembali untuk memulai instance baru, secara signifikan mengurangi waktu mulai dingin dengan melewatkan proses inisialisasi selama pemanggilan fungsi. Untuk informasi, lihat Meningkatkan kinerja startup dengan Lambda SnapStart

Aplikasi tidak memulai setelah Sinyal Aplikasi diaktifkan

Jika aplikasi Anda di klaster Amazon EKS tidak memulai setelah Anda mengaktifkan Sinyal Aplikasi di klaster, Anda perlu memeriksa hal-hal berikut:

  • Periksa apakah aplikasi telah diinstrumentasi oleh solusi pemantauan yang lain. Sinyal Aplikasi mungkin tidak mendukung hidup berdampingan dengan solusi instrumentasi lainnya.

  • Konfirmasikan bahwa aplikasi Anda sudah memenuhi persyaratan kompatibilitas untuk menggunakan Sinyal Aplikasi. Untuk informasi selengkapnya, lihat Sistem yang didukung.

  • Jika aplikasi Anda gagal menarik artefak Sinyal Aplikasi seperti AWS Distro untuk OpenTelemetery Java atau agen Python dan gambar CloudWatch agen, itu bisa menjadi masalah jaringan.

Untuk mengurangi masalah, hapus anotasi instrumentation.opentelemetry.io/inject-java: "true" atau instrumentation.opentelemetry.io/inject-python: "true" dari manifes penerapan aplikasi Anda, dan terapkan kembali aplikasi Anda. Kemudian periksa apakah aplikasi sudah berfungsi.

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.5.0-eksbuild.1.

Jika Anda terpengaruh, turunkan versi atau nonaktifkan koleksi metrik runtime Anda dengan menambahkan variabel lingkungan OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false ke aplikasi Anda.

Aplikasi Python tidak dimulai setelah Sinyal Aplikasi diaktifkan

Ini adalah masalah yang diketahui dalam OpenTelemetry instrumentasi otomatis bahwa 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. Untuk informasi selengkapnya tentang masalah ini, lihat Pengaturan autoinstrumentasi Python PYTHONPATH tidak sesuai dengan perilaku resolusi modul Python, merusak aplikasi Django.

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.

Tidak ada data Sinyal Aplikasi untuk aplikasi Python yang menggunakan server pre-fork (WSGI atau ASGI)

Pre-fork server, seperti Gunicorn, uWSGI, atau Uvicorn dengan banyak pekerja, proses fork worker dari proses utama. OpenTelemetry SDK bergantung pada thread latar belakang yang tidak bertahan dari fork, jadi ketika proses utama diinstrumentasi, pekerja tidak dapat mengekspor jejak, metrik, dan log.

Untuk latar belakang lebih lanjut tentang OpenTelemetry perilaku ini, lihat masalah Pre-fork server dalam dokumentasi OpenTelemetry Python.

Untuk mengatasi ini, Anda harus terlebih dahulu menginisialisasi instrumentasi otomatis di setiap proses pekerja bercabang daripada dalam proses utama, dan kemudian mengkonfigurasi ADOT Python untuk melewati proses utama.

catatan

Pastikan Anda menggunakan ADOT Python versi terbaru dan add-on Amazon CloudWatch Observability EKS sebelum melanjutkan.

Langkah-langkah tambahan untuk mengaktifkan Sinyal Aplikasi dengan server pre-fork
  1. Inisialisasi instrumentasi otomatis dalam proses pekerja bercabang.

    Untuk Gunicorn, gunakan kait: post_fork

    # gunicorn.conf.py def post_fork(server, worker): from opentelemetry.instrumentation.auto_instrumentation import sitecustomize

    Untuk uWSGi, gunakan direktif. import

    # uwsgi.ini [uwsgi] ; required for the instrumentation of worker processes enable-threads = true lazy-apps = true import = opentelemetry.instrumentation.auto_instrumentation.sitecustomize

    Untuk Uvicorn, FastAPI, atau aplikasi ASGI lainnya yang Anda jalankan dengan beberapa pekerja, inisialisasi instrumentasi di dalam pekerja dengan memanggil initialize() sebelum Anda mengimpor aplikasi Anda. Tempatkan yang berikut ini di bagian atas modul titik masuk aplikasi Anda:

    from opentelemetry.instrumentation.auto_instrumentation import initialize initialize() # Import your application AFTER initialize() so that it is instrumented. from fastapi import FastAPI app = FastAPI()

    Kemudian mulai server seperti biasa, misalnya:

    uvicorn main:app --workers 2

    Atau, jika Anda menjalankan aplikasi ASGI di bawah Gunicorn, Anda dapat menggunakan GunicornUvicornWorker, yang mempertahankan utas latar belakang di fork, bersama dengan kait yang ditunjukkan sebelumnya: post_fork

    opentelemetry-instrument gunicorn \ --workers 4 \ --worker-class uvicorn.workers.UvicornWorker \ --bind 0.0.0.0:8000 \ myapp.main:app
  2. Aktifkan konfigurasi untuk instrumentasi otomatis ADOT Python untuk melewati proses utama dan tunduk kepada pekerja dengan menyetel variabel lingkungan keOTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED. true

    Dengan kedua langkah diterapkan, setiap proses pekerja menginisialisasi saluran pelacak, metrik, dan log sendiri setelah fork, sehingga jejak, metrik, dan log diekspor dengan benar.

Node.js Aplikasi saya tidak diinstrumentasi atau tidak menghasilkan telemetri Sinyal Aplikasi

Untuk mengaktifkan Sinyal Aplikasi untuk Node.js, Anda harus memastikan bahwa Node.js aplikasi Anda menggunakan format modul CommonJS (CJS). AWS Distro for OpenTelemetry Node.js tidak mendukung format modul ESM, karena OpenTelemetry JavaScript dukungan ESM bersifat eksperimental dan sedang dalam proses.

Untuk menentukan apakah aplikasi Anda menggunakan CJS dan bukan ESM, pastikan aplikasi Anda tidak memenuhi persyaratan untuk mengaktifkan ESM.

Aplikasi.NET saya tidak diinstrumentasi atau rusak untuk AWS Panggilan SDK

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.

Tidak ada data aplikasi di dasbor Sinyal Aplikasi

Jika ada metrik atau jejak yang hilang di dasbor Sinyal Aplikasi, hal-hal berikut ini mungkin menjadi penyebabnya. Selidiki penyebab-penyebab tersebut hanya jika Anda telah menunggu 15 menit untuk Sinyal Aplikasi mengumpulkan dan menampilkan data sejak pembaruan terakhir Anda.

  • Pastikan pustaka dan kerangka kerja yang Anda gunakan didukung oleh agen ADOT Java. Untuk informasi selengkapnya, silakan lihat Pustaka / Kerangka Kerja.

  • Pastikan CloudWatch agen sedang berjalan. Pertama periksa status pod CloudWatch agen dan pastikan semuanya dalam Running status.

    kubectl -n amazon-cloudwatch get pods.

    Tambahkan yang berikut ini ke file konfigurasi CloudWatch agen untuk mengaktifkan log debugging, lalu mulai ulang agen.

    "agent": { "region": "${REGION}", "debug": true },

    Kemudian periksa kesalahan di pod CloudWatch agen.

  • Periksa masalah konfigurasi dengan CloudWatch agen. Konfirmasikan bahwa berikut ini masih dalam file konfigurasi CloudWatch agen dan agen telah dimulai ulang sejak ditambahkan.

    "agent": { "region": "${REGION}", "debug": true },

    Kemudian periksa log OpenTelemetry debugging untuk pesan kesalahan sepertiERROR io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter - Failed to export .... Pesan-pesan ini mungkin menunjukkan masalah.

    Jika itu tidak menyelesaikan masalah, buang dan periksa variabel lingkungan dengan nama yang dimulai OTEL_ dengan menjelaskan pod dengan perintah kubectl describe pod.

  • Untuk mengaktifkan logging debug OpenTelemetry Python, atur variabel lingkungan OTEL_PYTHON_LOG_LEVEL ke debug dan gunakan ulang aplikasi.

  • Periksa izin yang salah atau tidak mencukupi untuk mengekspor data dari CloudWatch agen. Jika Anda melihat Access Denied pesan di log CloudWatch agen, ini mungkin masalahnya. Ada kemungkinan bahwa izin yang diterapkan saat Anda menginstal CloudWatch agen kemudian diubah atau dicabut.

  • Periksa masalah AWS Distro for OpenTelemetry (ADOT) saat menghasilkan data telemetri.

    Pastikan bahwa keterangan instrumentasi instrumentation.opentelemetry.io/inject-java dan sidecar.opentelemetry.io/inject-java diterapkan pada penerapan aplikasi deployment dan nilainya adalah true. Tanpa ini, pod aplikasi tidak akan diinstrumentasi bahkan jika add-on ADOT sudah diinstal dengan benar.

    Berikutnya, periksa apakah kontainer init diterapkan pada aplikasi dan status Ready adalah True. Jika kontainer init belum siap, silakan lihat statusnya untuk alasannya.

    Jika masalah berlanjut, aktifkan pencatatan debug di OpenTelemetry Java SDK dengan menyetel variabel lingkungan OTEL_JAVAAGENT_DEBUG ke true dan menerapkan ulang aplikasi. Kemudian cari pesan yang dimulai dengan ERROR io.telemetry.

  • Ek metric/span sportir mungkin kehilangan data. Untuk mengetahuinya, periksa log aplikasi untuk pesan yang menyertakan Failed to export...

  • CloudWatch Agen mungkin terhambat saat mengirim metrik atau rentang ke Sinyal Aplikasi. Periksa pesan yang menunjukkan pelambatan di log CloudWatch agen.

  • Pastikan Anda telah mengaktifkan pengaturan penemuan layanan. Anda hanya perlu melakukan ini sekali di wilayah Anda.

    Untuk mengonfirmasi hal ini, di CloudWatch konsol pilih Sinyal Aplikasi, Layanan. Jika Langkah 1 tidak ditandai Sel esai, pilih Mulai temukan layanan Anda. Data akan mulai mengalir dalam waktu lima menit.

Metrik layanan atau metrik ketergantungan memiliki nilai Unknown

Jika Anda melihat UnknownService,, UnknownOperation UnknownRemoteService, atau UnknownRemoteOperation untuk nama ketergantungan atau operasi di dasbor Sinyal Aplikasi, periksa apakah terjadinya titik data untuk layanan jarak jauh yang tidak dikenal dan operasi jarak jauh yang tidak diketahui bertepatan dengan penerapannya.

  • UnknownServiceberarti bahwa nama aplikasi berinstrumen tidak diketahui. Jika variabel OTEL_SERVICE_NAME lingkungan tidak ditentukan dan tidak service.name ditentukan diOTEL_RESOURCE_ATTRIBUTES, nama layanan disetel keUnknownService. Untuk memperbaikinya, tentukan nama layanan di OTEL_SERVICE_NAME atauOTEL_RESOURCE_ATTRIBUTES.

  • UnknownOperationberarti bahwa nama operasi yang dipanggil tidak diketahui. Hal ini terjadi ketika Sinyal Aplikasi tidak dapat menemukan nama operasi yang memanggil panggilan jarak jauh, atau ketika nama operasi yang diekstraksi berisi nilai kardinalitas tinggi.

  • UnknownRemoteServiceberarti bahwa nama layanan tujuan tidak diketahui. Ini terjadi ketika sistem tidak dapat mengekstrak nama layanan tujuan yang diakses oleh panggilan jarak jauh.

    Salah satu solusinya adalah membuat rentang khusus di sekitar fungsi yang mengirimkan permintaan, dan menambahkan atribut aws.remote.service dengan nilai yang ditunjuk. Pilihan lain adalah mengkonfigurasi CloudWatch agen untuk menyesuaikan nilai metrikRemoteService. Untuk informasi selengkapnya tentang penyesuaian di CloudWatch agen, lihatAktif CloudWatch kan Sinyal Aplikasi.

  • UnknownRemoteOperationberarti bahwa nama operasi tujuan tidak diketahui. Hal ini terjadi ketika sistem tidak dapat mengekstrak nama operasi tujuan yang diakses oleh panggilan jarak jauh.

    Salah satu solusinya adalah membuat rentang khusus di sekitar fungsi yang mengirimkan permintaan, dan menambahkan atribut aws.remote.operation dengan nilai yang ditunjuk. Pilihan lain adalah mengkonfigurasi CloudWatch agen untuk menyesuaikan nilai metrikRemoteOperation. Untuk informasi selengkapnya tentang penyesuaian di CloudWatch agen, lihatAktif CloudWatch kan Sinyal Aplikasi.

Menangani ConfigurationConflict saat mengelola add-on Amazon CloudWatch Observability EKS

Saat Anda menginstal atau memperbarui add-on Amazon CloudWatch Observability EKS, jika Anda melihat kegagalan yang disebabkan oleh tipe ConfigurationConflict dengan deskripsi yang dimulai denganConflicts found when trying to apply. Will not continue due to resolve conflicts mode, kemungkinan karena Anda sudah memiliki CloudWatch agen dan komponen terkait seperti ServiceAccount, ClusterRole dan yang ClusterRoleBinding diinstal pada cluster. Health Issue Ketika add-on mencoba menginstal CloudWatch agen dan komponen terkaitnya, jika mendeteksi perubahan dalam konten, secara default gagal instalasi atau pembaruan untuk menghindari penulisan status sumber daya pada cluster.

Jika Anda mencoba masuk ke add-on Amazon CloudWatch Observability EKS dan Anda melihat kegagalan ini, sebaiknya hapus pengaturan CloudWatch agen yang sudah ada yang sebelumnya telah Anda instal di cluster dan kemudian menginstal add-on EKS. Pastikan untuk membuat cadangan penyesuaian apa pun yang mungkin telah Anda buat ke pengaturan CloudWatch agen asli seperti konfigurasi agen khusus, dan berikan ini ke add-on Amazon CloudWatch Observability EKS saat Anda menginstal atau memperbaruinya berikutnya. Jika sebelumnya Anda telah menginstal CloudWatch agen untuk orientasi ke Container Insights, lihat Panduan penyiapan (AWS CLI) untuk informasi selengkapnya.

Atau, add-on mendukung opsi konfigurasi resolusi konflik yang memiliki kemampuan untuk menentukan OVERWRITE. Anda dapat menggunakan opsi ini untuk melanjutkan dengan melakukan instalasi atau memperbarui add-on dengan menimpa konflik di klaster. Jika Anda menggunakan konsol Amazon EKS, Anda akan menemukan Metode penyelesaian konflik saat Anda memilih Pengaturan konfigurasi opsional ketika Anda membuat atau memperbarui add-on. Jika Anda menggunakan AWS CLI, Anda dapat memberikan perintah Anda --resolve-conflicts OVERWRITE untuk membuat atau memperbarui add-on.

Saya ingin menyaring metrik dan jejak yang tidak perlu

Jika Sinyal Aplikasi mengumpulkan jejak dan metrik yang tidak Anda inginkan, lihat Kelola operasi kardinalitas tinggi informasi tentang mengonfigurasi CloudWatch agen dengan aturan khusus untuk mengurangi kardinalitas.

Untuk informasi tentang menyesuaikan aturan pengambilan sampel jejak, lihat Meng onfigurasi aturan pengambilan sampel dalam X-Ray dokumentasi.

Apa yang dimak InternalOperation sud?

An InternalOperation adalah operasi yang dipicu oleh aplikasi secara internal daripada oleh pemanggilan eksternal. Melihat InternalOperation diharapkan, perilaku sehat.

Beberapa contoh khas di mana Anda akan melihat InternalOperation termasuk yang berikut:

  • Memuat awal — Aplikasi Anda melakukan operasi bernama loadDatafromDB yang membaca metadata dari database selama fase pemanasan. Alih-alih mengamati loadDatafromDB sebagai operasi layanan, Anda akan melihatnya dikategorikan sebagaiInternalOperation.

  • Eksekusi asinkron di latar belakang — Aplikasi Anda berlangganan antrian acara, dan memproses data streaming sesuai setiap kali ada pembaruan. Setiap operasi yang dipicu akan InternalOperation berada di bawah operasi layanan.

  • Mengambil informasi host dari registri layanan — Aplikasi Anda berbicara ke registri layanan untuk penemuan layanan. Semua interaksi dengan sistem penemuan diklasifikasikan sebagaiInternalOperation.

Bagaimana cara mengaktifkan logging untuk aplikasi.NET?

Untuk mengaktifkan logging untuk aplikasi.NET, konfigurasikan variabel lingkungan berikut. Untuk informasi selengkapnya tentang cara mengonfigurasi variabel lingkungan ini, lihat Mem ecahkan masalah instrumentasi otomatis.NET dalam OpenTelemetry dokumentasi.

  • OTEL_LOG_LEVEL

  • OTEL_DOTNET_AUTO_LOG_DIRECTORY

  • COREHOST_TRACE

  • COREHOST_TRACEFILE

Bagaimana saya bisa menyelesaikan konflik versi perakitan di aplikasi.NET?

Jika Anda mendapatkan kesalahan berikut, lihat Konflik versi perakitan dalam OpenTelemetry dokumentasi untuk langkah-langkah penyelesaian.

Unhandled exception. System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. File name: 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' at Microsoft.AspNetCore.Builder.WebApplicationBuilder..ctor(WebApplicationOptions options, Action`1 configureDefaults) at Microsoft.AspNetCore.Builder.WebApplication.CreateBuilder(String[] args) at Program.<Main>$(String[] args) in /Blog.Core/Blog.Core.Api/Program.cs:line 26

Bisakah saya menonaktifkan FluentBit?

Anda dapat menonaktifkan FluentBit dengan mengonfigurasi add-on Amazon CloudWatch Observability EKS. Untuk informasi selengkapnya, lihat (Opsional) Konfigurasi tambahan.

Bisakah saya memfilter log kontainer sebelum mengekspor ke CloudWatch Log?

Tidak, penyaringan log kontainer belum didukung.

Menyelesaikan TypeError saat Menggunakan AWS Distro untuk OpenTelemetry (ADOT) JavaScript Lapisan Lambda

Fungsi Lambda Anda mungkin gagal dengan kesalahan ini: TypeError - "Cannot redefine property: handler" ketika Anda:

  • Gunakan ADOT JavaScript Lambda Layer

  • Gunakan esbuild untuk mengkompilasi TypeScript

  • Ekspor handler Anda dengan export kata kunci

ADOT JavaScript Lambda Layer perlu memodifikasi handler Anda saat runtime. Ketika Anda menggunakan export kata kunci dengan esbuild (langsung atau melalui AWS CDK), esbuild membuat handler Anda tidak dapat diubah, mencegah modifikasi ini.

Ekspor fungsi handler Anda menggunakan al module.exports ih-alih export kata kunci:

// Before export const handler = (event) => { // Handler Code }
// After const handler = async (event) => { // Handler Code } module.exports = { handler }

TypeError saat menggunakan penanganan Lambda Streaming Response dengan AWS Distro untuk OpenTelemetry (ADOT) JavaScript Lapisan Lambda

Fungsi Lambda Anda mungkin gagal dengan kesalahan ini: TypeError - "responseStream.write is not a function" ketika Anda:

  • Gunakan ADOT JavaScript Lambda Layer dengan Instrumentasi AWS Lambda diaktifkan (diaktifkan secara default)

  • Menggunakan fitur streaming respons dalam runtime ter Node.js kelola. Misalnya, ketika pengendali fungsi Anda seperti:

    * export const handler = awslambda.streamifyResponse(...)

Instrumentasi AWS Lambda di ADOT JavaScript Lambda Layer saat ini tidak mendukung Streaming Respon dalam runtime terkel Node.js ola, jadi harus dinonaktifkan untuk menghindari hal ini. TypeError

Perbarui ke versi agen atau add-on Amazon EKS yang diperlukan

Setelah 9 Agustus 2024, Sin CloudWatch yal Aplikasi tidak akan lagi mendukung versi lama dari add-on Amazon CloudWatch Observability EKS, CloudWatch agen, dan AWS Distro untuk agen instrumentasi OpenTelemetry otomatis.

  • Untuk add-on Amazon CloudWatch Observability EKS, versi yang lebih tua dari v1.7.0-eksbuild.1 tidak akan didukung.

  • Untuk CloudWatch agen, versi yang lebih lama 1.300040.0 dari tidak akan didukung.

  • Untuk AWS Distro untuk agen OpenTelemetry instrumentasi otomatis:

    • Untuk Java, versi yang lebih tua 1.32.2 dari tidak didukung.

    • Untuk Python, versi yang lebih tua 0.2.0 dari tidak didukung.

    • Untuk .NET, versi yang lebih tua 1.3.2 dari tidak didukung.

    • Untuk Node.js, versi yang lebih lama 0.3.0 dari tidak didukung.

penting

Versi terbaru dari agen menyertakan pembaruan pada skema metrik Sinyal Aplikasi. Pembaruan ini tidak kompatibel ke belakang, dan ini dapat mengakibatkan masalah data jika versi yang tidak kompatibel digunakan. Untuk membantu memastikan transisi mulus ke fungsionalitas baru, lakukan hal berikut:

  • Jika aplikasi Anda berjalan di Amazon EKS, pastikan untuk memulai ulang semua aplikasi berinstrumen setelah Anda memperbarui add-on Amazon CloudWatch Observability.

  • Untuk aplikasi yang berjalan di platform lain, pastikan untuk memut akh irkan CloudWatch agen dan agen AWS OpenTelemetry instrumentasi otomatis ke versi terbaru.

Petunjuk di bagian berikut dapat membantu Anda memperbarui ke versi yang didukung.

Perbarui add-on Amazon CloudWatch Observability EKS

Untuk add-on Amazon CloudWatch Observability EKS, Anda dapat menggunakan Konsol Manajemen AWS atau. AWS CLI

Gunakan konsol

Untuk meng-upgrade add-on menggunakan konsol
  1. Buka konsol Amazon EKS di https://console.aws.amazon.com/eks/home #/cluster.

  2. Pilih nama cluster Amazon EKS untuk diperbarui.

  3. Pilih Add-ons tab, lalu pilih Amazon CloudWatch Observability.

  4. Pilih Edit, pilih versi yang ingin Anda perbarui, lalu pilih S impan perubahan.

    Pastikan untuk memilih v1.7.0-eksbuild.1 atau nanti.

  5. Masukkan salah satu AWS CLI perintah berikut untuk memulai ulang layanan Anda.

    # Restart a deployment kubectl rollout restart deployment/name # Restart a daemonset kubectl rollout restart daemonset/name # Restart a statefulset kubectl rollout restart statefulset/name

Gunakan AWS CLI

Untuk meng-upgrade add-on menggunakan AWS CLI
  1. Masukkan perintah berikut untuk menemukan versi terbaru.

    aws eks describe-addon-versions \ --addon-name amazon-cloudwatch-observability
  2. Masukkan perintah berikut untuk memperbarui add-on. Ganti $VERSION dengan versi yang v1.7.0-eksbuild.1 lebih baru. Ganti $AWS_REGION dan $CLUSTER dengan nama Wilayah dan cluster Anda.

    aws eks update-addon \ --region $AWS_REGION \ --cluster-name $CLUSTER \ --addon-name amazon-cloudwatch-observability \ --addon-version $VERSION \ # required only if the advanced configuration is used. --configuration-values $JSON_CONFIG
    catatan

    Jika Anda menggunakan konfigurasi khusus untuk add-on, Anda dapat menemukan contoh konfigurasi yang akan digunakan $JSON_CONFIG diAktif CloudWatch kan Sinyal Aplikasi.

  3. Masukkan salah satu AWS CLI perintah berikut untuk memulai ulang layanan Anda.

    # Restart a deployment kubectl rollout restart deployment/name # Restart a daemonset kubectl rollout restart daemonset/name # Restart a statefulset kubectl rollout restart statefulset/name

Memperbarui CloudWatch agen dan agen ADOT

Jika layanan Anda berjalan pada arsitektur selain Amazon EKS, Anda perlu memutakhirkan CloudWatch agen dan agen instrumentasi otomatis ADOT untuk menggunakan fitur Sinyal Aplikasi terbaru.

Pembaruan tentang Amazon ECS

Untuk meningkatkan agen Anda untuk layanan yang berjalan di Amazon ECS
  1. Buat revisi definisi tugas baru. Untuk informasi selengkapnya, lihat Memperbarui definisi tugas menggunakan konsol.

  2. Ganti $IMAGE ecs-cwagent wadah dengan tag gambar terbaru dari cloudwatch-agent di Amazon ECR.

    Jika Anda memutakhirkan ke versi tetap, pastikan untuk menggunakan versi yang sama dengan atau lebih baru dari1.300040.0.

  3. G $IMAGE anti init wadah dengan tag gambar terbaru dari lokasi berikut:

  4. Perbarui variabel lingkungan Sinyal Aplikasi di wadah aplikasi Anda dengan mengikuti petunjuk diLangkah 4: Instrumentasikan aplikasi Anda dengan CloudWatch agen.

  5. Terapkan layanan Anda dengan definisi tugas baru.

Perbarui pada Amazon EC2 atau arsitektur lainnya

Untuk meningkatkan agen Anda untuk layanan yang berjalan di Amazon EC2 atau arsitektur lainnya
  1. Pastikan untuk memilih versi 1.300040.0 atau versi CloudWatch agen yang lebih baru.

  2. Unduh versi terbaru AWS Distro untuk agen OpenTelemetry instrumentasi otomatis dari salah satu lokasi berikut:

    • Untuk Java, gunakan aws- otel-java-instrumentasi.

      Jika Anda memutakhirkan ke versi tetap, pastikan untuk memilih 1.32.2 atau yang lebih baru.

    • Untuk Python, gunakan aws- otel-python-instrumentasi.

      Jika Anda memutakhirkan ke versi tetap, pastikan untuk memilih 0.2.0 atau yang lebih baru.

    • Untuk .NET, gunakan aws- otel-dotnet-instrumentasi.

      Jika Anda memutakhirkan ke versi tetap, pastikan untuk memilih 1.3.2 atau yang lebih baru.

    • Untuk Node.js, gunakan aws- otel-js-instrumentasi.

      Jika Anda memutakhirkan ke versi tetap, pastikan untuk memilih 0.3.0 atau yang lebih baru.

  3. Terapkan variabel lingkungan Sinyal Aplikasi yang diperbarui ke aplikasi Anda, lalu mulai aplikasi Anda. Untuk informasi selengkapnya, lihat Langkah 3: Menginstrumentasikan aplikasi Anda dan memulainya.

Format Metrik Tertanam (EMF) dinonaktifkan untuk Sinyal Aplikasi

Menonaktifkan EMF untuk grup /aws/application-signals/data log dapat memiliki dampak berikut pada fungsionalitas Sinyal Aplikasi.

  • Metrik dan grafik Sinyal Aplikasi tidak akan ditampilkan

  • Fungsi Sinyal Aplikasi akan terdegradasi

Bagaimana cara mengembalikan Sinyal Aplikasi?

Saat Sinyal Aplikasi menampilkan grafik atau metrik kosong, Anda harus mengaktifkan EMF untuk grup /aws/application-signals/data log untuk memulihkan fungsionalitas penuh. Lihat informasi yang lebih lengkap di PutAccountPolicy.