Aktifkan aplikasi Anda di klaster Amazon EKS - Amazon CloudWatch

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

Aktifkan aplikasi Anda di klaster Amazon EKS

CloudWatch Sinyal Aplikasi didukung untuk aplikasi Java, Python, Node.js, dan .NET. Untuk mengaktifkan Sinyal Aplikasi untuk aplikasi Anda di klaster Amazon EKS yang ada, Anda dapat menggunakan konfigurasi AWS Management Console lanjutan monitor otomatis add-on AWS CDK, atau CloudWatch Observability.

Aktifkan Sinyal Aplikasi di kluster Amazon EKS menggunakan konsol

Untuk mengaktifkan Sinyal CloudWatch Aplikasi pada aplikasi Anda di klaster Amazon EKS yang ada, gunakan petunjuk di bagian ini.

penting

Jika Anda sudah menggunakan aplikasi OpenTelemetry yang ingin Anda aktifkan untuk Sinyal Aplikasi, lihat OpenTelemetry kompatibilitas sebelum Anda mengaktifkan Sinyal Aplikasi.

Untuk mengaktifkan Sinyal Aplikasi untuk aplikasi Anda di klaster Amazon EKS yang ada
catatan

Jika Anda belum mengaktifkan Sinyal Aplikasi, ikuti petunjuknya Aktifkan Sinyal Aplikasi di akun Anda dan ikuti prosedur di bawah ini.

  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Pilih Sinyal Aplikasi.

  3. Untuk Tentukan platform, pilih EKS.

  4. Untuk Pilih klaster EKS, pilih klaster tempat Anda ingin mengaktifkan Sinyal Aplikasi.

  5. Jika klaster ini belum mengaktifkan add-on Amazon CloudWatch Observability EKS, Anda akan diminta untuk mengaktifkannya. Jika ini terjadi, lakukan hal berikut:

    1. Pilih Add CloudWatch Observability EKS add-on. Konsol Amazon EKS akan dimunculkan.

    2. Pilih kotak centang untuk Amazon CloudWatch Observability dan pilih Berikutnya.

      Add-on CloudWatch Observability EKS memungkinkan Sinyal Aplikasi dan CloudWatch Wawasan Kontainer dengan peningkatan observabilitas untuk Amazon EKS. Untuk informasi selengkapnya tentang Wawasan Kontainer ini, silakan lihat Wawasan Kontainer.

    3. Pilih versi terbaru add-on untuk diinstal.

    4. Pilih peran IAM yang akan digunakan untuk add-on. Jika Anda memilih Diwariskan dari node, lampirkan izin yang benar untuk peran IAM yang digunakan oleh simpul pekerja Anda. Ganti my-worker-node-role dengan peran IAM yang digunakan oleh node pekerja Kubernetes Anda.

      aws iam attach-role-policy \ --role-name my-worker-node-role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --policy-arn arn:aws:iam::aws:policy/AWSXRayWriteOnlyAccess
    5. Jika Anda ingin membuat peran layanan untuk menggunakan add-on, silakan lihat Instal CloudWatch agen dengan add-on Amazon CloudWatch Observability EKS atau bagan Helm.

    6. Pilih Berikutnya, konfirmasikan informasi di layar, dan pilih Buat.

    7. Di layar berikutnya, pilih Aktifkan Sinyal CloudWatch Aplikasi untuk kembali ke CloudWatch konsol dan menyelesaikan prosesnya.

  6. Ada dua opsi untuk mengaktifkan aplikasi Anda untuk Sinyal Aplikasi. Untuk konsistensi, kami sarankan Anda memilih satu opsi per cluster.

    • Opsi Konsol lebih sederhana. Menggunakan metode ini menyebabkan pod Anda segera restart.

    • Metode Annotate Manifest File memberi Anda lebih banyak kontrol saat pod Anda dimulai ulang, dan juga dapat membantu Anda mengelola pemantauan dengan cara yang lebih terdesentralisasi jika Anda tidak ingin memusatkannya.

    catatan

    Jika Anda mengaktifkan Application Signals untuk aplikasi Node.js dengan ESM, lewati saja. Menyiapkan aplikasi Node.js dengan format modul ESM

    Console

    Opsi Konsol menggunakan konfigurasi lanjutan add-on Amazon CloudWatch Observability EKS untuk mengatur Sinyal Aplikasi untuk layanan Anda. Untuk informasi selengkapnya tentang add-on, lihat(Opsional) Konfigurasi tambahan.

    Jika Anda tidak melihat daftar beban kerja dan ruang nama, pastikan Anda memiliki izin yang tepat untuk melihatnya untuk klaster ini. Untuk informasi selengkapnya, lihat Izin yang diperlukan.

    Anda dapat memantau semua beban kerja layanan dengan memilih kotak centang Monitor otomatis atau secara selektif memilih beban kerja dan ruang nama tertentu untuk dipantau.

    Untuk memantau semua beban kerja layanan dengan Monitor otomatis:

    1. Pilih kotak centang Monitor otomatis untuk secara otomatis memilih semua beban kerja layanan dalam sebuah cluster.

    2. Pilih Auto restart untuk me-restart semua pod beban kerja untuk mengaktifkan Application Signals segera dengan AWS Distro for OpenTelemetry auto-instrumentation (ADOT) SDKs yang disuntikkan ke pod Anda.

    3. Pilih Selesai. Saat Auto restart dipilih, add-on CloudWatch Observability EKS akan segera mengaktifkan Sinyal Aplikasi. Jika tidak, Sinyal Aplikasi akan diaktifkan selama penerapan berikutnya dari setiap beban kerja.

    Anda dapat memantau beban kerja tunggal atau seluruh ruang nama.

    Untuk memantau satu beban kerja:

    1. Pilih kotak centang berdasarkan beban kerja yang ingin Anda pantau.

    2. Gunakan daftar tarik-turun Pilih bahasa untuk memilih bahasa beban kerja. Pilih bahasa yang ingin Anda aktifkan Sinyal Aplikasi, lalu pilih ikon tanda centang (✓) untuk menyimpan pilihan ini.

      Untuk aplikasi Python, pastikan aplikasi Anda mengikuti prasyarat yang diperlukan sebelum melanjutkan. Untuk informasi selengkapnya, lihat Aplikasi Python tidak dimulai setelah Sinyal Aplikasi diaktifkan.

    3. Pilih Selesai. Add-on Amazon CloudWatch Observability EKS akan segera menyuntikkan AWS Distro for OpenTelemetry autoinstrumentation (ADOT) SDKs ke dalam pod Anda dan memicu pod restart untuk mengaktifkan pengumpulan metrik dan jejak aplikasi.

    Untuk memantau seluruh namespace:

    1. Pilih kotak centang pada namespace yang ingin Anda pantau.

    2. Gunakan daftar tarik-turun Pilih bahasa untuk memilih bahasa namespace. Pilih bahasa yang ingin Anda aktifkan Sinyal Aplikasi, lalu pilih ikon tanda centang (✓) untuk menyimpan pilihan ini. Ini berlaku untuk semua beban kerja di namespace ini, apakah saat ini digunakan atau akan digunakan di masa mendatang.

      Untuk aplikasi Python, pastikan aplikasi Anda mengikuti prasyarat yang diperlukan sebelum melanjutkan. Untuk informasi selengkapnya, lihat Aplikasi Python tidak dimulai setelah Sinyal Aplikasi diaktifkan.

    3. Pilih Selesai. Add-on Amazon CloudWatch Observability EKS akan segera menyuntikkan AWS Distro for OpenTelemetry autoinstrumentation (ADOT) SDKs ke dalam pod Anda dan memicu pod restart untuk mengaktifkan pengumpulan metrik dan jejak aplikasi.

    Untuk mengaktifkan Sinyal Aplikasi di klaster Amazon EKS lainnya, pilih Aktifkan Sinyal Aplikasi dari layar Layanan.

    Annotate manifest file

    Di CloudWatch konsol, bagian Monitor Services menjelaskan bahwa Anda harus menambahkan anotasi ke manifes YAMG di klaster. Dengan menambahkan keterangan ini maka secara otomatis melengkapi aplikasi untuk mengirim metrik, jejak, dan log ke Sinyal Aplikasi.

    Anda memiliki dua pilihan untuk keterangan:

    • Beri Keterangan untuk Beban Kerja secara otomatis melengkapi sebuah beban kerja tunggal di klaster.

    • Beri Keterangan Namespace secara otomatis melengkapi semua beban kerja yang di-deploy di namespace yang dipilih.

    Pilih salah satu pilihan tersebut, dan ikuti langkah-langkah yang sesuai:

    • Untuk membuat anotasi satu beban kerja:

      1. Pilih Beri Keterangan Beban Kerja.

      2. Tempelkan salah satu baris berikut ke PodTemplate bagian file manifes beban kerja.

        • Untuk beban kerja Java: annotations: instrumentation.opentelemetry.io/inject-java: "true"

        • Untuk beban kerja Python: annotations: instrumentation.opentelemetry.io/inject-python: "true"

          Untuk aplikasi Python, ada konfigurasi tambahan yang diperlukan. Untuk informasi selengkapnya, lihat Aplikasi Python tidak dimulai setelah Sinyal Aplikasi diaktifkan.

        • Untuk beban kerja.NET annotations: instrumentation.opentelemetry.io/inject-dotnet: "true"

          catatan

          Untuk mengaktifkan Sinyal Aplikasi untuk beban kerja.NET pada gambar berbasis Alpine Linux (linux-musl-x64), tambahkan anotasi berikut.

          instrumentation.opentelemetry.io/otel-dotnet-auto-runtime: "linux-musl-x64"
        • Untuk beban kerja Node.js: annotations: instrumentation.opentelemetry.io/inject-nodejs: "true"

      3. Di terminal Anda, masukkan kubectl apply -f your_deployment_yaml untuk menerapkan perubahan.

    • Untuk membuat anotasi semua beban kerja di namespace:

      1. Pilih Berikan Keterangan Namespace.

      2. Tempelkan salah satu baris berikut ke bagian metadata dari file manifes namespace. Jika namespace menyertakan beban kerja Java, Python, dan .NET, rekatkan semua baris berikut ke dalam file manifes namespace.

        • Jika ada beban kerja Java di namespace: annotations: instrumentation.opentelemetry.io/inject-java: "true"

        • Jika ada beban kerja Python di namespace: annotations: instrumentation.opentelemetry.io/inject-python: "true"

          Untuk aplikasi Python, ada konfigurasi tambahan yang diperlukan. Untuk informasi selengkapnya, lihat Aplikasi Python tidak dimulai setelah Sinyal Aplikasi diaktifkan.

        • Jika ada beban kerja.NET di namespace: annotations: instrumentation.opentelemetry.io/inject-dotnet: "true"

        • Jika ada beban kerja Node.JS di namespace: annotations: instrumentation.opentelemetry.io/inject-nodejs: "true"

      3. Di terminal Anda, masukkan kubectl apply -f your_namespace_yaml untuk menerapkan perubahan.

      4. Di terminal Anda, masukkan satu perintah untuk memulai ulang semua pod di namespace tersebut. Contoh perintah untuk me-restart deployment beban kerja adalah kubectl rollout restart deployment -n namespace_name

  7. Pilih Tampilkan Layanan setelah selesai. Hal ini akan membawa Anda ke tampilan Layanan Sinyal Aplikasi, di mana Anda dapat melihat data yang dikumpulkan oleh Sinyal Aplikasi. Mungkin diperlukan waktu beberapa menit hingga akhirnya data muncul.

    Untuk mengaktifkan Sinyal Aplikasi di klaster Amazon EKS lainnya, pilih Aktifkan Sinyal Aplikasi dari layar Layanan.

    Untuk informasi selengkapnya tentang tampilan Layanan, silakan lihat Memantau kondisi kesehatan operasional aplikasi Anda dengan Sinyal Aplikasi.

