View a markdown version of this page

Konfigurasi lanjutan untuk OTel Container Insights di Amazon EKS - Amazon CloudWatch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasi lanjutan untuk OTel Container Insights di Amazon EKS

Topik ini mencakup skenario konfigurasi lanjutan untuk OTel Container Insights di Amazon EKS. Gunakan konfigurasi ini untuk menyesuaikan koleksi metrik, memfilter log, mengumpulkan telemetri di seluruh akun, menambahkan dimensi khusus, dan menyetel alokasi sumber daya untuk klaster besar.

Prasyarat

Sebelum Anda mengonfigurasi pengaturan lanjutan, verifikasi bahwa Anda memenuhi persyaratan berikut.

  • OTel Container Insights diinstal dan dalam ACTIVE status di klaster Amazon EKS Anda

  • Cluster Amazon EKS yang menjalankan Kubernetes versi 1.28 atau yang lebih baru

  • AWS CLI versi 2.15.0 atau yang lebih baru

  • kubectldikonfigurasi untuk berkomunikasi dengan cluster target Anda

  • Izin IAM:eks:UpdateAddon,eks:DescribeAddon, dan iam:AttachRolePolicy (diperlukan untuk konfigurasi lintas akun)

Pola konfigurasi umum

Semua konfigurasi lanjutan mengikuti pola yang sama. Anda meneruskan konfigurasi JSON ke amazon-cloudwatch-observability add-on dengan menggunakan perintah. aws eks update-addon

aws eks update-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --configuration-values 'JSON-configuration' \ --resolve-conflicts OVERWRITE
penting

--resolve-conflicts OVERWRITEBendera menggantikan konfigurasi add-on yang ada. Untuk mempertahankan pengaturan yang ada, gabungkan dengan konfigurasi baru Anda sebelum Anda menjalankan perintah.

Pemfilteran log

Anda dapat mengurangi biaya CloudWatch Log dengan mengecualikan log yang sesuai dengan kriteria tertentu. Gunakan penyaringan log untuk menghapus log tingkat debug atau verbose sebelum agen mengirimkannya ke. CloudWatch

Untuk mengkonfigurasi penyaringan log
  1. Jalankan perintah berikut untuk memperbarui add-on dengan konfigurasi filter log. Ganti cluster-name dengan nama cluster Amazon EKS Anda.

    aws eks update-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "config": { "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true } }, "exclude_filters": [ { "type": "log_level_filter", "log_level": "DEBUG" } ] } } } }' \ --resolve-conflicts OVERWRITE
  2. Verifikasi bahwa status add-on ACTIVE setelah pembaruan.

    aws eks describe-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text

exclude_filtersKonfigurasi menghapus entri log yang cocok dengan level log yang ditentukan sebelum agen mengirimkannya ke CloudWatch Log. Ini mengurangi volume konsumsi log Anda dan biaya terkait.

Multi-account koleksi

Anda dapat mengirim telemetri dari akun beban kerja ke akun pemantauan pusat dengan mengonfigurasi asumsi peran IAM lintas akun. Pendekatan ini memberi Anda satu tampilan metrik dan log dari beberapa kluster Amazon EKS di berbagai AWS akun.

Untuk mengatur pengumpulan multi-akun

Untuk membuat peran lintas akun di akun pemantauan
  1. Di akun pemantauan pusat, buat peran IAM dengan kebijakan kepercayaan yang memungkinkan akun beban kerja untuk mengasumsikan itu. Ganti workload-account-id dengan ID AWS akun akun beban kerja.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::workload-account-id:root" }, "Action": "sts:AssumeRole" } ] }
  2. Lampirkan kebijakan CloudWatchAgentServerPolicy terkelola ke peran lintas akun.

Untuk mengonfigurasi add-on untuk pengiriman lintas akun
  1. Di akun beban kerja, perbarui add-on untuk mengambil peran lintas akun. Ganti cluster-name dengan nama cluster Amazon EKS Anda dan monitoring-account-id dengan ID AWS akun akun pemantauan pusat.

    aws eks update-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "config": { "credentials": { "role_arn": "arn:aws:iam::monitoring-account-id:role/CrossAccountCWObservabilityRole" } } } }' \ --resolve-conflicts OVERWRITE
  2. Verifikasi bahwa status add-on ACTIVE setelah pembaruan.

    aws eks describe-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text

Dimensi metrik khusus

Anda dapat menambahkan dimensi kustom yang berasal dari label Kubernetes ke metrik Container Insights Anda. Dimensi khusus memungkinkan Anda memfilter dan mengelompokkan metrik pada perincian yang lebih halus, seperti menurut tim, lingkungan, atau tingkat aplikasi.

