Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Terapkan menggunakan AWS Cloud Development Kit (AWS CDK)
Langkah 1: Mengaktifkan Sinyal Aplikasi di akun Anda
Jika Anda belum mengaktifkan Sinyal Aplikasi di akun ini, Anda harus memberikan izin yang diperlukan Sinyal Aplikasi untuk menemukan layanan Anda. Untuk melakukan hal itu, lakukan hal berikut. Anda perlu melakukan ini sekali untuk akun Anda.
Untuk mengaktifkan Sinyal Aplikasi untuk aplikasi-aplikasi Anda
Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/
. Pada panel navigasi, silakan pilih Layanan.
Pilih Mulai menemukan Layanan Anda.
Pilih kotak centang kemudian pilih Mulai menemukan Layanan.
Menyelesaikan langkah ini untuk pertama kalinya di akun Anda akan membuat peran AWSServiceRoleForCloudWatchApplicationSignalsterkait layanan. Peran ini akan memberi Sinyal Aplikasi izin-izin berikut:
-
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 .
-
Langkah 2: Buat IAM peran
Anda harus membuat IAM peran. Jika Anda sudah membuat peran ini, Anda mungkin perlu menambahkan izin untuk itu.
-
ECSperan tugas- Kontainer menggunakan peran ini untuk menjalankan. Izin harus apa pun yang dibutuhkan aplikasi Anda, plus CloudWatchAgentServerPolicy.
Untuk informasi selengkapnya tentang membuat IAM peran, lihat Membuat IAM Peran.
Langkah 3: Instrumentasikan aplikasi Anda dengan CloudWatch agen di AWS CDK
Untuk mengaktifkan Sinyal Aplikasi untuk Amazon ECS menggunakan AWS CDK, ikuti langkah-langkah yang diuraikan di bawah ini. Cuplikan kode dalam dokumen ini disediakan di. TypeScript Untuk alternatif khusus bahasa lainnya, lihat Bahasa pemrograman yang didukung untuk agen cloudwatch AWS CDK
catatan
Dokumen ini memberikan ikhtisar proses penyiapan Sinyal Aplikasi menggunakan AWS CDK, lihat Langkah 4: Instrumentasikan aplikasi Anda dengan CloudWatch agen instruksi penyiapan khusus bahasa yang menentukan nilai untuk MOUNT_VOLUME
>, >, MOUNT_CONTAINER_PATH
INIT_CONTAINER_COMMAND
>, dan ENVIRONMENT_VARIABLES
Untuk instrumen aplikasi Anda dengan CloudWatch agen
Dalam definisi tugas aplikasi Anda, tentukan bind mount. Ganti
MOUNT_VOLUME
sesuai dengan bahasa yang digunakan aplikasi Anda. Misalnya digunakanopentelemetry-auto-instrumentation
di Jawa. Volume akan digunakan untuk berbagi file di seluruh kontainer pada langkah-langkah selanjutnya. Anda akan menggunakan bind mount ini nanti dalam prosedur ini:const taskDefinition = new ecs.FargateTaskDefinition(this, 'MyTaskDefinition', { ... volumes: [{ name:
MOUNT_VOLUME
, }] );Selanjutnya, Anda menambahkan CloudWatch agen. Ada dua metode yang mungkin untuk menggunakan CloudWatch agen tambahan: strategi sespan dan strategi daemon. Untuk informasi tentang pro dan kontra untuk setiap metode, lihat Gunakan pengaturan khusus untuk mengaktifkan Sinyal Aplikasi di Amazon ECS dan pilih metode terbaik untuk lingkungan Anda.
Strategi Sidecar - Tambahkan wadah baru yang dipanggil
ecs-cwagent
ke definisi tugas aplikasi Anda. Ganti$IMAGE
dengan jalur ke gambar CloudWatch kontainer terbaru di Amazon Elastic Container Registry. Untuk informasi selengkapnya, lihat cloudwatch-agentdi Amazon. ECR const cwAgentContainer = taskDefinition.addContainer('ecs-cwagent', { image: ecs.ContainerImage.fromRegistry("
$IMAGE
"), environment: { CW_CONFIG_CONTENT: '{"agent": {"debug": true}, "traces": {"traces_collected": {"application_signals": {"enabled": true}}}, "logs": {"metrics_collected": {"application_signals": {"enabled": true}}}}', }, logging: new ecs.AwsLogDriver({ streamPrefix: 'ecs', logGroup: new logs.LogGroup(this, 'CwAgentLogGroup', { logGroupName: '/ecs/ecs-cwagent', }), }), });Strategi Daemon — Buat layanan baru yang disebut
ecs-cwagent
di tumpukan Anda. Ganti$TASK_ROLE_ARN
and$EXECUTION_ROLE_ARN
dengan IAM peran yang Anda persiapkanLangkah 2: Buat IAM peran. Ganti$IMAGE
dengan jalur ke gambar CloudWatch kontainer terbaru di Amazon Elastic Container Registry. Untuk informasi selengkapnya, lihat cloudwatch-agentdi Amazon. ECR catatan
Layanan daemon mengekspos dua port pada host, dengan 4316 digunakan sebagai titik akhir untuk menerima metrik dan jejak dan 2000 sebagai titik akhir trace sampler. CloudWatch Pengaturan ini memungkinkan agen untuk mengumpulkan dan mengirimkan data telemetri dari semua tugas aplikasi yang berjalan di host. Pastikan port ini tidak digunakan oleh layanan lain di host untuk menghindari konflik.
const cwAgentTaskDefinition = new ecs.Ec2TaskDefinition(this, 'CwAgentDaemonTaskDef', { taskRole: "
$TASK_ROLE_ARN
", executionRole: "$EXECUTION_ROLE_ARN
", }); // Add the CloudWatch agent container const cwAgentContainer = cwAgentTaskDefinition.addContainer('ecs-cwagent', { image: ecs.ContainerImage.fromRegistry("$IMAGE
"), cpu: 128, memoryLimitMiB: 64, portMappings: [ { containerPort: 4316, hostPort: 4316, }, { containerPort: 2000, hostPort: 2000, }, ], logging: new ecs.AwsLogDriver({ streamPrefix: 'ecs', logGroup: new logs.LogGroup(this, 'CwAgentLogGroup', { logGroupName: '/ecs/ecs-cwagent-daemon', }), }), environment: { CW_CONFIG_CONTENT: '{"agent": {"debug": true}, "traces": {"traces_collected": {"application_signals": {"enabled": true}}}, "logs": {"metrics_collected": {"application_signals": {"enabled": true}}}}', }, }); // Add the CloudWatch agent service running as a daemon const cwAgentService = new ecs.Ec2Service(this, 'CwAgentDaemonService', { cluster, taskDefinition: cwAgentTaskDefinition, daemon: true, });
Tambahkan init container baru ke definisi tugas aplikasi Anda. Ganti
$IMAGE
dengan gambar terbaru dari repositori ECR gambar AWS Distro untuk OpenTelemetry Amazon. Ganti MOUNT_CONTAINER_PATH
andINIT_CONTAINER_COMMAND
sesuai dengan bahasa yang digunakan aplikasi Anda.Misalnya, dalam penggunaan Java
INIT_CONTAINER_COMMAND
=["cp", "/javaagent.jar", "/otel-auto-instrumentation/javaagent.jar"],MOUNT_CONTAINER_PATH
='/otel-auto-instrumentation'const initContainer = taskDefinition.addContainer('init', { image: ecs.ContainerImage.fromRegistry("
$IMAGE
"), essential: false, command:INIT_CONTAINER_COMMAND
}); initContainer.addMountPoints({ sourceVolume:MOUNT_VOLUME
, containerPath:MOUNT_CONTAINER_PATH
, readOnly: false });Tambahkan variabel lingkungan
ENVIRONMENT_VARIABLES
ke wadah aplikasi Anda sesuai dengan bahasa yang digunakan aplikasi Anda. Dan pasang volumenyaMOUNT_VOLUME
dalam wadah aplikasi.catatan
Untuk instruksi penyiapan khusus bahasa yang menentukan nilai untuk
MOUNT_VOLUME
>, >,MOUNT_CONTAINER_PATH
INIT_CONTAINER_COMMAND
>, danENVIRONMENT_VARIABLES
, lihat. Langkah 4: Instrumentasikan aplikasi Anda dengan CloudWatch agenBerikut adalah contohnya:
const appContainer = taskDefinition.addContainer('my-app', { ... environment: { ...
ENVIRONMENT_VARIABLES
}, }); appContainer.addMountPoints({ sourceVolume:MOUNT_VOLUME
, containerPath:MOUNT_CONTAINER_PATH
, readOnly: false });
Menyiapkan aplikasi Node.js dengan format ESM modul
Kami menyediakan dukungan terbatas untuk aplikasi Node.js dengan format ESM modul. Untuk detailnya, lihat Keterbatasan yang diketahui tentang Node.js dengan ESM.
Untuk format ESM modul, mengaktifkan Sinyal Aplikasi dengan menggunakan init
wadah untuk menyuntikkan instrumentasi Node.js SDK tidak berlaku. Lewati langkah 1 dan 3 dari prosedur sebelumnya, dan lakukan hal berikut sebagai gantinya.
Untuk mengaktifkan Sinyal Aplikasi untuk aplikasi Node.js dengan ESM
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
Pada langkah 4 pada prosedur sebelumnya, lepaskan pemasangan volume:
appContainer.addMountPoints({ sourceVolume: MOUNT_VOLUME, containerPath: MOUNT_CONTAINER_PATH, readOnly: false });
Dan atur variabel lingkungan
NODE_OPTIONS
menjadi--import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs
Langkah 4: Menyebarkan tumpukan yang diperbarui
Jalankan cdk synth
perintah di direktori utama aplikasi Anda. Untuk menyebarkan layanan di AWS akun Anda, jalankan cdk deploy
perintah di direktori utama aplikasi Anda.
Jika Anda menggunakan strategi sespan, Anda akan melihat satu layanan dibuat:
APPLICATION_SERVICE
adalah layanan aplikasi Anda. Ini mencakup tiga wadah berikut:init
— Wadah yang diperlukan untuk menginisialisasi Sinyal Aplikasi.ecs-cwagent
— Sebuah wadah yang menjalankan CloudWatch agen
— Ini adalah contoh wadah aplikasi dalam dokumentasi kami. Dalam beban kerja Anda yang sebenarnya, penampung khusus ini mungkin tidak ada atau mungkin diganti dengan kontainer layanan Anda sendiri.my-app
Jika Anda menggunakan strategi daemon, Anda akan melihat dua layanan yang dibuat:
CWAgentDaemonService
adalah layanan CloudWatch agen daemon.APPLICATION_SERVICE
adalah layanan aplikasi Anda. Ini mencakup dua wadah berikut:init
— Wadah yang diperlukan untuk menginisialisasi Sinyal Aplikasi.
— Ini adalah contoh wadah aplikasi dalam dokumentasi kami. Dalam beban kerja Anda yang sebenarnya, penampung khusus ini mungkin tidak ada atau mungkin diganti dengan kontainer layanan Anda sendiri.my-app