catatan

Jika Anda menggunakan server WSGI untuk aplikasi Python Anda, lihat informasi Tidak ada data Sinyal Aplikasi untuk aplikasi Python yang menggunakan server WSGI untuk membuat Sinyal Aplikasi berfungsi.

Kami juga telah mengidentifikasi pertimbangan lain yang harus Anda ingat saat mengaktifkan aplikasi Python untuk Sinyal Aplikasi. Untuk informasi selengkapnya, lihat Aplikasi Python tidak dimulai setelah Sinyal Aplikasi diaktifkan.

Menyiapkan aplikasi Node.js dengan format modul ESM

Kami menyediakan dukungan terbatas untuk aplikasi Node.js dengan format modul ESM. Lihat perinciannya di Keterbatasan yang diketahui tentang Node.js dengan ESM.

Untuk format modul ESM, mengaktifkan Sinyal Aplikasi melalui konsol atau dengan membuat anotasi file manifes tidak berfungsi. Lewati langkah 8 dari prosedur sebelumnya, dan lakukan hal berikut sebagai gantinya.

Untuk mengaktifkan Sinyal Aplikasi untuk aplikasi Node.js dengan ESM
  1. Instal dependensi yang relevan ke aplikasi Node.js Anda untuk autoinstrumentasi:

    npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0
  2. Tambahkan variabel lingkungan berikut ke Dockerfile untuk aplikasi Anda dan buat gambar.

    ... ENV OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true ENV OTEL_TRACES_SAMPLER_ARG='endpoint=http://cloudwatch-agent.amazon-cloudwatch:2000' ENV OTEL_TRACES_SAMPLER='xray' ENV OTEL_EXPORTER_OTLP_PROTOCOL='http/protobuf' ENV OTEL_EXPORTER_OTLP_TRACES_ENDPOINT='http://cloudwatch-agent.amazon-cloudwatch:4316/v1/traces' ENV OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT='http://cloudwatch-agent.amazon-cloudwatch:4316/v1/metrics' ENV OTEL_METRICS_EXPORTER='none' ENV OTEL_LOGS_EXPORTER='none' ENV NODE_OPTIONS='--import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs' ENV OTEL_SERVICE_NAME='YOUR_SERVICE_NAME' #replace with a proper service name ENV OTEL_PROPAGATORS='tracecontext,baggage,b3,xray' ... # command to start the application # for example # CMD ["node", "index.mjs"]
  3. Tambahkan variabel lingkunganOTEL_RESOURCE_ATTRIBUTES_POD_NAME,OTEL_RESOURCE_ATTRIBUTES_NODE_NAME,OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME, POD_NAMESPACE dan OTEL_RESOURCE_ATTRIBUTES ke file yaml penerapan untuk aplikasi. Misalnya:

    apiVersion: apps/v1 kind: Deployment metadata: name: nodejs-app labels: app: nodejs-app spec: replicas: 2 selector: matchLabels: app: nodejs-app template: metadata: labels: app: nodejs-app # annotations: # make sure this annotation doesn't exit # instrumentation.opentelemetry.io/inject-nodejs: 'true' spec: containers: - name: nodejs-app image:your-nodejs-application-image #replace with a proper image uri imagePullPolicy: Always ports: - containerPort: 8000 env: - name: OTEL_RESOURCE_ATTRIBUTES_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: OTEL_RESOURCE_ATTRIBUTES_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName - name: OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME valueFrom: fieldRef: fieldPath: metadata.labels['app'] # Assuming 'app' label is set to the deployment name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: OTEL_RESOURCE_ATTRIBUTES value: "k8s.deployment.name=$(OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME),k8s.namespace.name=$(POD_NAMESPACE),k8s.node.name=$(OTEL_RESOURCE_ATTRIBUTES_NODE_NAME),k8s.pod.name=$(OTEL_RESOURCE_ATTRIBUTES_POD_NAME)"
  4. Menyebarkan aplikasi Node.js ke cluster.

