Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan driver log awslogs
Anda dapat mengonfigurasi kontainer dalam tugas Anda untuk mengirim informasi CloudWatch log ke Log. Jika Anda menggunakan tipe peluncuran Fargate untuk tugas Anda, Anda dapat melihat log dari kontainer Anda. Jika Anda menggunakan tipe peluncuran EC2, Anda dapat melihat log yang berbeda dari kontainer Anda di satu lokasi yang nyaman, dan ini mencegah log kontainer Anda mengambil ruang disk pada instance kontainer Anda.Topik ini membahas bagaimana Anda dapat mulai menggunakan driver awslogs
log dalam definisi tugas Anda.
catatan
Jenis informasi yang dicatat oleh kontainer dalam tugas Anda sebagian besar bergantung pada perintah ENTRYPOINT
mereka. Secara default, log yang diambil menunjukkan output perintah yang biasanya Anda lihat di terminal interaktif jika Anda menjalankan kontainer secara lokal, yang merupakan aliran STDOUT
dan STDERR
I/O. Driver awslogs
log hanya meneruskan log ini dari Docker ke CloudWatch Logs. Untuk informasi selengkapnya tentang cara log Docker diproses, termasuk cara alternatif untuk menangkap berbagai pengaliran atau data file, lihat Melihat log untuk kontainer atau layanan
Untuk mengirim log sistem dari instans penampung Amazon ECS Anda ke CloudWatch Log, lihat Memantau Kuota File Log dan CloudWatch Log di Panduan Pengguna Amazon CloudWatch Logs.
Mengaktifkan driver log awslogs untuk kontainer Anda
Jika Anda menggunakan tipe peluncuran Fargate untuk tugas Anda, Anda perlu menambahkan logConfiguration
parameter yang diperlukan ke definisi tugas Anda untuk mengaktifkan driver awslogs
log. Untuk informasi selengkapnya, lihat Menentukan konfigurasi log dalam ketentuan tugas Anda.
Jika Anda menggunakan tipe peluncuran EC2 untuk tugas Anda dan ingin mengaktifkan driver awslogs
log, instans penampung Amazon ECS Anda memerlukan setidaknya versi 1.9.0 dari agen penampung. Untuk informasi tentang cara memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihatMemperbarui agen kontainer Amazon ECS.
catatan
Jika Anda tidak menggunakan AMI yang dioptimalkan Amazon ECS (dengan setidaknya versi 1.9.0-1 ecs-init
paket) untuk instance container, Anda juga perlu menentukan bahwa driver awslogs
logging tersedia di instance container saat memulai agen dengan menggunakan variabel lingkungan berikut dalam file docker run pernyataan atau variabel lingkungan Anda. Untuk informasi selengkapnya, lihat Memasang agen kontainer Amazon ECS.
ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","
awslogs
"]
Instans penampung Amazon ECS Anda juga memerlukan logs:CreateLogStream
dan logs:PutLogEvents
izin pada peran IAM yang dapat digunakan untuk meluncurkan instans penampung. Jika Anda membuat peran instans penampung Amazon ECS sebelum dukungan driver awslogs
log diaktifkan di Amazon ECS, Anda mungkin perlu menambahkan izin ini. ecsTaskExecutionRole
Ini digunakan saat ditugaskan ke tugas dan kemungkinan berisi izin yang benar. Untuk informasi tentang peran eksekusi tugas, lihatPeran IAM eksekusi tugas Amazon ECS. Jika instance container Anda menggunakan kebijakan IAM terkelola untuk instance container, instance container Anda kemungkinan memiliki izin yang benar. Untuk informasi tentang kebijakan IAM terkelola untuk instance container, lihat. Peran IAM instans wadah Amazon ECS
Membuat grup log
Driver awslogs
log dapat mengirim aliran log ke grup log yang ada di CloudWatch Log atau membuat grup log baru atas nama Anda. AWS Management Console Ini menyediakan opsi konfigurasi otomatis, yang membuat grup log atas nama Anda menggunakan nama keluarga definisi tugas dengan ecs
sebagai awalan. Atau, Anda dapat secara manual menentukan opsi konfigurasi log Anda dan menentukan awslogs-create-group
opsi dengan nilaitrue
, yang membuat grup log atas nama Anda.
catatan
Untuk menggunakan awslogs-create-group
opsi untuk membuat grup log Anda, kebijakan peran IAM eksekusi tugas atau kebijakan peran instans EC2 harus menyertakan izin. logs:CreateLogGroup
Kode berikut menunjukkan cara mengatur awslogs-create-group
opsi.
{ "containerDefinitions": [ { "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "firelens-container", "awslogs-region": "us-west-2", "awslogs-create-group": "true", "awslogs-stream-prefix": "firelens" } } ] }
Menggunakan fitur autokonfigurasi untuk membuat grup log
Saat Anda mendaftarkan definisi tugas, di konsol Amazon ECS, Anda dapat mengizinkan Amazon ECS untuk mengonfigurasi log Anda secara otomatis. CloudWatch Melakukan hal ini menyebabkan grup log dibuat atas nama Anda menggunakan nama keluarga definisi tugas dengan ecs
awalan. Untuk informasi selengkapnya, lihat Membuat definisi tugas menggunakan konsol.
Opsi driver log awslogs yang tersedia
Driver awslogs
log mendukung opsi berikut dalam definisi tugas Amazon ECS. Untuk informasi selengkapnya, lihat Driver logging CloudWatch log
awslogs-create-group
-
Diperlukan: Tidak
Tentukan apakah Anda ingin grup log dibuat secara otomatis. Jika opsi ini tidak ditentukan, default-nya adalah
false
.catatan
Kebijakan IAM Anda harus menyertakan
logs:CreateLogGroup
izin sebelum Anda mencoba menggunakannyaawslogs-create-group
. awslogs-region
-
Diperlukan: Ya
Tentukan Wilayah AWS driver
awslogs
log untuk mengirim log Docker Anda. Anda dapat memilih untuk mengirim semua log Anda dari kluster di Wilayah yang berbeda ke satu wilayah di CloudWatch Log. Ini agar mereka semua terlihat di satu lokasi. Jika tidak, Anda dapat memisahkannya berdasarkan Wilayah untuk perincian lebih lanjut. Pastikan grup log yang ditentukan ada di Wilayah yang Anda tentukan dengan opsi ini. awslogs-group
-
Diperlukan: Ya
Pastikan untuk menentukan grup log tempat driver
awslogs
log mengirimkan aliran lognya. Untuk informasi selengkapnya, lihat Membuat grup log. awslogs-stream-prefix
-
Diperlukan: Ya, saat menggunakan tipe peluncuran Fargate. Opsional untuk tipe peluncuran EC2, diperlukan untuk jenis peluncuran Fargate.
Gunakan
awslogs-stream-prefix
opsi untuk mengaitkan aliran log dengan awalan yang ditentukan, nama penampung, dan ID tugas Amazon ECS tempat penampung tersebut berada. Jika Anda menentukan awalan dengan opsi ini, maka aliran log mengambil format berikut.prefix-name
/container-name
/ecs-task-id
Jika Anda tidak menentukan awalan dengan opsi ini, maka aliran log dinamai sesuai dengan ID penampung yang ditetapkan oleh daemon Docker pada instance container. Karena sulit untuk melacak log kembali ke wadah yang mengirimnya hanya dengan ID wadah Docker (yang hanya tersedia pada instance penampung), kami sarankan Anda menentukan awalan dengan opsi ini.
Untuk layanan Amazon ECS, Anda dapat menggunakan nama layanan sebagai awalan. Dengan melakukannya, Anda dapat melacak aliran log ke layanan tempat penampung milik, nama penampung yang mengirimnya, dan ID tugas yang menjadi milik penampung tersebut.
Anda harus menentukan awalan aliran agar log Anda muncul di panel Log saat menggunakan konsol Amazon ECS.
awslogs-datetime-format
-
Diperlukan: Tidak
Opsi ini mendefinisikan pola mulai multiline di Python format
strftime
. Pesan log terdiri dari baris yang cocok dengan pola dan baris berikut yang tidak cocok dengan pola. Baris yang cocok adalah pembatas antara pesan log.Salah satu contoh kasus penggunaan format ini adalah untuk penguraian output seperti buangan tumpukan, yang mungkin bisa tercatat dalam beberapa entri. Pola yang benar akan memungkinkannya ditangkap dalam satu entri.
Untuk informasi lebih lanjut, lihat awslogs-datetime-format
. Anda tidak dapat mengonfigurasi opsi
awslogs-datetime-format
danawslogs-multiline-pattern
opsi.catatan
Pencatatan multibaris melakukan penguraian dan pencocokan ekspresi reguler dari semua pesan log. Ini mungkin berdampak negatif pada performa pencatatan.
awslogs-multiline-pattern
-
Diperlukan: Tidak
Opsi ini mendefinisikan pola mulai multiline yang menggunakan ekspresi reguler. Pesan log terdiri dari baris yang cocok dengan pola dan baris berikut yang tidak cocok dengan pola. Baris yang cocok adalah pembatas antara pesan log.
Untuk informasi lebih lanjut, lihat awslogs-multiline-pattern
. Opsi ini diabaikan jika
awslogs-datetime-format
juga dikonfigurasi.Anda tidak dapat mengonfigurasi opsi
awslogs-datetime-format
danawslogs-multiline-pattern
opsi.catatan
Pencatatan multibaris melakukan penguraian dan pencocokan ekspresi reguler dari semua pesan log. Ini mungkin berdampak negatif pada performa pencatatan.
mode
-
Diperlukan: Tidak
Nilai yang valid:
non-blocking
|blocking
Nilai default:
blocking
Opsi ini mendefinisikan mode pengiriman pesan log dari wadah ke CloudWatch Log. Mode pengiriman yang Anda pilih memengaruhi ketersediaan aplikasi saat aliran log dari kontainer ke CloudWatch terputus.
Jika Anda menggunakan
blocking
mode default dan aliran log ke CloudWatch terganggu, panggilan dari kode kontainer untuk menulis kestdout
danstderr
aliran akan diblokir. Thread logging aplikasi akan diblokir sebagai hasilnya. Hal ini dapat menyebabkan aplikasi menjadi tidak responsif dan menyebabkan kegagalan pemeriksaan kesehatan kontainer.Jika Anda menggunakan
non-blocking
mode, log kontainer malah disimpan dalam buffer perantara dalam memori yang dikonfigurasi dengan opsi.max-buffer-size
Ini mencegah aplikasi menjadi tidak responsif ketika log tidak dapat dikirim ke CloudWatch. Kami merekomendasikanmenggunakan mode ini jika Anda ingin memastikan ketersediaan layanan dan baik-baik saja dengan beberapa kehilangan log. max-buffer-size
-
Diperlukan: Tidak
Nilai default:
1m
Saat
non-blocking
mode digunakan, opsimax-buffer-size
log mengontrol ukuran buffer yang digunakan untuk penyimpanan pesan perantara. Pastikan untuk menentukan ukuran buffer yang memadai berdasarkan aplikasi Anda. Ketika buffer terisi, log lebih lanjut tidak dapat disimpan. Log yang tidak dapat disimpan hilang.
Menentukan konfigurasi log dalam ketentuan tugas Anda
Sebelum kontainer Anda dapat mengirim log ke CloudWatch, Anda harus menentukan driver awslogs
log untuk kontainer dalam definisi tugas Anda. Bagian ini menjelaskan konfigurasi log untuk kontainer untuk menggunakan driver log awslogs
. Untuk informasi selengkapnya, lihat Membuat definisi tugas menggunakan konsol.
Definisi tugas JSON yang berikut memiliki logConfiguration
objek yang ditentukan untuk setiap kontainer. Salah satunya adalah untuk WordPress wadah yang mengirim log ke grup log yang dipanggilawslogs-wordpress
. Yang lainnya adalah untuk wadah MySQL yang mengirimkan log ke grup log yang dipanggil. awslogs-mysql
Kedua kontainer menggunakan prefiks pengaliran log awslogs-example
.
{ "containerDefinitions": [ { "name": "wordpress", "links": [ "mysql" ], "image": "wordpress", "essential": true, "portMappings": [ { "containerPort": 80, "hostPort": 80 } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "
awslogs-wordpress
", "awslogs-region": "us-west-2
", "awslogs-stream-prefix": "awslogs-example
" } }, "memory": 500, "cpu": 10 }, { "environment": [ { "name": "MYSQL_ROOT_PASSWORD", "value": "password" } ], "name": "mysql", "image": "mysql", "cpu": 10, "memory": 500, "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "awslogs-mysql
", "awslogs-region": "us-west-2
", "awslogs-stream-prefix": "awslogs-example
", "mode": "non-blocking", "max-buffer-size": "25m" } } } ], "family": "awslogs-example" }
Setelah Anda mendaftarkan definisi tugas dengan driver awslogs
log dalam konfigurasi log definisi kontainer, Anda dapat menjalankan tugas atau membuat layanan dengan definisi tugas tersebut untuk mulai mengirim CloudWatch log ke Log. Lihat informasi yang lebih lengkap di Jalankan aplikasi sebagai tugas Amazon ECS dan Membuat layanan menggunakan konsol.