Menggunakan driver log awslogs - Amazon Elastic Container Service

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 dalam dokumentasi Docker.

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. ecsTaskExecutionRoleIni 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 dan awslogs-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 dan awslogs-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 ke stdout dan stderr 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 merekomendasikan menggunakan 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, opsi max-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.