Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengirim log ke Amazon CloudWatch
OTel Container Insights mengumpulkan dan mengirimkan log kontainer ke Amazon CloudWatch Logs dengan menggunakan pipeline log OpenTelemetry Collector. Add-on Amazon CloudWatch Observability EKS menggunakan OpenTelemetry Collector sebagai DaemonSet penerima filelog untuk mengekor file log kontainer, memperkayanya dengan metadata Kubernetes, dan mengekspornya ke Log melalui eksportir Log. CloudWatch CloudWatch
Tidak diperlukan pengaturan tambahan untuk pengumpulan log dasar. Koleksi log diaktifkan secara default saat Anda mengikutiMulai cepat: OTel Container Insights di Amazon EKS.
Prasyarat
Sebelum Anda mengonfigurasi pengumpulan log, verifikasi bahwa Anda memenuhi persyaratan berikut.
-
OTel Container Insights diinstal dan
amazon-cloudwatch-observabilityadd-on aktif di cluster Anda -
Izin IAM:
logs:CreateLogGroup,,logs:CreateLogStream,logs:PutLogEventslogs:DescribeLogGroups, danlogs:DescribeLogStreams(termasuk dalam kebijakanCloudWatchAgentServerPolicyterkelola) -
Akses node: kolektor membutuhkan akses ke
/var/log/podspada setiap node
Grup log dan sumber
Tabel berikut menjelaskan grup log yang dibuat oleh OTel Container Insights dan sumber yang dikumpulkannya.
| Grup log | Sumber | Daftar Isi |
|---|---|---|
/aws/containerinsights/ |
/var/log/pods/**/*.log |
Semua log stdout dan stderr kontainer |
catatan
Log host dan dataplane akan tersedia di rilis mendatang.
Cara kerja pipa log OTel
OpenTelemetry Kolektor add-on menjalankan pipeline log dengan komponen-komponen berikut.
-
Penerima -
filelogPenerima mengekor file log kontainer dari/var/log/pods/. -
Prosesor —
k8sattributesProsesor memperkaya log dengan metadata Kubernetes.batchProsesor mengumpulkan catatan log sebelum diekspor.resourceProsesor menambahkan atribut sumber daya. -
Eksportir —
awscloudwatchlogsEksportir mengirimkan catatan log ke CloudWatch Log.
Pengayaan log
Pipeline memperkaya setiap catatan log dengan atribut berikut.
-
Atribut sumber daya Kubernetes —
k8s.pod.name,,,k8s.namespace.name, dank8s.container.namek8s.node.namek8s.deployment.name -
Label pod — Semua label pod sebagai
k8s.pod.label.*atribut -
Atribut awan —
cloud.region,cloud.account.id, dancloud.platform -
Atribut cluster —
k8s.cluster.name
Menyesuaikan koleksi log
Anda dapat menyesuaikan koleksi log dengan memperbarui nilai konfigurasi add-on. Bagian berikut menjelaskan opsi penyesuaian umum.
Nonaktifkan koleksi log
Untuk menonaktifkan pengumpulan log sepenuhnya, perbarui konfigurasi add-on dengan log kontainer dinonaktifkan.
Untuk menonaktifkan pengumpulan log
-
Jalankan perintah berikut. Ganti
cluster-namedengan nama cluster Amazon EKS Anda.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":false}}' \ --resolve-conflicts OVERWRITE
Kecualikan ruang nama dari koleksi log
Untuk mengecualikan ruang nama tertentu dari koleksi log, gunakan opsi excludeNamespaces konfigurasi.
Untuk mengecualikan ruang nama dari koleksi log
-
Jalankan perintah berikut. Ganti
cluster-namedengan nama cluster Amazon EKS Anda. Ganti nilai namespace dengan namespace yang ingin Anda kecualikan.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":true,"excludeNamespaces":["kube-system","load-testing","monitoring"]}}' \ --resolve-conflicts OVERWRITE
Sertakan hanya ruang nama tertentu
Untuk mengumpulkan log hanya dari ruang nama tertentu, gunakan opsi includeNamespaces konfigurasi.
Untuk menyertakan hanya ruang nama tertentu
-
Jalankan perintah berikut. Ganti
cluster-namedengan nama cluster Amazon EKS Anda. Ganti nilai namespace dengan namespace yang ingin Anda sertakan.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":true,"includeNamespaces":["production","staging"]}}' \ --resolve-conflicts OVERWRITE
Konfigurasikan penguraian log multi-baris
Untuk menggabungkan entri log multi-baris (seperti jejak tumpukan) ke dalam catatan log tunggal, konfigurasikan penguraian multi-baris dengan pola baris pertama.
Untuk mengonfigurasi penguraian log multi-baris
-
Jalankan perintah berikut. Ganti
cluster-namedengan nama cluster Amazon EKS Anda. GantifirstLinePatternnilai dengan pola regex yang cocok dengan baris pertama dari setiap entri log.aws eks update-addon \ --cluster-namecluster-name\ --addon-name amazon-cloudwatch-observability \ --configuration-values '{"containerLogs":{"enabled":true,"multilineConfig":{"firstLinePattern":"^\\d{4}-\\d{2}-\\d{2}|^\\[\\d{4}","parseFormat":"auto"}}}' \ --resolve-conflicts OVERWRITE
Mengatur retensi log
Secara default, CloudWatch Log menyimpan data log tanpa batas waktu. Untuk mengontrol biaya penyimpanan, Anda dapat menetapkan kebijakan retensi pada grup log.
Untuk mengatur retensi log
-
Jalankan perintah berikut. Ganti
cluster-namedengan nama cluster Amazon EKS Anda. Ganti30dengan jumlah hari untuk menyimpan log.aws logs put-retention-policy \ --log-group-name "/aws/containerinsights/cluster-name/application" \ --retention-in-days30
Verifikasi
Untuk memverifikasi bahwa pengumpulan log berfungsi, periksa apakah grup log yang diharapkan ada dan berisi data.
Untuk memverifikasi pengumpulan log
-
Jalankan perintah berikut. Ganti
cluster-namedengan nama cluster Amazon EKS Anda.aws logs describe-log-groups \ --log-group-name-prefix "/aws/containerinsights/cluster-name" \ --query "logGroups[].{Name:logGroupName,StoredBytes:storedBytes}" \ --output tableOutput menampilkan nama grup log dan jumlah byte yang disimpan. Nilai bukan nol untuk
StoredBytesmengonfirmasi bahwa pipeline mengirimkan log.
Pemecahan masalah
Gunakan panduan berikut untuk menyelesaikan masalah pengumpulan log umum.
Grup log tidak dibuat setelah 5 menit
Gejala: Grup /aws/containerinsights/ log tidak muncul di CloudWatch Log setelah 5 menit.cluster-name/application
Penyebab: Kolektor tidak memiliki izin IAM yang diperlukan untuk membuat grup log dan aliran log.
Solusi: Verifikasi bahwa peran IAM yang terkait dengan kolektor memiliki kebijakan CloudWatchAgentServerPolicy terkelola yang dilampirkan. Kebijakan ini mencakup logs:CreateLogGroup dan logs:CreateLogStream izin.
Grup log aplikasi ada tetapi kosong
Gejala: Grup log aplikasi ada di CloudWatch Log, tetapi tidak berisi aliran log atau peristiwa log.
Penyebab: Masalah ini terjadi ketika container tidak menulis ke stdout atau stderr, atau penerima filelog tidak dapat mengakses pada node. /var/log/pods/
Solusi: Selesaikan langkah-langkah berikut untuk mengatasi masalah ini.
-
Verifikasi bahwa wadah aplikasi Anda menulis log ke stdout atau stderr.
-
Periksa apakah DaemonSet pod kolektor memiliki dudukan volume untuk
/var/log/pods.kubectl get daemonset -n amazon-cloudwatch -o yaml | grep -A 5 "var/log/pods" -
Periksa log kolektor untuk kesalahan akses file.
kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=50 | grep -i "error\|permission"
Biaya CloudWatch Log Tinggi
Gejala: Biaya konsumsi atau penyimpanan CloudWatch log lebih tinggi dari yang diharapkan.
Penyebab: High-volume ruang nama (seperti pengujian beban atau ruang nama pemantauan) menghasilkan volume log yang besar.
Solusi: Selesaikan langkah-langkah berikut untuk mengurangi biaya.
-
Kecualikan ruang nama volume tinggi dari koleksi log. Untuk petunjuk, lihat Kecualikan ruang nama dari koleksi log.
-
Tetapkan kebijakan penyimpanan pada grup log untuk menghapus log lama secara otomatis. Untuk petunjuk, lihat Mengatur retensi log.