Setelah Anda mengaktifkan aplikasi Anda di Amazon EKS Clusters, Anda dapat memantau kesehatan aplikasi Anda. Untuk informasi selengkapnya, lihat Memantau kondisi kesehatan operasional aplikasi Anda dengan Sinyal Aplikasi.

Aktifkan Sinyal Aplikasi di klaster Amazon EKS menggunakan konfigurasi lanjutan add-on CloudWatch Observability

Dimulai dengan versi v4.0.0-eksbuild.1 dari add-on CloudWatch Observability Amazon EKS, Anda dapat secara otomatis mengaktifkan Sinyal Aplikasi untuk semua beban kerja layanan di kluster EKS Anda menggunakan flag konfigurasi monitor Otomatis terpusat baru dalam konfigurasi lanjutan add-on.

Untuk memilih fitur Monitor otomatis, Anda harus memodifikasi konfigurasi lanjutan saat membuat atau memperbarui bagan add-on atau Helm. Dengan menyetel monitorAllServices ke true, add-on CloudWatch Observability akan mendeteksi semua beban kerja layanan Kubernetes dan mencoba menyuntikkan AWS Distro for (ADOT) selama penerapan secara otomatis. OpenTelemetry SDKs Selain itu, dengan mengaktifkanrestartPods, semua pod beban kerja layanan akan dimulai ulang untuk segera menyuntikkan ADOT SDKs sebagai bagian dari proses redeployment otomatis.

