Mengonfigurasi ECS log Amazon untuk throughput tinggi - Amazon Elastic Container Service

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

Mengonfigurasi ECS log Amazon untuk throughput tinggi

Saat Anda membuat definisi tugas, Anda dapat menentukan jumlah baris log yang disangga dalam memori dengan menentukan nilai dalam. log-driver-buffer-limit Untuk informasi selengkapnya, lihat Driver logging fluentd di dokumentasi Docker.

Gunakan opsi ini ketika ada throughput tinggi, karena Docker mungkin kehabisan memori buffer dan membuang pesan buffer, sehingga dapat menambahkan pesan baru.

Pertimbangkan hal berikut saat menggunakan FireLens untuk Amazon ECS dengan opsi batas buffer:

  • Opsi ini didukung pada jenis EC2 peluncuran Amazon dan jenis peluncuran Fargate dengan versi platform 1.4.0 atau yang lebih baru.

  • Opsi ini hanya valid ketika logDriver diatur keawsfirelens.

  • Batas buffer default adalah baris 1048576 log.

  • Batas buffer harus lebih besar dari atau sama dengan 0 dan kurang dari garis 536870912 log.

  • Jumlah maksimum memori yang digunakan untuk buffer ini adalah produk dari ukuran setiap baris log dan ukuran buffer. Misalnya, jika baris log aplikasi rata-rata 2 KiB, batas buffer 4096 akan menggunakan paling banyak 8 MiB. Jumlah total memori yang dialokasikan pada tingkat tugas harus lebih besar dari jumlah memori yang dialokasikan untuk semua wadah selain buffer memori driver log.

Ketika driver awsfirelens log ditentukan dalam definisi tugas, agen ECS penampung Amazon menyuntikkan variabel lingkungan berikut ke dalam wadah:

FLUENT_HOST

Alamat IP yang ditetapkan ke FireLens kontainer.

catatan

Jika Anda menggunakan tipe EC2 peluncuran dengan mode bridge jaringan, variabel FLUENT_HOST lingkungan dalam wadah aplikasi Anda dapat menjadi tidak akurat setelah restart wadah router FireLens log (wadah dengan firelensConfiguration objek dalam definisi kontainer). Ini karena FLUENT_HOST merupakan alamat IP dinamis dan dapat berubah setelah restart. Logging langsung dari wadah aplikasi ke alamat FLUENT_HOST IP dapat mulai gagal setelah alamat berubah. Untuk informasi selengkapnya tentang memulai ulang kontainer individual, lihat. Mulai ulang kontainer individual dalam ECS tugas Amazon dengan kebijakan restart kontainer

FLUENT_PORT

Port tempat protokol Fluent Forward mendengarkan.

Anda dapat menggunakan variabel FLUENT_HOST dan FLUENT_PORT lingkungan untuk log langsung ke router log dari kode alih-alih melaluistdout. Untuk informasi lebih lanjut, lihat fluent-logger-golangdi GitHub.

Berikut ini menunjukkan sintaks untuk menentukan. log-driver-buffer-limit Ganti my_service_ dengan nama layanan Anda:

{ "containerDefinitions": [ { "name": "my_service_log_router", "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:stable", "cpu": 0, "memoryReservation": 51, "portMappings": [], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "user": "0", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-aws-firelens-sidecar-container", "mode": "non-blocking", "awslogs-create-group": "true", "max-buffer-size": "25m", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "firelens" }, "secretOptions": [] }, "systemControls": [], "firelensConfiguration": { "type": "fluentbit" } }, { "essential": true, "image": "httpd", "name": "app", "logConfiguration": { "logDriver": "awsfirelens", "options": { "Name": "firehose", "region": "us-west-2", "delivery_stream": "my-stream", "log-driver-buffer-limit": "51200" } }, "dependsOn": [ { "containerName": "log_router", "condition": "START" } ], "memoryReservation": 100 } ] }