Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Terapkan Wawasan Kontainer OTel dengan Helm
Bagan Helm CloudWatch Observability Amazon menyediakan opsi penerapan fleksibel untuk Insights Kontainer OTel. Ini menginstal CloudWatch agen (OTel-based) dengan penerima OpenTelemetry filelog untuk pengumpulan log. Bagan Helm dipertahankan di https://github.com/aws-observability/helm-charts
Gunakan bagan Helm saat Anda membutuhkan satu atau lebih kemampuan berikut:
-
Fine-grained kontrol atas konfigurasi agen
-
OTel-native pengumpulan log menggunakan penerima filelog (tidak ada ketergantungan Bit Lancar)
-
Manajemen sertifikat TLS khusus melalui cert-manager
-
Non-EKS Cluster Kubernetes (ROSA, Kubernetes yang dikelola sendiri)
-
GitOps alur kerja dengan ArgoCD atau Flux
Prasyarat
Sebelum Anda menerapkan OTel Container Insights dengan Helm, verifikasi bahwa Anda memenuhi persyaratan berikut.
-
Cluster Amazon EKS yang sudah ada yang menjalankan Kubernetes versi 1.28 atau yang lebih baru
-
Helm versi 3.9 atau yang lebih baru
-
kubectldikonfigurasi untuk berkomunikasi dengan cluster target Anda -
Izin IAM: kebijakan
CloudWatchAgentServerPolicyterkelola yang dilampirkan pada peran agen -
Penyedia OpenID Connect (OIDC) yang dikonfigurasi untuk IAM Roles for Service Accounts (IRSA)
-
Akses internet keluar dari cluster ke titik akhir CloudWatch
Instal bagan Helm
Selesaikan langkah-langkah berikut untuk menerapkan OTel Container Insights dengan menggunakan bagan Helm.
Langkah 1: Tambahkan repositori Helm
Tambahkan repositori bagan AWS Observability Helm ke konfigurasi Helm lokal Anda.
Untuk menambahkan repositori Helm
-
Jalankan perintah berikut untuk menambahkan repositori.
helm repo add aws-observability \ https://aws-observability.github.io/helm-charts -
Perbarui repositori untuk mendapatkan versi bagan terbaru.
helm repo update
Langkah 2: Buat peran IAM
Buat peran IAM yang memungkinkan CloudWatch agen mengirim data ke CloudWatch. Peran ini menggunakan IRSA untuk mengaitkan izin IAM dengan akun layanan Kubernetes.
Untuk membuat peran IAM untuk agen CloudWatch
-
Ambil URL penerbit OIDC untuk klaster Anda. Ganti
cluster-namedengan nama cluster Amazon EKS Anda.aws eks describe-cluster \ --namecluster-name\ --query "cluster.identity.oidc.issuer" \ --output text -
Buat peran IAM dengan kebijakan kepercayaan untuk IRSA. Ganti
account-iddengan ID AWS akun Anda danoidc-iddengan ID penyedia OIDC dari langkah sebelumnya (bagian setelahnya).https://oidc.eks.region.amazonaws.com/id/aws iam create-role \ --role-name EKS-CW-Observability-Role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::account-id:oidc-provider/oidc.eks.region.amazonaws.com/id/oidc-id" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region.amazonaws.com/id/oidc-id:sub": "system:serviceaccount:amazon-cloudwatch:cloudwatch-agent" } } }] }' -
Lampirkan kebijakan yang
CloudWatchAgentServerPolicydikelola ke peran.aws iam attach-role-policy \ --role-name EKS-CW-Observability-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
Langkah 3: Instal bagan
Instal bagan Helm CloudWatch Observability Amazon dengan OtEL Container Insights diaktifkan.
Untuk menginstal bagan Helm
-
Jalankan perintah berikut. Ganti
cluster-namedengan nama kluster Amazon EKS Anda,regiondengan AWS Wilayah Anda, danaccount-iddengan ID AWS akun Anda.helm install amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --create-namespace \ --set clusterName=cluster-name\ --set region=region\ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=truepenting
parameter
otelContainerInsights.enableddiperlukan. OTel Container Insights tidak diaktifkan secara default.
Langkah 4: Verifikasi instalasi
Konfirmasikan bahwa rilis Helm dan pod agen berhasil diterapkan.
Untuk memverifikasi instalasi Helm
-
Verifikasi bahwa status rilis Helm ditampilkan
deployed.helm list -n amazon-cloudwatch -
Konfirmasikan bahwa pod operator sedang berjalan.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=amazon-cloudwatch-observability -
Konfirmasikan bahwa pod CloudWatch agen berjalan di semua node.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agentSemua pod agen harus menunjukkan
Runningstatus.
Opsi konfigurasi kunci
Tabel berikut menjelaskan kunci Nilai bagan Helm yang dapat Anda konfigurasi. Lulus nilai-nilai ini dengan menggunakan --set bendera atau values.yaml file kustom.
Pengaturan cluster
| Parameter | Default | Deskripsi |
|---|---|---|
clusterName |
— | Nama cluster Amazon EKS. Wajib. |
region |
— | AWS Wilayah tempat cluster berjalan. Wajib. |
otelContainerInsights.enabled |
false |
Mengaktifkan OTel Container Insights dengan penerima filelog. |
Log kontainer (penerima oTel filelog)
| Parameter | Default | Deskripsi |
|---|---|---|
containerLogs.enabled |
true |
Mengaktifkan pengumpulan log kontainer dengan menggunakan penerima filelog OTel. |
containerLogs.logGroupName |
/aws/containerinsights/ |
Nama grup CloudWatch log Log untuk log kontainer. |
containerLogs.logRetentionDays |
7 |
Jumlah hari untuk menyimpan log kontainer di CloudWatch Log. |
Agen (metrik)
| Parameter | Default | Deskripsi |
|---|---|---|
agent.enabled |
true |
Mengaktifkan CloudWatch agen DaemonSet untuk pengumpulan metrik. |
agent.serviceAccount.name |
cloudwatch-agent |
Nama akun layanan Kubernetes untuk agen. |
agent.resources.requests.cpu |
100m |
Permintaan CPU untuk wadah agen. |
agent.resources.requests.memory |
128Mi |
Permintaan memori untuk wadah agen. |
agent.resources.limits.cpu |
200m |
Batas CPU untuk wadah agen. |
agent.resources.limits.memory |
256Mi |
Batas memori untuk wadah agen. |
Pemantauan GPU
| Parameter | Default | Deskripsi |
|---|---|---|
agent.config.logs.metrics_collected.kubernetes.enhanced_container_insights |
true |
Mengaktifkan metrik Wawasan Kontainer yang Ditingkatkan, termasuk metrik GPU. |
dcgmExporter.enabled |
false |
Mengaktifkan eksportir DCGM untuk metrik GPU NVIDIA. Membutuhkan node GPU NVIDIA. |
neuronMonitor.enabled |
false |
Mengaktifkan monitor Neuron untuk metrik AWS Inferentia dan Trainium. |
Manajemen sertifikat TLS
Operator CloudWatch Observability memerlukan sertifikat TLS untuk komunikasi webhook. Secara default, bagan menghasilkan sertifikat yang ditandatangani sendiri. Anda dapat menggunakan cert-manager untuk mengelola sertifikat secara otomatis.
Self-signed sertifikat (default)
Secara default, bagan Helm menghasilkan CA yang ditandatangani sendiri dan mengeluarkan sertifikat dari CA tersebut. Tidak diperlukan konfigurasi tambahan. Bagan secara otomatis memutar sertifikat ini selama peningkatan.
integrasi cert-manager
Anda dapat menggunakan cert-manager untuk mengotomatiskan penerbitan dan perpanjangan sertifikat. Pendekatan ini berguna ketika organisasi Anda memerlukan sertifikat yang ditandatangani secara eksternal atau manajemen sertifikat terpusat.
Untuk mengonfigurasi integrasi cert-manager
-
Verifikasi bahwa cert-manager diinstal di cluster Anda.
kubectl get pods -n cert-manager -
Instal bagan Helm dengan cert-manager diaktifkan. Ganti
cluster-namedengan nama kluster Amazon EKS Anda,regiondengan AWS Wilayah Anda, danaccount-iddengan ID AWS akun Anda.helm install amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --create-namespace \ --set clusterName=cluster-name\ --set region=region\ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=true \ --set admissionWebhooks.certManager.enabled=true
Saat cert-manager diaktifkan, bagan akan membuat Certificate sumber daya yang digunakan cert-manager untuk menerbitkan dan mengelola sertifikat TLS webhook secara otomatis.
catatan
Anda juga dapat menggunakan cert-manager dengan penerbit eksternal seperti Vault. HashiCorp Untuk mengonfigurasi penerbit eksternal, atur admissionWebhooks.certManager.issuerRef.name dan admissionWebhooks.certManager.issuerRef.kind agar sesuai dengan penerbit manajer sertifikat Anda.
Tingkatkan bagan
Tingkatkan bagan Helm untuk menerapkan nilai konfigurasi baru atau memperbarui ke versi bagan yang lebih baru.
Untuk memutakhirkan bagan Helm
-
Perbarui repositori Helm untuk mendapatkan versi bagan terbaru.
helm repo update -
Jalankan perintah upgrade dengan nilai yang Anda inginkan. Ganti
cluster-namedengan nama kluster Amazon EKS Anda,regiondengan AWS Wilayah Anda, danaccount-iddengan ID AWS akun Anda.helm upgrade amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --set clusterName=cluster-name\ --set region=region\ --set agent.serviceAccount.name=cloudwatch-agent \ --set "agent.serviceAccount.annotations.eks\\.amazonaws\\.com/role-arn=arn:aws:iam::account-id:role/EKS-CW-Observability-Role" \ --set otelContainerInsights.enabled=true -
Verifikasi bahwa pemutakhiran berhasil diselesaikan.
helm list -n amazon-cloudwatchNomor revisi harus bertambah dan status harus ditampilkan.
deployed
Tip
Untuk menghindari kehilangan nilai konfigurasi selama peningkatan, simpan nilai kustom Anda dalam values.yaml file dan berikan dengan -f values.yaml tanda.
Copot pemasangan bagan
Untuk menghapus OTel Container Insights dari cluster Anda, hapus instalan rilis Helm.
Untuk menghapus bagan Helm
-
Jalankan perintah berikut untuk menghapus instalasi rilis.
helm uninstall amazon-cloudwatch-observability \ --namespace amazon-cloudwatch -
Secara opsional, hapus namespace jika tidak lagi diperlukan.
kubectl delete namespace amazon-cloudwatch
Setelah Anda menghapus bagan Helm, peran IAM dan konfigurasi penyedia OIDC tetap ada di akun Anda. AWS Hapus sumber daya ini secara terpisah jika tidak lagi diperlukan.
aws iam detach-role-policy \ --role-name EKS-CW-Observability-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy aws iam delete-role \ --role-name EKS-CW-Observability-Role
Verifikasi data di CloudWatch
Setelah Anda menginstal bagan Helm, data Wawasan Kontainer muncul CloudWatch dalam waktu 3 hingga 5 menit.
Periksa metrik
Untuk memeriksa metrik di CloudWatch
-
Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/
. -
Di panel navigasi, pilih Wawasan Kontainer.
-
Verifikasi bahwa klaster Anda muncul di daftar klaster dan metrik infrastruktur terisi.
Periksa log
Untuk memverifikasi bahwa grup log ada untuk klaster Anda, jalankan perintah berikut. Ganti cluster-name dengan nama cluster Amazon EKS Anda.
aws logs describe-log-groups \ --log-group-name-prefix "/aws/containerinsights/cluster-name" \ --query "logGroups[].logGroupName" \ --output table
Pemecahan masalah
Gunakan panduan berikut untuk menyelesaikan masalah umum saat Anda menerapkan OTel Container Insights dengan Helm.
Pod operator di CrashLoopBackOff
Gejala: Saat Anda menjalankankubectl get pods -n
amazon-cloudwatch, pod operator menunjukkan CrashLoopBackOff status.
Penyebab: Pod operator tidak dapat memulai karena masalah sertifikat TLS atau izin yang tidak memadai.
Solusi: Selesaikan langkah-langkah berikut untuk mengatasi masalah ini.
-
Periksa log pod operator untuk mengetahui kesalahan terkait sertifikat.
kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=amazon-cloudwatch-observability --tail=50 -
Verifikasi bahwa rahasia TLS webhook ada di namespace.
kubectl get secrets -n amazon-cloudwatch | grep webhook -
Jika Anda menggunakan cert-manager, verifikasi bahwa status
Certificatesumber daya ditampilkan.Readykubectl get certificate -n amazon-cloudwatch -
Jika sertifikat hilang atau tidak valid, hapus instalasi dan instal ulang bagan untuk membuat ulang sertifikat.
helm uninstall amazon-cloudwatch-observability -n amazon-cloudwatch
Pod agen tidak dijadwalkan di semua node
Gejala: Agen DaemonSet menunjukkan pod lebih sedikit daripada jumlah node di cluster Anda.
Penyebab: Node taints, resource constraints, atau node selector mencegah pod agen dari penjadwalan pada node tertentu.
Solusi: Selesaikan langkah-langkah berikut untuk mengatasi masalah ini.
-
Periksa DaemonSet status untuk masalah penjadwalan.
kubectl get daemonset -n amazon-cloudwatch cloudwatch-agent -
Periksa pod yang tidak dapat dijadwalkan dan lihat acaranya.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --field-selector=status.phase!=Running -
Jika node memiliki taint, tambahkan toleransi ke nilai bagan Helm. Misalnya, untuk mentolerir semua noda, tingkatkan bagan dengan tanda berikut.
helm upgrade amazon-cloudwatch-observability \ aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch \ --reuse-values \ --set "agent.tolerations[0].operator=Exists" -
Verifikasi bahwa pod agen sekarang berjalan di semua node.
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent -o wide