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 Sinyal CloudWatch Aplikasi.

Aplikasi tidak memulai setelah Sinyal Aplikasi diaktifkan

Jika aplikasi Anda di EKS klaster Amazon tidak dimulai setelah Anda mengaktifkan Sinyal Aplikasi di klaster, periksa 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 oleh Sinyal Aplikasi .

  • Jika aplikasi Anda gagal menarik artefak Sinyal Aplikasi seperti AWS Distro untuk agen OpenTelemetery Java atau Python CloudWatch dan gambar 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 ulang aplikasi Anda. Kemudian periksa apakah aplikasi sudah berfungsi.

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 hal ini, pastikan Anda mengatur variabel PYTHONPATH lingkungan ke lokasi direktori kerja aplikasi Anda. Untuk informasi selengkapnya tentang masalah ini, lihat pengaturan autoinstrumentasi Python dari PYTHONPATH tidak sesuai dengan perilaku resolusi modul Python, melanggar aplikasi Django.

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.

Tidak ada data Sinyal Aplikasi untuk aplikasi Python yang menggunakan server WSGI

Jika Anda menggunakan WSGI server seperti Gunicorn atau uWSGI, Anda harus membuat perubahan tambahan untuk membuat instrumentasi otomatis ADOT Python berfungsi.

catatan

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

Langkah-langkah tambahan untuk mengaktifkan Sinyal Aplikasi dengan WSGI server
  1. Impor 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 AndaWSGI, gunakan import direktif.

    # uwsgi.ini [uwsgi] ; required for the instrumentation of worker processes enable-threads = true lazy-apps = true import = opentelemetry.instrumentation.auto_instrumentation.sitecustomize
  2. Aktifkan konfigurasi untuk instrumentasi otomatis ADOT Python untuk melewati proses utama dan tunda ke pekerja dengan menyetel variabel lingkungan ke. OTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED true

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

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

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

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 berikut ini ke file konfigurasi CloudWatch agen untuk mengaktifkan log debugging, lalu restart agen.

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

    Kemudian periksa kesalahan pada 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 kembali aplikasi.

  • Periksa izin yang salah atau tidak memadai untuk mengekspor data dari agen. CloudWatch 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 sebuah AWS Masalah Distro for OpenTelemetry (ADOT) saat membuat 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 ADOT addon 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 debug logging 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.

  • Pengekspor metrik/rentang mungkin membuang data. Untuk mengetahuinya, periksa log aplikasi untuk pesan yang menyertakan Failed to export...

  • CloudWatch Agen mungkin terhambat saat mengirim metrik atau bentang 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 Selesai, pilih Mulai menemukan layanan Anda. Data akan mulai mengalir dalam waktu lima menit.

Metrik layanan atau metrik ketergantungan memiliki nilai Tidak Dikenal

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

  • UnknownServiceberarti bahwa nama aplikasi yang diinstrumentasi tidak diketahui. Jika variabel OTEL_SERVICE_NAME lingkungan tidak terdefinisi dan service.name tidak ditentukan dalamOTEL_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. 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 panggilan jarak jauh.

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

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

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

Menangani ConfigurationConflict saat mengelola add-on Amazon CloudWatch Observability EKS

Ketika Anda menginstal atau memperbarui EKS add-on Amazon CloudWatch Observability, jika Anda melihat kegagalan yang Health Issue 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. Ketika add-on mencoba menginstal CloudWatch agen dan komponen terkait, jika mendeteksi perubahan apa pun dalam konten, secara default gagal instalasi atau pembaruan untuk menghindari penimpaan status sumber daya pada cluster.

Jika Anda mencoba untuk onboard ke EKS add-on Amazon CloudWatch Observability dan Anda melihat kegagalan ini, sebaiknya hapus penyiapan CloudWatch agen yang sudah ada yang sebelumnya Anda instal di cluster dan kemudian menginstal add-on. EKS Pastikan untuk mencadangkan penyesuaian apa pun yang mungkin telah Anda buat ke penyiapan CloudWatch agen asli seperti konfigurasi agen khusus, dan berikan ini ke EKS add-on Amazon CloudWatch Observability saat Anda menginstal atau memperbaruinya berikutnya. Jika sebelumnya Anda telah menginstal CloudWatch agen untuk orientasi ke Container Insights, lihat Menghapus CloudWatch agen dan Fluent Bit untuk Wawasan Kontainer 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 EKS konsol Amazon, Anda akan menemukan metode Resolusi konflik saat memilih pengaturan konfigurasi Opsional saat 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 memfilter metrik dan jejak yang tidak perlu

Jika Application Signals 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 Mengonfigurasi aturan pengambilan sampel dalam dokumentasi X-Ray.

Apa InternalOperation artinya?

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

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

  • Preloading saat mulai — 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 dengan itu setiap kali ada pembaruan. Setiap operasi yang dipicu akan berada di bawah InternalOperation sebagai 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. NETaplikasi? (Pratinjau)

Untuk mengaktifkan logging untuk. NETaplikasi, konfigurasikan variabel lingkungan berikut. Untuk informasi selengkapnya tentang cara mengonfigurasi variabel lingkungan ini, lihat Pemecahan masalah. NETmasalah instrumentasi otomatis dalam OpenTelemetry dokumentasi.

  • OTEL_LOG_LEVEL

  • OTEL_DOTNET_AUTO_LOG_DIRECTORY

  • COREHOST_TRACE

  • COREHOST_TRACEFILE

Bagaimana saya bisa menyelesaikan konflik versi perakitan di. NETaplikasi?

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

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 ObservabilityEKS. Untuk informasi selengkapnya, lihat (Opsional) Konfigurasi tambahan.

Bisakah saya memfilter log kontainer sebelum mengekspor ke CloudWatch Log?

Tidak, memfilter log kontainer belum didukung.