Menggunakan CloudWatch agen untuk mengirim log format metrik yang disematkan - Amazon CloudWatch

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

Menggunakan CloudWatch agen untuk mengirim log format metrik yang disematkan

Untuk menggunakan metode ini, pertama-tama instal CloudWatch agen untuk layanan yang ingin Anda kirimi log format metrik tertanam, dan kemudian Anda dapat mulai mengirim acara.

CloudWatch Agen harus versi 1.230621.0 atau yang lebih baru.

catatan

Anda tidak perlu menginstal CloudWatch agen untuk mengirim log dari fungsi Lambda.

Batas waktu fungsi Lambda tidak akan ditangani secara otomatis. Hal ini berarti bahwa jika fungsi Anda mengalami habis waktu sebelum metrik terkuras, maka metrik untuk invokasi tersebut tidak akan ditangkap.

Memasang CloudWatch agen

Instal CloudWatch agen untuk setiap layanan yang mengirim log format metrik tertanam.

Memasang CloudWatch agen di EC2

Pertama, instal CloudWatch agen pada instance. Untuk informasi selengkapnya, lihat Instalasi CloudWatch agen.

Setelah Anda selesai melakukan instalasi agen tersebut, konfigurasi agen untuk mendengarkan di port UDP atau TCP untuk log format metrik tersemat. Berikut ini adalah contoh konfigurasi yang mendengarkan pada soket bawaan tcp:25888. Untuk informasi selengkapnya tentang konfigurasi agen, silakan lihat Buat atau edit file konfigurasi CloudWatch agen secara manual.

{ "logs": { "metrics_collected": { "emf": { } } } }

Menginstal CloudWatch agen di Amazon ECS

Cara termudah untuk menyebarkan CloudWatch agen di Amazon ECS adalah menjalankannya sebagai sespan, mendefinisikannya dalam definisi tugas yang sama dengan aplikasi Anda.

Buat file konfigurasi agen

Buat file konfigurasi CloudWatch agen Anda secara lokal. Dalam contoh ini, jalur file relatif adalah amazon-cloudwatch-agent.json.

Untuk informasi selengkapnya tentang konfigurasi agen, silakan lihat Buat atau edit file konfigurasi CloudWatch agen secara manual.

{ "logs": { "metrics_collected": { "emf": { } } } }

Mendorong konfigurasi ke SSM Parameter Store

Masukkan perintah berikut untuk mendorong file konfigurasi CloudWatch agen ke Parameter Store AWS Systems Manager (SSM).

aws ssm put-parameter \ --name "cwagentconfig" \ --type "String" \ --value "`cat amazon-cloudwatch-agent.json`" \ --region "{{region}}"

Mengonfigurasi definisi tugas

Konfigurasikan definisi tugas Anda untuk menggunakan CloudWatch Agen dan mengekspos port TCP atau UDP. Definisi tugas sampel sederhana yang harus Anda gunakan bergantung pada mode jaringan Anda.

Perhatikan bahwa webapp menentukan variabel lingkungan AWS_EMF_AGENT_ENDPOINT. Hal ini digunakan oleh pustaka dan harus menunjuk titik akhir yang didengar oleh agen. Selain itu, cwagent menentukan CW_CONFIG_CONTENT sebagai parameter "valueFrom" yang menunjuk ke konfigurasi SSM yang Anda buat pada langkah sebelumnya.

Bagian ini memuat satu contoh untuk mode jembatan dan satu contoh untuk mode host atau awsvpc. Untuk contoh selengkapnya tentang cara mengonfigurasi CloudWatch agen di Amazon ECS, lihat repositori sampel Github

Berikut ini adalah contoh untuk mode jembatan. Ketika mengaktifkan jaringan mode jembatan, agen harus ditautkan ke aplikasi Anda dengan menggunakan parameter links dan harus ditangani dengan menggunakan nama kontainer.

{ "containerDefinitions": [ { "name": "webapp", "links": [ "cwagent" ], "image": "my-org/web-app:latest", "memory": 256, "cpu": 256, "environment": [{ "name": "AWS_EMF_AGENT_ENDPOINT", "value": "tcp://cwagent:25888" }], }, { "name": "cwagent", "mountPoints": [], "image": "public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest", "memory": 256, "cpu": 256, "portMappings": [{ "protocol": "tcp", "containerPort": 25888 }], "environment": [{ "name": "CW_CONFIG_CONTENT", "valueFrom": "cwagentconfig" }], } ], }

Berikut ini adalah contoh untuk mode host atau mode awsvpc. Ketika menjalankan mode jaringan ini, agen dapat dialamatkan ke localhost.

{ "containerDefinitions": [ { "name": "webapp", "image": "my-org/web-app:latest", "memory": 256, "cpu": 256, "environment": [{ "name": "AWS_EMF_AGENT_ENDPOINT", "value": "tcp://127.0.0.1:25888" }], }, { "name": "cwagent", "mountPoints": [], "image": "public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest", "memory": 256, "cpu": 256, "portMappings": [{ "protocol": "tcp", "containerPort": 25888 }], "environment": [{ "name": "CW_CONFIG_CONTENT", "valueFrom": "cwagentconfig" }], } ], }
catatan

