Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menerapkan CloudWatch agen untuk mengumpulkan metrik tingkat EC2 instans di Amazon ECS
Untuk menerapkan CloudWatch agen untuk mengumpulkan metrik tingkat instans dari ECS kluster Amazon yang di-host pada EC2 instance, gunakan penyiapan mulai cepat dengan konfigurasi default, atau instal agen secara manual untuk dapat menyesuaikannya.
Kedua metode tersebut mengharuskan Anda sudah memiliki setidaknya satu ECS kluster Amazon yang disebarkan dengan tipe EC2 peluncuran dan kontinen CloudWatch agen memiliki akses ke Amazon EC2 Instance Metadata Service (). IMDS Untuk informasi selengkapnyaIMDS, lihat Metadata instans dan data pengguna.
Metode ini juga mengasumsikan bahwa Anda telah AWS CLI menginstal. Selain itu, untuk menjalankan perintah dalam prosedur berikut, Anda harus masuk ke akun atau peran yang memiliki FullAccess kebijakan IAMFullAccessdan Amazon ECS _.
Pengaturan cepat menggunakan AWS CloudFormation
Untuk menggunakan pengaturan cepat, masukkan perintah berikut untuk digunakan AWS CloudFormation untuk menginstal agen. Ganti cluster-name
and cluster-region
dengan nama dan Wilayah ECS cluster Amazon Anda.
Perintah ini menciptakan IAM peran CWAgentECSTaskRoledan CWAgentECSExecutionRole. Jika peran-peran ini sudah ada di akun Anda, gunakan ParameterKey=CreateIAMRoles,ParameterValue=False
alih-alih ParameterKey=CreateIAMRoles,ParameterValue=True
saat Anda memasukkan perintah. Jika tidak, maka perintah akan gagal.
ClusterName=
cluster-name
Region=cluster-region
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cloudformation-quickstart/cwagent-ecs-instance-metric-cfn.json aws cloudformation create-stack --stack-name CWAgentECS-${ClusterName}-${Region} \ --template-body file://cwagent-ecs-instance-metric-cfn.json \ --parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \ ParameterKey=CreateIAMRoles,ParameterValue=True \ --capabilities CAPABILITY_NAMED_IAM \ --region ${Region}
(Alternatif) Menggunakan IAM peran Anda sendiri
Jika Anda ingin menggunakan peran ECS tugas kustom Anda sendiri dan peran eksekusi ECS tugas alih-alih CWAgentECSExecutionRoleperan CWAgentECSTaskRoledan, pertama-tama pastikan bahwa peran yang akan digunakan sebagai peran ECS tugas telah CloudWatchAgentServerPolicydilampirkan. Juga, pastikan bahwa peran yang akan digunakan sebagai peran pelaksanaan ECS tugas memiliki mazonECSTask ExecutionRolePolicy kebijakan CloudWatchAgentServerPolicydan A yang dilampirkan. Kemudian masukkan perintah berikut. Dengan perintah, ganti task-role-arn
dengan peran ECS tugas khusus Anda, dan ganti ARN execution-role-arn
dengan peran ARN eksekusi ECS tugas kustom Anda.
ClusterName=
cluster-name
Region=cluster-region
TaskRoleArn=task-role-arn
ExecutionRoleArn=execution-role-arn
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cloudformation-quickstart/cwagent-ecs-instance-metric-cfn.json aws cloudformation create-stack --stack-name CWAgentECS-${ClusterName}-${Region} \ --template-body file://cwagent-ecs-instance-metric-cfn.json \ --parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \ ParameterKey=TaskRoleArn,ParameterValue=${TaskRoleArn} \ ParameterKey=ExecutionRoleArn,ParameterValue=${ExecutionRoleArn} \ --capabilities CAPABILITY_NAMED_IAM \ --region ${Region}
Pemecahan masalah pengaturan cepat
Untuk memeriksa status AWS CloudFormation tumpukan, masukkan perintah berikut.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation describe-stacks --stack-name CWAgentECS-$ClusterName-$Region --region $Region
Jika Anda melihat status dari StackStatus
bukan CREATE_COMPLETE
atau CREATE_IN_PROGRESS
, maka Anda harus memeriksa peristiwa tumpukan untuk menemukan kesalahan. Masukkan perintah berikut.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation describe-stack-events --stack-name CWAgentECS-$ClusterName-$Region --region $Region
Untuk memeriksa status dari layanan daemon cwagent
, Anda harus memasukkan perintah berikut. Dalam outputnya, Anda akan melihat bahwa runningCount
sama dengan desiredCount
dalam bagian deployment
. Jika tidak sama, periksa bagian failures
yang ada di output tersebut.
ClusterName=
cluster-name
Region=cluster-region
aws ecs describe-services --services cwagent-daemon-service --cluster $ClusterName --region $Region
Anda juga dapat menggunakan konsol CloudWatch Log untuk memeriksa log agen. Cari grup log /ecs/ ecs-cwagent-daemon-service.
Menghapus AWS CloudFormation tumpukan untuk agen CloudWatch
Jika Anda perlu menghapus AWS CloudFormation tumpukan, masukkan perintah berikut.
ClusterName=
cluster-name
Region=cluster-region
aws cloudformation delete-stack --stack-name CWAgentECS-${ClusterName}-${Region} --region ${Region}
Konfigurasi manual dan kustom
Ikuti langkah-langkah di bagian ini untuk menerapkan CloudWatch agen secara manual guna mengumpulkan metrik tingkat instans dari kluster ECS Amazon yang dihosting pada instans. EC2
IAMPeran dan kebijakan yang diperlukan
Diperlukan dua IAM peran. Anda harus membuat dua peran ini jika belum ada. Untuk informasi selengkapnya tentang peran ini, lihat IAMperan untuk Tugas dan Peran Eksekusi ECS Tugas Amazon.
-
Peran ECS tugas, yang digunakan oleh CloudWatch agen untuk mempublikasikan metrik. Jika peran ini sudah ada, maka Anda harus memastikan bahwa peran tersebut melampirkan kebijakan
CloudWatchAgentServerPolicy
. -
Peran eksekusi ECS tugas, yang digunakan oleh ECS agen Amazon untuk meluncurkan CloudWatch agen. Jika peran ini sudah ada, maka Anda harus memastikan bahwa peran tersebut melampirkan kebijakan
AmazonECSTaskExecutionRolePolicy
danCloudWatchAgentServerPolicy
.
Jika Anda belum memiliki peran-peran ini, maka Anda dapat menggunakan perintah-perintah berikut untuk membuat dan melampirkan kebijakan yang diperlukan. Perintah pertama ini menciptakan peran ECS tugas.
aws iam create-role --role-name CWAgentECSTaskRole \ --assume-role-policy-document "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"\",\"Effect\": \"Allow\",\"Principal\": {\"Service\": \"ecs-tasks.amazonaws.com\"},\"Action\": \"sts:AssumeRole\"}]}"
Setelah Anda memasukkan perintah sebelumnya, perhatikan nilai Arn
dari output perintah sebagai "TaskRoleArn”. Anda perlu menggunakannya nanti saat membuat definisi tugas. Kemudian masukkan perintah berikut untuk melampirkan kebijakan-kebijakan yang diperlukan.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --role-name CWAgentECSTaskRole
Perintah berikutnya ini menciptakan peran eksekusi ECS tugas.
aws iam create-role --role-name CWAgentECSExecutionRole \ --assume-role-policy-document "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Sid\": \"\",\"Effect\": \"Allow\",\"Principal\": {\"Service\": \"ecs-tasks.amazonaws.com\"},\"Action\": \"sts:AssumeRole\"}]}"
Setelah Anda memasukkan perintah sebelumnya, perhatikan nilai Arn
dari output perintah sebagai "ExecutionRoleArn”. Anda harus menggunakannya nanti saat Anda membuat penetapan tugas. Kemudian masukkan perintah-perintah berikut untuk melampirkan kebijakan-kebijakan yang diperlukan.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \ --role-name CWAgentECSExecutionRole aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy \ --role-name CWAgentECSExecutionRole
Membuat penetapan tugas dan meluncurkan layanan daemon
Buat definisi tugas dan gunakan untuk meluncurkan CloudWatch agen sebagai layanan daemon. Untuk membuat definisi tugas, masukkan perintah berikut. Pada baris pertama, ganti placeholder dengan nilai aktual untuk penerapan Anda. logs-region
adalah Wilayah tempat CloudWatch Log berada, dan cluster-region
adalah Wilayah tempat klaster Anda berada. task-role-arn
adalah Arn dari peran ECS tugas yang Anda gunakan, dan execution-role-arn
adalah Arn dari peran eksekusi ECS tugas.
TaskRoleArn=
task-role-arn
ExecutionRoleArn=execution-role-arn
AWSLogsRegion=logs-region
Region=cluster-region
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cwagent-ecs-instance-metric.json \ | sed "s|{{task-role-arn}}|${TaskRoleArn}|;s|{{execution-role-arn}}|${ExecutionRoleArn}|;s|{{awslogs-region}}|${AWSLogsRegion}|" \ | xargs -0 aws ecs register-task-definition --region ${Region} --cli-input-json
Kemudian jalankan perintah berikut untuk meluncurkan layanan daemon. Ganti cluster-name
and cluster-region
dengan nama dan Wilayah ECS cluster Amazon Anda.
penting
Hapus semua strategi penyedia kapasitas sebelum Anda menjalankan perintah ini. Jika tidak, perintah tidak akan berfungsi.
ClusterName=
cluster-name
Region=cluster-region
aws ecs create-service \ --cluster ${ClusterName} \ --service-name cwagent-daemon-service \ --task-definition ecs-cwagent-daemon-service \ --scheduling-strategy DAEMON \ --region ${Region}
Jika Anda melihat pesan kesalahan ini, An error occurred
(InvalidParameterException) when calling the CreateService operation: Creation of
service was not idempotent
, maka Anda telah membuat sebuah layanan daemon bernama cwagent-daemon-service
. Anda harus menghapus layanan yang pertama dengan menggunakan perintah berikut sebagai contohnya.
ClusterName=
cluster-name
Region=cluster-region
aws ecs delete-service \ --cluster ${ClusterName} \ --service cwagent-daemon-service \ --region ${Region} \ --force
(Opsional) Konfigurasi lanjutan
Secara opsional, Anda dapat menggunakan SSM untuk menentukan opsi konfigurasi lain untuk CloudWatch agen di ECS kluster Amazon Anda yang dihosting pada EC2 instance. Opsi-opsi ini adalah sebagai berikut:
-
metrics_collection_interval
— Seberapa sering dalam hitungan detik CloudWatch agen mengumpulkan metrik. Bawaannya adalah 60. Rentangnya adalah 1–172.000. -
endpoint_override
– (Opsional) Menentukan sebuah titik akhir berbeda yang akan menerima kiriman log. Anda mungkin ingin melakukan ini jika Anda memublikasikan dari klaster di a VPC dan Anda ingin data log masuk ke VPC titik akhir.Nilai
endpoint_override
harus berupa string yang merupakanURL. -
force_flush_interval
– Menentukan lamanya waktu maksimum log tetap berada dalam buffer memori sebelum dikirim ke server, dalam satuan detik. Apa pun pengaturan yang Anda tetapkan untuk bidang ini, jika ukuran log dalam penyangga mencapai 1 MB, log akan segera dikirim ke server saat itu juga. Nilai bawaannya adalah 5 detik. -
region
— Secara default, agen menerbitkan metrik ke Wilayah yang sama di mana instans ECS penampung Amazon berada. Untuk melakukan penggantian atas ini, Anda dapat menentukan Wilayah yang berbeda di sini. Misalnya,"region" : "us-east-1"
Berikut ini adalah sebuah contoh konfigurasi yang disesuaikan:
{ "agent": { "region": "us-east-1" }, "logs": { "metrics_collected": { "ecs": { "metrics_collection_interval": 30 } }, "force_flush_interval": 5 } }
Untuk menyesuaikan konfigurasi CloudWatch agen Anda di ECS kontainer Amazon
-
Pastikan mazonSSMRead OnlyAccess kebijakan A dilampirkan ke peran Eksekusi ECS Tugas Amazon Anda. Untuk melakukan hal itu, Anda harus memasukkan perintah berikut. Contoh ini mengasumsikan bahwa peran Eksekusi ECS Tugas Amazon Anda adalahCWAgentECSExecutionRole. Jika Anda menggunakan peran yang berbeda, maka Anda harus mengganti nama peran itu dengan perintah berikut.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess \ --role-name CWAgentECSExecutionRole
-
Buat file konfigurasi kustom yang serupa dengan contoh sebelumnya. Beri nama file ini dengan nama
/tmp/ecs-cwagent-daemon-config.json
. -
Eksekusi perintah berikut untuk memasukkan konfigurasi ini ke dalam Parameter Store. Ganti
cluster-region
dengan Wilayah ECS cluster Amazon Anda. Untuk menjalankan perintah ini, Anda harus login ke pengguna atau peran yang memiliki kebijakan mazonSSMFull Akses.Region=
cluster-region
aws ssm put-parameter \ --name "ecs-cwagent-daemon-service" \ --type "String" \ --value "`cat /tmp/ecs-cwagent-daemon-config.json`" \ --region $Region -
Unduh file penetapan tugas ke file lokal, misalnya
/tmp/cwagent-ecs-instance-metric.json
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/daemon-service/cwagent-ecs-instance-metric/cwagent-ecs-instance-metric.json -o /tmp/cwagent-ecs-instance-metric.json
-
Ubah file penetapan tugas. Hapus bagian berikut:
"environment": [ { "name": "USE_DEFAULT_CONFIG", "value": "True" } ],
Ganti bagian tersebut dengan hal berikut ini:
"secrets": [ { "name": "CW_CONFIG_CONTENT", "valueFrom": "ecs-cwagent-daemon-service" } ],
-
Mulai ulang agen sebagai sebuah layanan daemon dengan mengikuti langkah-langkah berikut:
-
Jalankan perintah berikut.
TaskRoleArn=
task-role-arn
ExecutionRoleArn=execution-role-arn
AWSLogsRegion=logs-region
Region=cluster-region
cat /tmp/cwagent-ecs-instance-metric.json \ | sed "s|{{task-role-arn}}|${TaskRoleArn}|;s|{{execution-role-arn}}|${ExecutionRoleArn}|;s|{{awslogs-region}}|${AWSLogsRegion}|" \ | xargs -0 aws ecs register-task-definition --region ${Region} --cli-input-json -
Jalankan perintah berikut untuk meluncurkan layanan daemon. Ganti
cluster-name
andcluster-region
dengan nama dan Wilayah ECS cluster Amazon Anda.ClusterName=
cluster-name
Region=cluster-region
aws ecs create-service \ --cluster ${ClusterName} \ --service-name cwagent-daemon-service \ --task-definition ecs-cwagent-daemon-service \ --scheduling-strategy DAEMON \ --region ${Region}Jika Anda melihat pesan kesalahan ini,
An error occurred (InvalidParameterException) when calling the CreateService operation: Creation of service was not idempotent
, maka Anda telah membuat sebuah layanan daemon bernamacwagent-daemon-service
. Anda harus menghapus layanan yang pertama dengan menggunakan perintah berikut sebagai contohnya.ClusterName=
cluster-name
Region=Region
aws ecs delete-service \ --cluster ${ClusterName} \ --service cwagent-daemon-service \ --region ${Region} \ --force
-