Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menyebarkan Fluent Bit di Amazon Windows container ECS
Fluent Bit adalah prosesor log dan router yang cepat dan fleksibel yang didukung oleh berbagai sistem operasi. Ini dapat digunakan untuk merutekan log ke berbagai AWS tujuan seperti Amazon CloudWatch Log, Firehose Amazon S3, dan Amazon Service. OpenSearch Fluent Bit mendukung solusi mitra umum seperti Datadog, Splunk
Citra AWS untuk Fluent Bit untuk tersedia di Amazon ECR di Galeri ECR Publik Amazon dan dalam ECR repositori Amazon di sebagian besar Wilayah untuk ketersediaan tinggi. Untuk informasi selengkapnya, silakan lihat
aws-for-fluent-bit
Tutorial ini memandu Anda melalui cara menerapkan container Fluent Bit pada instance Windows mereka yang berjalan di Amazon ECS untuk mengalirkan log yang dihasilkan oleh tugas Windows ke Amazon CloudWatch untuk pencatatan terpusat.
Tutorial ini menggunakan pendekatan berikut:
-
Fluent Bit berjalan sebagai layanan dengan strategi penjadwalan Daemon. Strategi ini memastikan bahwa satu instance Fluent Bit selalu berjalan pada instance container di cluster.
-
Mendengarkan pada port 24224 menggunakan plug-in input forward.
-
Ekspos port 24224 ke host sehingga runtime docker dapat mengirim log ke Fluent Bit menggunakan port yang terbuka ini.
-
Memiliki konfigurasi yang memungkinkan Fluent Bit untuk mengirim catatan log ke tujuan tertentu.
-
-
Luncurkan semua wadah ECS tugas Amazon lainnya menggunakan driver logging lancar. Untuk informasi selengkapnya, lihat Driver pencatatan fluentd di situs
web dokumentasi Docker. -
Docker terhubung ke TCP soket 24224 di localhost di dalam namespace host.
-
ECSAgen Amazon menambahkan label ke wadah yang mencakup nama cluster, nama keluarga definisi tugas, nomor revisi definisi tugas, tugasARN, dan nama penampung. Informasi yang sama ditambahkan ke catatan log menggunakan opsi label dari driver logging docker fluentd. Untuk informasi selengkapnya, lihat label, labels-regex, env, dan env-regex di situs web dokumentasi
Docker. -
Karena
async
opsi driver logging fluentd disetel ketrue
, ketika wadah Fluent Bit dimulai ulang, docker menyangga log hingga wadah Fluent Bit dimulai ulang. Anda dapat meningkatkan batas buffer dengan mengatur fluentd-buffer-limit opsi. Untuk informasi selengkapnya, lihat fluentd-buffer-limitdi situs web dokumentasi Docker.
-
Alur kerja adalah sebagai berikut:
-
Kontainer Fluent Bit dimulai dan mendengarkan pada port 24224 yang diekspos ke host.
-
Fluent Bit menggunakan kredenal IAM peran tugas yang ditentukan dalam definisi tugasnya.
-
Tugas lain yang diluncurkan pada instance yang sama menggunakan driver logging docker fluentd untuk terhubung ke wadah Fluent Bit pada port 24224.
-
Saat wadah aplikasi menghasilkan log, docker runtime menandai catatan tersebut, menambahkan metadata tambahan yang ditentukan dalam label, dan kemudian meneruskannya di port 24224 di namespace host.
-
Fluent Bit menerima catatan log pada port 24224 karena terkena namespace host.
-
Fluent Bit melakukan pemrosesan internal dan merutekan log seperti yang ditentukan.
Tutorial ini menggunakan konfigurasi CloudWatch Fluent Bit default yang melakukan hal berikut:
-
Membuat grup log baru untuk setiap cluster dan keluarga definisi tugas.
-
Membuat aliran log baru untuk setiap wadah tugas di grup log yang dihasilkan di atas setiap kali tugas baru diluncurkan. Setiap aliran akan ditandai dengan id tugas milik kontainer.
-
Menambahkan metadata tambahan termasuk nama cluster, tugasARN, nama wadah tugas, keluarga definisi tugas, dan nomor revisi definisi tugas di setiap entri log.
Misalnya, jika Anda memiliki
task_1
dengancontainer_1
dancontainer_2
dan task_2
dengancontainer_3
, maka berikut ini adalah aliran CloudWatch log:-
/aws/ecs/windows.ecs_task_1
task-out.
TASK_ID
.container_1task-out.
TASK_ID
.container_2 -
/aws/ecs/windows.ecs_task_2
task-out.
TASK_ID
.container_3
-
Langkah-langkah
- Prasyarat
- Langkah 1: Buat peran IAM akses
- Langkah 2: Buat instans penampung Amazon ECS Windows
- Langkah 3: Konfigurasi Bit Lancar
- Langkah 4: Daftarkan definisi tugas Windows Fluent Bit yang merutekan log CloudWatch
- Langkah 5: Jalankan definisi ecs-windows-fluent-bit tugas sebagai ECS layanan Amazon menggunakan strategi penjadwalan daemon
- Langkah 6: Daftarkan ketentuan tugas Windows yang menghasilkan log
- Langkah 7: Jalankan windows-app-task ketentuan tugas
- Langkah 8: Verifikasi log pada CloudWatch
- Langkah 9: Membersihkan
Prasyarat
Tutorial ini mengasumsikan bahwa prasyarat berikut telah diselesaikan:
-
Versi terbaru dari diinstal dan dikonfigurasi. AWS CLI Untuk informasi selengkapnya, lihat Menginstal atau memperbarui ke versi terbaru AWS CLI.
-
Gambar
aws-for-fluent-bit
kontainer tersedia untuk sistem operasi Windows berikut:-
Windows Server 2019 Core
-
Windows Server 2019 Full
-
Windows Server 2022 Inti
-
Windows Server 2022 Lengkap
-
-
Langkah-langkah di Mengatur untuk menggunakan Amazon ECS telah diselesaikan.
-
Anda memiliki cluster. Dalam tutorial ini, nama cluster adalah FluentBit-cluster.
-
Anda memiliki VPC subnet publik tempat EC2 instance akan diluncurkan. Anda dapat menggunakan default AndaVPC. Anda juga dapat menggunakan subnet pribadi yang memungkinkan CloudWatch titik akhir Amazon mencapai subnet. Untuk informasi selengkapnya tentang CloudWatch titik akhir Amazon, lihat CloudWatch titik akhir dan kuota Amazon di. Referensi Umum AWS Untuk informasi tentang cara menggunakan VPC wizard Amazon untuk membuatVPC, lihatBuat virtual private cloud.
Langkah 1: Buat peran IAM akses
Buat ECS IAM peran Amazon.
-
Buat peran instance ECS penampung Amazon bernama "ecsInstanceRoleā. Untuk informasi selengkapnya, lihat IAMperan instans ECS penampung Amazon.
-
Buat IAM peran untuk tugas Fluent Bit bernama
fluentTaskRole
. Untuk informasi selengkapnya, lihat IAMPeran ECS tugas Amazon.IAMIzin yang diberikan dalam IAM peran ini diasumsikan oleh wadah tugas. Untuk memungkinkan Fluent Bit mengirim log ke CloudWatch, Anda harus melampirkan izin berikut ke peran tugasIAM.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": "*" } ] }
-
Lampirkan kebijakan pada peran tersebut.
-
Simpan konten di atas dalam file bernama
fluent-bit-policy.json
. -
Jalankan perintah berikut untuk melampirkan kebijakan sebaris ke
fluentTaskRole
IAM peran.aws iam put-role-policy --role-name fluentTaskRole --policy-name fluentTaskPolicy --policy-document file://fluent-bit-policy.json
-
Langkah 2: Buat instans penampung Amazon ECS Windows
Buat instance penampung Amazon ECS Windows.
Untuk membuat ECS instance Amazon
-
Gunakan
aws ssm get-parameters
perintah untuk mengambil AMI ID untuk Wilayah yang menjadi tuan rumah AndaVPC. Untuk informasi selengkapnya, lihat Mengambil metadata Amazon ECS -Optimized AMI. -
Gunakan EC2 konsol Amazon untuk meluncurkan instance.
Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/
. -
Dari bilah navigasi, pilih Wilayah untuk digunakan.
-
Dari EC2Dasbor, pilih Launch instance.
-
Untuk Nama, masukkan nama yang unik.
-
Untuk Aplikasi dan Gambar OS (Amazon Machine Image), pilih AMI yang Anda ambil pada langkah pertama.
-
Untuk jenis Instance, pilih
t3.xlarge
. -
Untuk Key pair (login), pilih key pair.
-
Di Pengaturan jaringan, untuk Grup keamanan, pilih grup keamanan yang sudah ada, atau buat grup keamanan baru.
-
Di bawah Pengaturan jaringan, untuk Auto-assign IP Publik, pilih Aktifkan.
-
Di bawah Detail lanjutan, IAMmisalnya profil, pilih ecsInstanceRole.
-
Konfigurasikan instance ECS penampung Amazon Anda dengan data pengguna berikut. Di Advanced Details (Detail Lanjutan), tempelkan skrip berikut ke bidang Data pengguna, ganti
cluster_name
dengan nama klaster Anda.<powershell> Import-Module ECSTools Initialize-ECSAgent -Cluster
cluster-name
-EnableTaskENI -EnableTaskIAMRole -LoggingDrivers '["awslogs","fluentd"]' </powershell> -
Saat Anda siap, pilih bidang pengakuan, lalu pilih Luncurkan Instans.
-
Halaman konfirmasi memberi tahu Anda bahwa instans Anda akan diluncurkan. Pilih Lihat Instans untuk menutup halaman konfirmasi dan kembali ke konsol tersebut.
Langkah 3: Konfigurasi Bit Lancar
Anda dapat menggunakan konfigurasi default berikut yang disediakan oleh AWS untuk memulai dengan cepat:
-
Amazon CloudWatch
yang didasarkan pada plug-in Fluent Bit untuk Amazon CloudWatch pada Manual Resmi Fluent Bit.
Atau, Anda dapat menggunakan konfigurasi default lain yang disediakan oleh AWS. Untuk informasi selengkapnya, lihat Mengganti titik masuk untuk gambar Windows di situs web Githubaws-for-fluent-bit
.
Konfigurasi Amazon CloudWatch Fluent Bit default ditunjukkan di bawah ini.
Ganti variabel berikut:
-
region
dengan Wilayah tempat Anda ingin mengirim CloudWatch log Amazon.
[SERVICE] Flush 5 Log_Level info Daemon off [INPUT] Name forward Listen 0.0.0.0 Port 24224 Buffer_Chunk_Size 1M Buffer_Max_Size 6M Tag_Prefix ecs. # Amazon ECS agent adds the following log keys as labels to the docker container. # We would use fluentd logging driver to add these to log record while sending it to Fluent Bit. [FILTER] Name modify Match ecs.* Rename com.amazonaws.ecs.cluster ecs_cluster Rename com.amazonaws.ecs.container-name ecs_container_name Rename com.amazonaws.ecs.task-arn ecs_task_arn Rename com.amazonaws.ecs.task-definition-family ecs_task_definition_family Rename com.amazonaws.ecs.task-definition-version ecs_task_definition_version [FILTER] Name rewrite_tag Match ecs.* Rule $ecs_task_arn ^([a-z-:0-9]+)/([a-zA-Z0-9-_]+)/([a-z0-9]+)$ out.$3.$ecs_container_name false Emitter_Name re_emitted [OUTPUT] Name cloudwatch_logs Match out.* region
region
log_group_name fallback-group log_group_template /aws/ecs/$ecs_cluster.$ecs_task_definition_family log_stream_prefix task- auto_create_group On
Setiap log yang masuk ke Fluent Bit memiliki tag yang Anda tentukan, atau dibuat secara otomatis ketika Anda tidak menyediakannya. Tag dapat digunakan untuk merutekan log yang berbeda ke tujuan yang berbeda. Untuk informasi tambahan, lihat Tag
Konfigurasi Fluent Bit yang dijelaskan di atas memiliki properti berikut:
-
Plug-in input maju mendengarkan lalu lintas masuk pada TCP port 24224.
-
Setiap entri log yang diterima pada port tersebut memiliki tag yang dimodifikasi oleh plug-in input forward untuk mengawali catatan dengan string.
ecs.
-
Pipeline internal Fluent Bit merutekan entri log untuk memodifikasi filter menggunakan regex Match. Filter ini menggantikan kunci dalam catatan log JSON ke format yang dapat dikonsumsi Fluent Bit.
-
Entri log yang dimodifikasi kemudian dikonsumsi oleh filter rewrite_tag. Filter ini mengubah tag catatan log ke format keluar.
TASK_ID
.CONTAINER_NAME
. -
Tag baru akan dirutekan ke plug-in cloudwatch_logs keluaran yang membuat grup log dan aliran seperti yang dijelaskan sebelumnya dengan menggunakan opsi dan plug-in keluaran.
log_group_template
log_stream_prefix
CloudWatch Untuk informasi tambahan, lihat Parameter konfigurasidi Manual Resmi Bit Lancar.
Langkah 4: Daftarkan definisi tugas Windows Fluent Bit yang merutekan log CloudWatch
Daftarkan definisi tugas Windows Fluent Bit yang merutekan log ke CloudWatch.
catatan
Definisi tugas ini mengekspos port kontainer Fluent Bit 24224 ke port host 24224. Pastikan port ini tidak terbuka di grup keamanan EC2 instans Anda untuk mencegah akses dari luar.
Untuk mendaftarkan ketentuan tugas
-
Buat file yang diberi nama
fluent-bit.json
dengan konten berikut ini.Ganti variabel berikut:
-
task-iam-role
dengan Amazon Resource Name (ARN) dari IAM peran tugas Anda -
region
dengan Wilayah tempat tugas Anda berjalan
{ "family": "ecs-windows-fluent-bit", "taskRoleArn": "
task-iam-role
", "containerDefinitions": [ { "name": "fluent-bit", "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:windowsservercore-latest", "cpu": 512, "portMappings": [ { "hostPort": 24224, "containerPort": 24224, "protocol": "tcp" } ], "entryPoint": [ "Powershell", "-Command" ], "command": [ "C:\\entrypoint.ps1 -ConfigFile C:\\ecs_windows_forward_daemon\\cloudwatch.conf" ], "environment": [ { "name": "AWS_REGION", "value": "region
" } ], "memory": 512, "essential": true, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/fluent-bit-logs", "awslogs-region": "region
", "awslogs-stream-prefix": "flb", "awslogs-create-group": "true" } } } ], "memory": "512", "cpu": "512" } -
-
Jalankan perintah berikut untuk mendaftarkan ketentuan tugas.
aws ecs register-task-definition --cli-input-json
file://fluent-bit.json
--regionregion
Anda dapat mencantumkan daftar ketentuan tugas untuk akun Anda dengan menjalankan
list-task-definitions
perintah. Output menampilkan nilai keluarga dan revisi yang dapat Anda gunakan bersama denganrun-task
ataustart-task
.
Langkah 5: Jalankan definisi ecs-windows-fluent-bit
tugas sebagai ECS layanan Amazon menggunakan strategi penjadwalan daemon
Setelah Anda mendaftarkan ketentuan tugas untuk akun Anda, Anda dapat menjalankan tugas di klaster. Untuk tutorial ini, Anda menjalankan salah satu instans ketentuan ecs-windows-fluent-bit:1
tugas di FluentBit-cluster
klaster Anda. Jalankan tugas dalam layanan yang menggunakan strategi penjadwalan daemon, yang memastikan bahwa satu instance Fluent Bit selalu berjalan pada setiap instance container Anda.
Untuk menjalankan tugas
-
Jalankan perintah berikut untuk memulai definisi
ecs-windows-fluent-bit:1
tugas (terdaftar pada langkah sebelumnya) sebagai layanan.catatan
Definisi tugas ini menggunakan driver
awslogs
logging, instance container Anda harus memiliki izin yang diperlukan.Ganti variabel berikut:
-
region
dengan Wilayah tempat layanan Anda berjalan
aws ecs create-service \ --cluster FluentBit-cluster \ --service-name FluentBitForwardDaemonService \ --task-definition ecs-windows-fluent-bit:1 \ --launch-type EC2 \ --scheduling-strategy DAEMON \ --region
region
-
-
Jalankan perintah berikut untuk membuat daftar tugas Anda.
Ganti variabel berikut:
-
region
dengan Wilayah tempat tugas layanan Anda berjalan
aws ecs list-tasks --cluster
--regionFluentBit-cluster
region
-
Langkah 6: Daftarkan ketentuan tugas Windows yang menghasilkan log
Mendaftarkan ketentuan tugas yang menghasilkan log. Definisi tugas ini menyebarkan gambar kontainer Windows yang akan menulis angka tambahan untuk stdout
setiap detik.
Definisi tugas menggunakan driver logging lancar yang terhubung ke port 24224 yang didengarkan oleh plug-in Fluent Bit. ECSAgen Amazon memberi label pada setiap ECS wadah Amazon dengan tag termasuk nama cluster, tugasARN, nama keluarga definisi tugas, nomor revisi definisi tugas, dan nama wadah tugas. Label nilai kunci ini diteruskan ke Fluent Bit.
catatan
Tugas ini menggunakan mode default
jaringan. Namun, Anda juga dapat menggunakan mode awsvpc
jaringan dengan tugas.
Untuk mendaftarkan ketentuan tugas
-
Buat file yang diberi nama
windows-app-task.json
dengan konten berikut ini.{ "family": "windows-app-task", "containerDefinitions": [ { "name": "sample-container", "image": "mcr.microsoft.com/windows/servercore:ltsc2019", "cpu": 512, "memory": 512, "essential": true, "entryPoint": [ "Powershell", "-Command" ], "command": [ "$count=1;while(1) { Write-Host $count; sleep 1; $count=$count+1;}" ], "logConfiguration": { "logDriver": "fluentd", "options": { "fluentd-address": "localhost:24224", "tag": "{{ index .ContainerLabels \"com.amazonaws.ecs.task-definition-family\" }}", "fluentd-async": "true", "labels": "com.amazonaws.ecs.cluster,com.amazonaws.ecs.container-name,com.amazonaws.ecs.task-arn,com.amazonaws.ecs.task-definition-family,com.amazonaws.ecs.task-definition-version" } } } ], "memory": "512", "cpu": "512" }
-
Jalankan perintah berikut untuk mendaftarkan ketentuan tugas.
Ganti variabel berikut:
-
region
dengan Wilayah tempat tugas Anda berjalan
aws ecs register-task-definition --cli-input-json
file://windows-app-task.json
--regionregion
Anda dapat mencantumkan daftar ketentuan tugas untuk akun Anda dengan menjalankan
list-task-definitions
perintah. Output menampilkan nilai keluarga dan revisi yang dapat Anda gunakan bersama denganrun-task
ataustart-task
. -
Langkah 7: Jalankan windows-app-task
ketentuan tugas
Setelah Anda mendaftarkan definisi windows-app-task
tugas, jalankan di FluentBit-cluster
cluster Anda.
Untuk menjalankan tugas
-
Jalankan
windows-app-task:1
ketentuan tugas yang telah Anda daftarkan pada langkah sebelumnya.Ganti variabel berikut:
-
region
dengan Wilayah tempat tugas Anda berjalan
aws ecs run-task --cluster FluentBit-cluster --task-definition windows-app-task:1 --count 2 --region
region
-
-
Jalankan perintah berikut untuk membuat daftar tugas Anda.
aws ecs list-tasks --cluster
FluentBit-cluster
Langkah 8: Verifikasi log pada CloudWatch
Untuk memverifikasi penyiapan Fluent Bit Anda, periksa grup log berikut di CloudWatch konsol:
-
/ecs/fluent-bit-logs
- Ini adalah grup log yang sesuai dengan wadah daemon Fluent Bit yang berjalan pada instance container. -
/aws/ecs/FluentBit-cluster.windows-app-task
- Ini adalah grup log yang sesuai dengan semua tugas yang diluncurkan untuk keluarga definisiwindows-app-task
tugas di dalamFluentBit-cluster
cluster.task-out.
- Aliran log ini berisi semua log yang dihasilkan oleh contoh pertama tugas dalam wadah tugas sample-container.FIRST_TASK_ID
.sample-containertask-out.
- Aliran log ini berisi semua log yang dihasilkan oleh instance kedua tugas dalam wadah tugas sample-container.SECOND_TASK_ID
.sample-container
Aliran task-out.
log memiliki bidang yang mirip dengan hal berikut ini:TASK_ID
.sample-container
{
"source": "stdout",
"ecs_task_arn": "arn:aws:ecs:region
:0123456789012:task/FluentBit-cluster/13EXAMPLE",
"container_name": "/ecs-windows-app-task-1-sample-container-cEXAMPLE",
"ecs_cluster": "FluentBit-cluster",
"ecs_container_name": "sample-container",
"ecs_task_definition_version": "1",
"container_id": "61f5e6EXAMPLE",
"log": "10",
"ecs_task_definition_family": "windows-app-task"
}
Untuk memverifikasi pengaturan Fluent Bit
Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/
. -
Pada panel navigasi, pilih Grup log. Pastikan bahwa Anda berada di Wilayah tempat Anda men-deploy ke kontainer Anda.
Dalam daftar grup log di Wilayah AWS, Anda akan melihat hal berikut:
-
/ecs/fluent-bit-logs
-
/aws/ecs/FluentBit-cluster.windows-app-task
Jika Anda melihat grup log ini, penyiapan Fluent Bit diverifikasi.
-
Langkah 9: Membersihkan
Setelah Anda menyelesaikan tutorial ini, bersihkan sumber daya yang terkait dengannya untuk menghindari biaya yang tidak Anda gunakan.
Untuk membersihkan sumber daya tutorial
-
Hentikan
windows-simple-task
tugas danecs-fluent-bit
tugas. Untuk informasi selengkapnya, lihat Menghentikan ECS tugas Amazon. -
Jalankan perintah berikut untuk menghapus grup
/ecs/fluent-bit-logs
log. Untuk informasi selengkapnya, tentang menghapus grup log lihat delete-log-groupdi AWS Command Line Interface Referensi.aws logs delete-log-group --log-group-name /ecs/fluent-bit-logs aws logs delete-log-group --log-group-name /aws/ecs/FluentBit-cluster.windows-app-task
-
Jalankan perintah berikut untuk menghentikan instans.
aws ec2 terminate-instances --instance-ids
instance-id
-
Jalankan perintah berikut untuk menghapus IAM peran.
aws iam delete-role --role-name ecsInstanceRole aws iam delete-role --role-name fluentTaskRole
-
Jalankan perintah berikut untuk menghapus ECS klaster Amazon.
aws ecs delete-cluster --cluster
FluentBit-cluster