Bantu tingkatkan halaman ini
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Amazon EKS di Fargate menawarkan router log bawaan berdasarkan Fluent Bit. Ini berarti Anda tidak secara eksplisit menjalankan container Fluent Bit sebagai sespan, tetapi Amazon menjalankannya untuk Anda. Yang harus Anda lakukan adalah mengkonfigurasi router log. Konfigurasi terjadi melalui dedicated ConfigMap
yang harus memenuhi kriteria berikut:
-
Bernama
aws-logging
-
Dibuat di namespace khusus yang disebut
aws-observability
-
Tidak dapat melebihi 5300 karakter.
Setelah Anda membuatConfigMap
, Amazon EKS di Fargate secara otomatis mendeteksi dan mengonfigurasi router log dengannya. Fargate menggunakan versi AWS untuk Fluent Bit, distribusi Fluent Bit yang sesuai dengan hulu yang dikelola oleh. AWS Untuk informasi lebih lanjut, lihat AWS Fluent Bit
Router log memungkinkan Anda untuk menggunakan luasnya layanan di AWS untuk analisis log dan penyimpanan. Anda dapat melakukan streaming log dari Fargate langsung ke Amazon, CloudWatch Amazon OpenSearch Service. Anda juga dapat melakukan streaming log ke tujuan seperti Amazon S3
-
Profil Fargate yang sudah ada yang menentukan namespace Kubernetes yang sudah ada yang kamu gunakan untuk Pod Fargate. Untuk informasi selengkapnya, lihat Langkah 3: Buat profil Fargate untuk cluster Anda.
-
Peran eksekusi Fargate Pod yang ada. Untuk informasi selengkapnya, lihat Langkah 2: Buat peran eksekusi Fargate Pod.
Konfigurasi router log
Pada langkah-langkah berikut, ganti masing-masing example value
dengan nilai Anda sendiri.
-
Buat namespace Kubernetes khusus bernama.
aws-observability
-
Simpan konten berikut ini ke file bernama
aws-observability-namespace.yaml
pada komputer Anda. Nilai untukname
harusaws-observability
danaws-observability: enabled
label diperlukan.kind: Namespace apiVersion: v1 metadata: name: aws-observability labels: aws-observability: enabled
-
Buat namespace.
kubectl apply -f aws-observability-namespace.yaml
-
-
Buat
ConfigMap
dengan nilaiFluent Conf
data untuk mengirimkan log kontainer ke tujuan. Fluent Conf adalah Fluent Bit, yang merupakan bahasa konfigurasi prosesor log yang cepat dan ringan yang digunakan untuk merutekan log kontainer ke tujuan log pilihan Anda. Untuk informasi lebih lanjut, lihat File konfigurasidalam dokumentasi Fluent Bit. penting
Bagian utama yang termasuk dalam tipikal
Fluent Conf
adalahService
,Input
,Filter
, danOutput
. Namun, router log Fargate hanya menerima:-
Output
BagianFilter
dan. -
Sebuah
Parser
bagian.
Jika Anda memberikan bagian lain, mereka akan ditolak.
Router log Fargate mengelola bagian
Service
danInput
. Ini memilikiInput
bagian berikut, yang tidak dapat dimodifikasi dan tidak diperlukan di AndaConfigMap
. Namun, Anda bisa mendapatkan wawasan darinya, seperti batas buffer memori dan tag yang diterapkan untuk log.[INPUT] Name tail Buffer_Max_Size 66KB DB /var/log/flb_kube.db Mem_Buf_Limit 45MB Path /var/log/containers/*.log Read_From_Head On Refresh_Interval 10 Rotate_Wait 30 Skip_Long_Lines On Tag kube.*
Saat membuat
ConfigMap
, pertimbangkan aturan berikut yang digunakan Fargate untuk memvalidasi bidang:-
[FILTER]
,[OUTPUT]
, dan seharusnya[PARSER]
ditentukan di bawah setiap kunci yang sesuai. Contohnya,[FILTER]
harus berada dalamfilters.conf
. Anda dapat memiliki satu atau lebih[FILTER]
s di bawahfilters.conf
.[PARSER]
Bagian[OUTPUT]
dan juga harus berada di bawah kunci yang sesuai. Dengan menentukan beberapa[OUTPUT]
bagian, Anda dapat merutekan log Anda ke tujuan yang berbeda secara bersamaan. -
Fargate memvalidasi kunci yang diperlukan untuk setiap bagian.
Name
danmatch
diperlukan untuk setiap[FILTER]
dan[OUTPUT]
.Name
danformat
diperlukan untuk setiap[PARSER]
. Kunci peka terhadap huruf besar dan kecil. -
Variabel lingkungan seperti
${ENV_VAR}
tidak diizinkan diConfigMap
. -
Indentasi harus sama dengan arahan atau pasangan nilai kunci dalam setiap
filters.conf
,output.conf
, danparsers.conf
. Pasangan nilai kunci yang harus menjorok lebih dari arahan. -
Fargate memvalidasi terhadap filter yang didukung berikut:
grep
,,parser
,,record_modifier
,rewrite_tag
throttle
nest
,modify
dan.kubernetes
-
Fargate memvalidasi output yang didukung berikut:
es
,firehose
,kinesis_firehose
,cloudwatch
,cloudwatch_logs
, dankinesis
. -
Setidaknya satu
Output
plugin yang didukung harus disediakan diConfigMap
untuk mengaktifkan logging.Filter
danParser
tidak diperlukan untuk mengaktifkan logging.Anda juga dapat menjalankan Fluent Bit di Amazon EC2 menggunakan konfigurasi yang diinginkan untuk memecahkan masalah apa pun yang timbul dari validasi. Buat Anda
ConfigMap
menggunakan salah satu contoh berikut.penting
Amazon EKS Fargate logging tidak mendukung konfigurasi dinamis file.
ConfigMap
Setiap perubahan pada a hanyaConfigMap
diterapkan pada Pod baru. Perubahan tidak diterapkan pada Pod yang ada.Buat
ConfigMap
menggunakan contoh untuk tujuan log yang Anda inginkan.catatan
Anda juga dapat menggunakan Amazon Kinesis Data Streams untuk tujuan log Anda. Jika Anda menggunakan Kinesis Data Streams, pastikan bahwa peran eksekusi pod telah
kinesis:PutRecords
diberikan izin. Untuk informasi selengkapnya, lihat Izin Amazon Kinesis DataStreams di Bit Lancar: Manual Resmi.
Untuk membuat
ConfigMap
untuk CloudWatchAnda memiliki dua opsi output saat menggunakan CloudWatch:
Contoh berikut menunjukkan cara menggunakan
cloudwatch_logs
plugin untuk mengirim log ke CloudWatch.-
Simpan konten berikut ini ke file bernama
aws-logging-cloudwatch-configmap.yaml
. Gantiregion-code
dengan AWS Wilayah tempat klaster Anda berada. Parameter di bawah[OUTPUT]
ini diperlukan.kind: ConfigMap apiVersion: v1 metadata: name: aws-logging namespace: aws-observability data: flb_log_cw: "false" # Set to true to ship Fluent Bit process logs to CloudWatch. filters.conf: | [FILTER] Name parser Match * Key_name log Parser crio [FILTER] Name kubernetes Match kube.* Merge_Log On Keep_Log Off Buffer_Size 0 Kube_Meta_Cache_TTL 300s output.conf: | [OUTPUT] Name cloudwatch_logs Match kube.* region region-code log_group_name my-logs log_stream_prefix from-fluent-bit- log_retention_days 60 auto_create_group true parsers.conf: | [PARSER] Name crio Format Regex Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>P|F) (?<log>.*)$ Time_Key time Time_Format %Y-%m-%dT%H:%M:%S.%L%z
-
Menerapkan manifes ke klaster Anda.
kubectl apply -f aws-logging-cloudwatch-configmap.yaml
-
Unduh kebijakan CloudWatch IAM ke komputer Anda. Anda juga dapat melihat kebijakan
di GitHub. curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json
-
-
Buat kebijakan IAM dari file kebijakan yang Anda unduh di langkah sebelumnya.
aws iam create-policy --policy-name eks-fargate-logging-policy --policy-document file://permissions.json
-
Lampirkan kebijakan IAM ke peran eksekusi pod yang ditentukan untuk profil Fargate Anda dengan perintah berikut. Ganti
111122223333
dengan ID akun Anda. GantiAmazonEKSFargatePodExecutionRole
dengan peran eksekusi Pod Anda (untuk informasi selengkapnya, lihatLangkah 2: Buat peran eksekusi Fargate Pod).aws iam attach-role-policy \ --policy-arn arn:aws: iam::
111122223333
:policy/eks-fargate-logging-policy \ --role-nameAmazonEKSFargatePodExecutionRole
Dukungan filter Kubernetes
Fitur ini memerlukan versi Kubernetes minimum berikut dan level platform, atau yang lebih baru.
Versi Kubernetes | Tingkat platform |
---|---|
1.23 dan kemudian |
eks.1 |
Filter Fluent Bit Kubernetes memungkinkan Anda menambahkan metadata Kubernetes ke file log Anda. Untuk informasi selengkapnya tentang filter, lihat Kubernetes
filters.conf: |
[FILTER]
Name kubernetes
Match kube.*
Merge_Log On
Buffer_Size 0
Kube_Meta_Cache_TTL 300
s
penting
-
Kube_URL
,Kube_CA_File
,Kube_Token_Command
, danKube_Token_File
merupakan parameter konfigurasi milik layanan dan tidak boleh ditentukan. Amazon EKS Fargate mengisi nilai-nilai ini. -
Kube_Meta_Cache_TTL
adalah waktu Fluent Bit menunggu hingga berkomunikasi dengan server API untuk metadata terbaru. JikaKube_Meta_Cache_TTL
tidak ditentukan, Amazon EKS Fargate menambahkan nilai default 30 menit untuk mengurangi beban pada server API.
Untuk mengirimkan log proses Fluent Bit ke akun Anda
Anda dapat secara opsional mengirimkan log proses Fluent Bit ke Amazon CloudWatch menggunakan yang berikut ini. ConfigMap
Pengiriman log proses Fluent Bit ke CloudWatch membutuhkan biaya konsumsi dan penyimpanan log tambahan. Ganti region-code
dengan AWS Wilayah tempat klaster Anda berada.
kind: ConfigMap
apiVersion: v1
metadata:
name: aws-logging
namespace: aws-observability
labels:
data:
# Configuration files: server, input, filters and output
# ======================================================
flb_log_cw: "true" # Ships Fluent Bit process logs to CloudWatch.
output.conf: |
[OUTPUT]
Name cloudwatch
Match kube.*
region region-code
log_group_name fluent-bit-cloudwatch
log_stream_prefix from-fluent-bit-
auto_create_group true
Log berada di AWS Wilayah tempat cluster berada di bawahnya CloudWatch. Nama grup log adalah
dan nama logstream Fluent Bit adalah. my-cluster
-fluent-bit-logsfluent-bit-
podname
-pod-namespace
catatan
-
Log proses dikirim hanya ketika proses Bit Lancar berhasil dimulai. Jika ada kegagalan saat memulai Fluent Bit, log proses terlewatkan. Anda hanya dapat mengirimkan log proses ke CloudWatch.
-
Untuk men-debug log proses pengiriman ke akun Anda, Anda dapat menerapkan sebelumnya
ConfigMap
untuk mendapatkan log proses. Fluent Bit gagal memulai biasanya karena AndaConfigMap
tidak diurai atau diterima oleh Fluent Bit saat memulai.
Untuk menghentikan pengiriman log proses Fluent Bit
Pengiriman log proses Fluent Bit ke CloudWatch membutuhkan biaya konsumsi dan penyimpanan log tambahan. Untuk mengecualikan log proses dalam ConfigMap
pengaturan yang ada, lakukan langkah-langkah berikut.
-
Temukan grup CloudWatch log yang dibuat secara otomatis untuk log proses Fluent Bit klaster Amazon EKS Anda setelah mengaktifkan logging Fargate. Ini mengikuti format
{cluster_name}-fluent-bit-logs
. -
Hapus aliran CloudWatch log yang ada yang dibuat untuk setiap log proses Pod di grup CloudWatch log.
-
Edit
ConfigMap
dan aturflb_log_cw: "false"
. -
Mulai ulang semua Pod yang ada di klaster.
Aplikasi uji
-
Menerapkan contoh Pod.
-
Simpan konten berikut ini ke file bernama
sample-app.yaml
pada komputer Anda.apiVersion: apps/v1 kind: Deployment metadata: name: sample-app namespace:
same-namespace-as-your-fargate-profile
spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - name: http containerPort: 80 -
Menerapkan manifes ke klaster.
kubectl apply -f sample-app.yaml
-
-
Lihat log NGINX menggunakan tujuan yang Anda konfigurasikan di.
ConfigMap
Pertimbangan ukuran
Kami menyarankan Anda merencanakan hingga 50 MB memori untuk router log. Jika Anda mengharapkan aplikasi Anda untuk menghasilkan catatan pada throughput yang sangat tinggi, maka Anda harus menyediakan memori hingga 100 MB.
Pemecahan Masalah
Untuk mengonfirmasi apakah fitur logging diaktifkan atau dinonaktifkan karena beberapa alasan, seperti tidak validConfigMap
, dan mengapa fitur tersebut tidak valid, periksa peristiwa Pod Anda. kubectl describe pod
Outputnya mungkin mencakup peristiwa Pod yang menjelaskan apakah logging diaktifkan atau tidak, seperti contoh keluaran berikut.pod-name
[...]
Annotations: CapacityProvisioned: 0.25vCPU 0.5GB
Logging: LoggingDisabled: LOGGING_CONFIGMAP_NOT_FOUND
kubernetes.io/psp: eks.privileged
[...]
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning LoggingDisabled <unknown> fargate-scheduler Disabled logging because aws-logging configmap was not found. configmap "aws-logging" not found
Peristiwa Pod bersifat sementara dengan periode waktu tergantung pada pengaturan. Anda juga dapat melihat anotasi Pod menggunakankubectl describe pod
. Dalam anotasi Pod, terdapat informasi tentang apakah fitur logging diaktifkan atau dinonaktifkan dan alasannya.pod-name