Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Aktifkan aplikasi Anda di Kubernetes
Aktif CloudWatch kan Sinyal Aplikasi di Kubernetes dengan menggunakan langkah-langkah pengaturan khusus yang dijelaskan di bagian ini.
Untuk aplikasi yang berjalan di Kubernetes, Anda menginstal dan mengkonfigurasi CloudWatch agen dan AWS Distro untuk diri Anda sendiri. OpenTelemetry Pada arsitektur ini yang diaktifkan dengan pengaturan Sinyal Aplikasi, Sinyal Aplikasi tidak secara otomatis menemukan nama layanan Anda atau klaster atau host tempat berjalannya. Anda harus menentukan nama-nama ini selama melakukan pengaturan kustom, dan nama yang Anda tentukan adalah apa yang akan ditampilkan pada dasbor Sinyal Aplikasi.
Persyaratan
Anda memiliki izin admininstrator pada cluster Kubernetes tempat Anda mengaktifkan Sinyal Aplikasi.
Anda harus AWS CLI menginstal di lingkungan tempat cluster Kubernetes Anda berjalan. Untuk informasi selengkapnya tentang menginstal AWS CLI, lihat Menginstal atau memperbarui versi terbaru dari AWS CLI.
Anda telah menginstal kubectl dan helm di terminal lokal Anda. Untuk informasi selengkapnya, lihat dokumentasi kubectl
dan Helm .
Langkah 1: Mengaktifkan Sinyal Aplikasi di akun Anda
Anda harus terlebih dahulu mengaktifkan Sinyal Aplikasi di akun Anda. Jika belum, lihatAktifkan Sinyal Aplikasi di akun Anda.
Langkah 2: Instal operator CloudWatch agen di cluster Anda
Menginstal operator CloudWatch agen menginstal operator, CloudWatch agen, dan instrumentasi otomatis lainnya ke dalam cluster Anda. Untuk melakukan hal itu, masukkan perintah berikut. Ganti $REGION dengan AWS wilayah Anda. Ganti $YOUR_CLUSTER_NAME dengan nama yang ingin Anda tampilkan untuk cluster Anda di dasbor Sinyal Aplikasi.
helm repo add aws-observability https://aws-observability.github.io/helm-charts helm install amazon-cloudwatch-operator aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch --create-namespace \ --set region=$REGION\ --set clusterName=$YOUR_CLUSTER_NAME
Untuk informasi lebih lanjut, lihat amazon-cloud
Langkah 3: Siapkan AWS kredensional untuk cluster Kubernetes Anda
penting
Jika cluster Kubernetes Anda di-host di Amazon EC2, Anda dapat melewati bagian ini dan melanjutkan ke. Langkah 4: Tambahkan anotasi
Jika cluster Kubernetes Anda di-host di lokasi, Anda harus menggunakan petunjuk di bagian ini untuk menambahkan AWS kredenSIAL ke lingkungan Kubernetes Anda.
Untuk mengatur izin untuk cluster Kubernetes lokal
Buat pengguna IAM yang akan digunakan untuk memberikan izin ke host lokal Anda:
Buka konsol IAM di https://console.aws.amazon.com/iam/
. Pilih Pengguna, Buat Pengguna.
Di Detail pengguna, untuk Nama pengguna, masukkan nama untuk pengguna IAM baru. Ini adalah nama login untuk AWS yang akan digunakan untuk mengotentikasi host Anda. Lalu pilih Selanjutnya
Pada halaman Tet apkan izin, di bawah opsi Izin, pilih Lamp irkan kebijakan secara langsung.
Dari daftar Kebijakan Izin, pilih CloudWatchAgentServerPolicy kebijakan yang akan ditambahkan ke pengguna Anda. Lalu pilih Selanjutnya.
Pada halaman T injau dan buat, pastikan Anda puas dengan nama pengguna dan CloudWatchAgentServerPolicy kebijakan tersebut ada di ringkasan Izin.
Pilih Buat pengguna
Buat dan ambil kunci AWS akses dan kunci rahasia Anda:
Di panel navigasi di konsol IAM, pilih Pengguna dan kemudian pilih nama pengguna pengguna yang Anda buat pada langkah sebelumnya.
Pada halaman pengguna, pilih tab Kreden sibilitas keamanan. Kemudian, di bagian tombol akses, pilih Buat kunci akses.
Untuk Buat kunci akses Langkah 1, pilih Command Line Interface (CLI).
Untuk Buat kunci akses Langkah 2, secara opsional masukkan tag dan kemudian pilih Ber ikutnya.
Untuk Buat kunci akses Langkah 3, pilih Unduh file.csv untuk menyimpan file.csv dengan kunci akses pengguna IAM dan kunci akses rahasia. Anda memerlukan informasi ini untuk langkah selanjutnya.
Pilih Selesai.
Konfigurasikan AWS kredensi Anda di host lokal dengan memasukkan perintah berikut. Ganti
ACCESS_KEY_IDdanSECRET_ACCESS_IDdengan kunci akses yang baru dibuat dan kunci akses rahasia dari file.csv yang Anda unduh pada langkah sebelumnya. Secara default, file kredensi disimpan di/home/user/.aws/credentials.$ aws configure --profile AmazonCloudWatchAgent AWS Access Key ID [None]:ACCESS_KEY_IDAWS Secret Access Key [None]:SECRET_ACCESS_IDDefault region name [None]:MY_REGIONDefault output format [None]: jsonEdit sumber daya khusus yang diinstal CloudWatch agen menggunakan bagan Helm untuk menambahkan rahasia AWS kredenSIAL yang baru dibuat.
kubectl edit amazoncloudwatchagent cloudwatch-agent -n amazon-cloudwatchSaat editor file Anda terbuka, pasang AWS kredenSIAL ke wadah CloudWatch agen dengan menambahkan konfigurasi berikut ke bagian atas penerapan. Ganti jalur
/home/dengan lokasi file AWS kredenSIAL lokal Anda.user/.aws/credentialsapiVersion: cloudwatch.aws.amazon.com/v1alpha1 kind: AmazonCloudWatchAgent metadata: name: cloudwatch-agent namespace: amazon-cloudwatch spec: volumeMounts: - mountPath: /rootfs volumeMounts: - name: aws-credentials mountPath: /root/.aws readOnly: true volumes: - hostPath: path: /home/user/.aws/credentials name: aws-credentials ---
Langkah 4: Tambahkan anotasi
catatan
Jika Anda mengaktifkan Sinyal Aplikasi untuk Node.js aplikasi dengan ESM, lewati langkah-langkah di bagian ini dan lihat sebagai Menyiapkan Node.js aplikasi dengan format modul ESM gantinya.
Langkah selanjutnya adalah instrumen aplikasi Anda untuk Sinyal Aplikasi dengan menambahkan anotasi khusus bahasa
Untuk menambahkan anotasi untuk Sinyal Aplikasi
-
Anda memiliki dua pilihan untuk keterangan:
Anotasi Beban Kerja secara otomatis membekali beban kerja tunggal dalam sebuah cluster.
Beri Keterangan Namespace secara otomatis melengkapi semua beban kerja yang di-deploy di namespace yang dipilih.
Pilih salah satu opsi tersebut, dan ikuti langkah-langkah yang sesuai.
Untuk membuat anotasi pada satu beban kerja, masukkan salah satu perintah berikut. Ganti
$WORKLOAD_TYPEdan$WORKLOAD_NAMEdengan nilai-nilai untuk beban kerja Anda.Untuk beban kerja Java:
kubectl patch$WORKLOAD_TYPE$WORKLOAD_NAME-p '{"spec": {"template": {"metadata": {"annotations": {"instrumentation.opentelemetry.io/inject-java": "true"}}}}}'Untuk beban kerja Python:
kubectl patch$WORKLOAD_TYPE$WORKLOAD_NAME-p '{"spec": {"template": {"metadata": {"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:
kubectl patch$WORKLOAD_TYPE$WORKLOAD_NAME-p '{"spec": {"template": {"metadata": {"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 tambahan berikut.instrumentation.opentelemetry.io/otel-dotnet-auto-runtime: "linux-musl-x64"Untuk Node.js beban kerja:
kubectl patch$WORKLOAD_TYPE$WORKLOAD_NAME-p '{"spec": {"template": {"metadata": {"annotations": {"instrumentation.opentelemetry.io/inject-nodejs": "true"}}}}}'
-
Untuk membuat anotasi semua beban kerja dalam namespace, masukkan masukkan salah satu perintah berikut. Ganti
$NAMESPACEdengan nama namespace Anda.Jika namespace menyertakan beban kerja Java, Python, dan .NET, tambahkan semua anotasi ke namespace.
Untuk beban kerja Java di namespace:
kubectl annotate ns$NAMESPACEinstrumentation.opentelemetry.io/inject-java=trueUntuk beban kerja Python di namespace:
kubectl annotate ns$NAMESPACEinstrumentation.opentelemetry.io/inject-python=trueUntuk aplikasi Python, ada konfigurasi tambahan yang diperlukan. Untuk informasi selengkapnya, lihat Aplikasi Python tidak dimulai setelah Sinyal Aplikasi diaktifkan.
-
Untuk beban kerja.NET di namespace:
kubectl annotate ns$NAMESPACEinstrumentation.opentelemetry.io/inject-dotnet=true -
Untuk Node.js beban kerja di namespace:
kubectl annotate ns$NAMESPACEinstrumentation.opentelemetry.io/inject-nodejs=true
Setelah menambahkan anotasi, mulai ulang semua pod di namespace dengan memasukkan perintah berikut:
kubectl rollout restart Ketika langkah-langkah sebelumnya selesai, di CloudWatch konsol, pilih Sinyal Aplikasi, Layanan. Ini membuka dasbor tempat Anda dapat melihat data yang dikumpulkan Sinyal Aplikasi. Mungkin diperlukan waktu beberapa menit hingga akhirnya data muncul.
Untuk informasi selengkapnya tentang tampilan Layanan, silakan lihat Memantau kondisi kesehatan operasional aplikasi Anda dengan Sinyal Aplikasi.
Menyiapkan Node.js aplikasi dengan format modul ESM
Kami menyediakan dukungan terbatas untuk Node.js aplikasi dengan format modul ESM. Lihat perinciannya di Keterbatasan yang diketahui tentang Node.js ESM.
Untuk format modul ESM, mengaktifkan Sinyal Aplikasi dengan membuat anotasi file manifes tidak berfungsi. Lewati prosedur sebelumnya dan lakukan hal berikut sebagai gantinya:
Untuk mengaktifkan Sinyal Aplikasi untuk Node.js aplikasi dengan ESM
Instal dependensi yang relevan ke Node.js aplikasi Anda untuk autoinstrumentasi:
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0Tambahkan 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"]Tambahkan variabel lingkungan
OTEL_RESOURCE_ATTRIBUTES_POD_NAME,,OTEL_RESOURCE_ATTRIBUTES_NODE_NAMEOTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_NAME,POD_NAMESPACEdanOTEL_RESOURCE_ATTRIBUTESke file yaml penerapan untuk aplikasi. Contoh: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 it 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)"Menyebarkan Node.js aplikasi ke cluster Kubernetes.
(Opsional) Langkah 5: Pantau kesehatan aplikasi Anda
Setelah mengaktifkan aplikasi di Kubernetes, Anda dapat memantau kesehatan aplikasi Anda. Lihat informasi yang lebih lengkap di Memantau kondisi kesehatan operasional aplikasi Anda dengan Sinyal Aplikasi.