Untuk menambahkan dimensi kustom dari label Kubernetes
  1. Jalankan perintah berikut untuk mengkonfigurasi dimensi kustom. Ganti cluster-name dengan nama cluster Amazon EKS Anda dan label-key dengan label Kubernetes untuk digunakan sebagai dimensi.

    aws eks update-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "config": { "logs": { "metrics_collected": { "kubernetes": { "enhanced_container_insights": true, "metric_dimensions": { "custom_dimensions": ["label-key"] } } } } } } }' \ --resolve-conflicts OVERWRITE
  2. Verifikasi bahwa status add-on ACTIVE setelah pembaruan.

    aws eks describe-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text

Setelah konfigurasi diterapkan, label Kubernetes yang ditentukan akan muncul sebagai dimensi pada metrik Container Insights Anda. CloudWatch

Penyetelan sumber daya untuk cluster besar

Untuk cluster besar, Anda mungkin perlu meningkatkan batas CPU dan memori untuk CloudWatch agen DaemonSet. Alokasi sumber daya default berfungsi dengan baik untuk cluster kecil, tetapi cluster yang lebih besar menghasilkan lebih banyak data telemetri dan membutuhkan sumber daya agen tambahan.

Tabel berikut memberikan pedoman ukuran berdasarkan ukuran cluster.

Ukuran cluster Permintaan CPU Batas CPU Permintaan memori Batas memori
Kecil (20 node atau kurang) 100m 200m 128Mi 256Mi
Sedang (21-100 node) 200m 400m 256Mi 512Mi
Besar (100+ node) 300m 500m 384Mi 768Mi
Extra-large (500+ node) 500m 1000m 512Mi 1Gi
Untuk mengonfigurasi batas sumber daya untuk agen DaemonSet
  1. Jalankan perintah berikut untuk mengatur permintaan dan batas sumber daya. Ganti cluster-name dengan nama kluster Amazon EKS Anda dan nilai sumber daya dengan nilai dari tabel sebelumnya.

    aws eks update-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --configuration-values '{ "otelContainerInsights": { "enabled": true }, "agent": { "resources": { "requests": { "cpu": "cpu-request", "memory": "memory-request" }, "limits": { "cpu": "cpu-limit", "memory": "memory-limit" } } } }' \ --resolve-conflicts OVERWRITE
  2. Verifikasi bahwa status add-on adalah ACTIVE dan pod agen tersebut dimulai ulang dengan alokasi sumber daya baru.

    aws eks describe-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text
  3. Konfirmasikan bahwa pod agen berjalan dengan batas sumber daya baru.

    kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent -o jsonpath='{.items[0].spec.containers[0].resources}'

Verifikasi perubahan konfigurasi

Setelah Anda menerapkan konfigurasi lanjutan apa pun, verifikasi bahwa add-on tersebut sehat dan pod agen berhasil memulai ulang.

Untuk memverifikasi perubahan konfigurasi
  1. Periksa apakah status add-on adalahACTIVE. Ganti cluster-name dengan nama cluster Amazon EKS Anda.

    aws eks describe-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --query "addon.{Status:status,ConfigValues:configurationValues}" \ --output table
  2. Verifikasi bahwa pod agen dimulai ulang dan dalam Running status.

    kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent

    Semua pod agen harus menampilkan Running status dengan waktu restart baru-baru ini.

Pemecahan masalah

Gunakan panduan berikut untuk menyelesaikan masalah umum dengan konfigurasi lanjutan.

Add-on pembaruan gagal dengan ConfigurationConflict

Gejala: aws eks update-addon Perintah mengembalikan ConfigurationConflict kesalahan.

Penyebab: Konfigurasi JSON yang Anda berikan salah bentuk atau berisi kunci yang tidak valid.

Solusi: Selesaikan langkah-langkah berikut untuk mengatasi masalah ini.

  1. Validasi konfigurasi JSON Anda dengan menggunakan linter JSON atau dengan menjalankan perintah berikut.

    echo 'your-json-configuration' | python3 -m json.tool
  2. Verifikasi bahwa semua kunci konfigurasi valid untuk amazon-cloudwatch-observability add-on.

  3. Coba lagi pembaruan dengan JSON yang dikoreksi.

Cross-account metrik tidak muncul di akun pemantauan

Gejala: Setelah Anda mengonfigurasi pengumpulan multi-akun, metrik tidak muncul di akun pemantauan pusat.

Penyebab: Kebijakan kepercayaan peran IAM lintas akun atau izin tidak benar.

Solusi: Selesaikan langkah-langkah berikut untuk mengatasi masalah ini.

  1. Verifikasi bahwa kebijakan kepercayaan di akun pemantauan memungkinkan akun beban kerja untuk mengambil peran.

  2. Verifikasi bahwa peran lintas akun memiliki kebijakan CloudWatchAgentServerPolicy terkelola yang dilampirkan.

  3. Periksa log agen untuk AssumeRole kesalahan.

    kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=100 | grep -i "AssumeRole\|AccessDenied"
  4. Verifikasi bahwa peran IAM agen di akun beban kerja memiliki sts:AssumeRole izin untuk ARN peran lintas akun.