Dalam mode awsvpc, Anda harus memberikan alamat IP publik ke VPC (hanya Fargate), mengatur gateway NAT, atau mengatur titik akhir VPC Log. CloudWatch Untuk informasi selengkapnya tentang menyiapkan sebuah NAT, silakan lihat NAT Gateway. Untuk informasi selengkapnya tentang menyiapkan titik akhir VPC CloudWatch Log, lihat Menggunakan CloudWatch Log dengan Titik Akhir VPC Antarmuka.

Berikut ini adalah contoh tentang cara menetapkan alamat IP publik untuk sebuah tugas yang menggunakan jenis peluncuran Fargate.

aws ecs run-task \ --cluster {{cluster-name}} \ --task-definition cwagent-fargate \ --region {{region}} \ --launch-type FARGATE \ --network-configuration "awsvpcConfiguration={subnets=[{{subnetId}}],securityGroups=[{{sgId}}],assignPublicIp=ENABLED}"

Memastikan izin

Memastikan peran IAM yang melaksanakan tugas Anda memiliki izin untuk membaca dari SSM Parameter Store. Anda dapat menambahkan izin ini dengan melampirkan kebijakan AmazonSSM ReadOnlyAccess. Untuk melakukan hal itu, masukkan perintah berikut.

aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess \ --role-name CWAgentECSExecutionRole

Menginstal CloudWatch agen di Amazon EKS

Bagian dari proses ini dapat dilewati jika Anda telah menginstal CloudWatch Wawasan Kontainer di cluster ini.

Izin

Jika Anda belum melakukan instalasi Wawasan Kontainer, maka pastikan terlebih dahulu bahwa simpul Amazon EKS Anda memiliki izin IAM yang sesuai. Mereka harus memiliki CloudWatchAgentServerPolicy terlampir. Untuk informasi selengkapnya, lihat Memverifikasi prasyarat.

Buat ConfigMap

Buat ConfigMap untuk agen. Mereka ConfigMap juga memberitahu agen untuk mendengarkan pada port TCP atau UDP. Gunakan yang berikut ini ConfigMap.

# cwagent-emf-configmap.yaml apiVersion: v1 data: # Any changes here must not break the JSON format cwagentconfig.json: | { "agent": { "omit_hostname": true }, "logs": { "metrics_collected": { "emf": { } } } } kind: ConfigMap metadata: name: cwagentemfconfig namespace: default

Jika Anda telah menginstal Container Insights, tambahkan "emf": { } baris berikut ke baris yang ada ConfigMap.

Terapkan ConfigMap

Masukkan perintah berikut untuk menerapkan ConfigMap.

kubectl apply -f cwagent-emf-configmap.yaml

Terapkan agen

Untuk menerapkan CloudWatch agen sebagai sespan, tambahkan agen ke definisi pod Anda, seperti pada contoh berikut.

apiVersion: v1 kind: Pod metadata: name: myapp namespace: default spec: containers: # Your container definitions go here - name: web-app image: my-org/web-app:latest # CloudWatch Agent configuration - name: cloudwatch-agent image: public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest imagePullPolicy: Always resources: limits: cpu: 200m memory: 100Mi requests: cpu: 200m memory: 100Mi volumeMounts: - name: cwagentconfig mountPath: /etc/cwagentconfig ports: # this should match the port configured in the ConfigMap - protocol: TCP hostPort: 25888 containerPort: 25888 volumes: - name: cwagentconfig configMap: name: cwagentemfconfig

Menggunakan CloudWatch agen untuk mengirim log format metrik yang disematkan

Ketika Anda telah menginstal dan menjalankan CloudWatch agen, Anda dapat mengirim log format metrik yang disematkan melalui TCP atau UDP. Ada dua persyaratan ketika mengirimkan log melalui agen:

  • Log harus memuat sebuah kunci LogGroupName yang memberi tahu agen tentang grup log yang harus digunakan.

  • Setiap peristiwa log harus berada dalam satu baris. Dengan kata lain, sebuah peristiwa log tidak dapat berisi karakter baris baru (\n).

Peristiwa log juga harus mematuhi spesifikasi format metrik tersemat. Untuk informasi selengkapnya, lihat Spesifikasi: Format metrik tersemat .

Jika Anda berencana untuk membuat alarm-alarm pada metrik yang telah dibuat dengan menggunakan format metrik tersemat, silakan lihat Menyetel alarm pada metrik-metrik yang dibuat dengan format metrik tersemat untuk rekomendasinya.

Berikut ini adalah contoh pengiriman peristiwa log secara manual dari bash shell Linux. Sebagai gantinya, Anda dapat menggunakan antarmuka soket UDP yang disediakan oleh bahasa pemrograman yang Anda kehendaki.

echo '{"_aws":{"Timestamp":1574109732004,"LogGroupName":"Foo","CloudWatchMetrics":[{"Namespace":"MyApp","Dimensions":[["Operation"]],"Metrics":[{"Name":"ProcessingLatency","Unit":"Milliseconds","StorageResolution":60}]}]},"Operation":"Aggregator","ProcessingLatency":100}' \ > /dev/udp/0.0.0.0/25888
catatan

Dengan format metrik tersemat, Anda dapat melacak pemrosesan log EMF berdasarkan metrik yang diterbitkan di ruang nama AWS/Logs akun Anda. Hal ini dapat digunakan untuk melacak pembuatan metrik yang gagal dari EMF, serta apakah kegagalan terjadi diakibatkan oleh penguraian atau validasi. Untuk detail selengkapnya lihat Pemantauan dengan CloudWatch metrik.