--configuration-values '{ "manager":{ "applicationSignals":{ "autoMonitor":{ "monitorAllServices":true, "restartPods":true } } } }'

CloudWatch Pengaya Observabilitas juga menyediakan kontrol berbutir halus tambahan untuk menyertakan atau mengecualikan layanan tertentu sesuai kebutuhan dalam konfigurasi lanjutan yang baru. Untuk informasi selengkapnya, lihat Mengonfigurasi Sinyal Aplikasi untuk klaster Amazon EKS Anda .

Aktifkan Sinyal Aplikasi di Amazon EKS menggunakan AWS CDK

Jika Anda belum mengaktifkan Sinyal Aplikasi di akun ini, Anda harus memberikan izin yang diperlukan Sinyal Aplikasi untuk menemukan layanan Anda. Lihat Aktifkan Sinyal Aplikasi di akun Anda.

  1. Aktifkan Sinyal Aplikasi untuk aplikasi Anda.

    import { aws_applicationsignals as applicationsignals } from 'aws-cdk-lib'; const cfnDiscovery = new applicationsignals.CfnDiscovery(this, 'ApplicationSignalsServiceRole', { } );

    CloudFormation Sumber daya Discovery memberikan izin berikut kepada Sinyal Aplikasi:

    • xray:GetServiceGraph

    • logs:StartQuery

    • logs:GetQueryResults

    • cloudwatch:GetMetricData

    • cloudwatch:ListMetrics

    • tag:GetResources

    Untuk informasi selengkapnya tentang peran ini, silakan lihat Izin peran terkait layanan untuk Sinyal Aplikasi CloudWatch .

  2. Instal amazon-cloudwatch-observability add-on.

    1. Buat peran IAM dengan CloudWatchAgentServerPolicy dan OIDC yang terkait dengan cluster.

      const cloudwatchRole = new Role(this, 'CloudWatchAgentAddOnRole', { assumedBy: new OpenIdConnectPrincipal(cluster.openIdConnectProvider), managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('CloudWatchAgentServerPolicy')], });
  3. Instal add-on dengan peran IAM yang dibuat di atas.

    new CfnAddon(this, 'CloudWatchAddon', { addonName: 'amazon-cloudwatch-observability', clusterName: cluster.clusterName, serviceAccountRoleArn: cloudwatchRole.roleArn });
  4. Tambahkan salah satu dari berikut ini ke PodTemplate bagian file manifes beban kerja Anda.

    Bahasa File

    Java

    instrumentation.opentelemetry.io/inject-java: “benar”

    Python

    instrumentation.opentelemetry.io/inject-python: “benar”

    .Net

    instrumentation.opentelemetry.io/inject-dotnet: “benar”

    Node.js

    instrumentation.opentelemetry.io/inject-nodejs: “benar”

    const deployment = { apiVersion: "apps/v1", kind: "Deployment", metadata: { name: "sample-app" }, spec: { replicas: 3, selector: { matchLabels: { "app": "sample-app" } }, template: { metadata: { labels: { "app": "sample-app" }, annotations: { "instrumentation.opentelemetry.io/inject-$LANG": "true" } }, spec: {...}, }, }, }; cluster.addManifest('sample-app', deployment)