View a markdown version of this page

Terapkan Wawasan Kontainer OTel dengan Helm - Amazon CloudWatch

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 CloudWatchAgentServerPolicy terkelola 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
  1. Jalankan perintah berikut untuk menambahkan repositori.

    helm repo add aws-observability \ https://aws-observability.github.io/helm-charts
  2. 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
  1. Ambil URL penerbit OIDC untuk klaster Anda. Ganti cluster-name dengan nama cluster Amazon EKS Anda.

    aws eks describe-cluster \ --name cluster-name \ --query "cluster.identity.oidc.issuer" \ --output text
  2. Buat peran IAM dengan kebijakan kepercayaan untuk IRSA. Ganti account-id dengan ID AWS akun Anda dan oidc-id dengan 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" } } }] }'
  3. Lampirkan kebijakan yang CloudWatchAgentServerPolicy dikelola 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-name dengan nama kluster Amazon EKS Anda, region dengan AWS Wilayah Anda, dan account-id dengan 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
    penting

    parameter otelContainerInsights.enabled diperlukan. OTel Container Insights tidak diaktifkan secara default.

Langkah 4: Verifikasi instalasi

Konfirmasikan bahwa rilis Helm dan pod agen berhasil diterapkan.

Untuk memverifikasi instalasi Helm
  1. Verifikasi bahwa status rilis Helm ditampilkandeployed.

    helm list -n amazon-cloudwatch
  2. Konfirmasikan bahwa pod operator sedang berjalan.

    kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=amazon-cloudwatch-observability
  3. Konfirmasikan bahwa pod CloudWatch agen berjalan di semua node.

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

    Semua pod agen harus menunjukkan Running status.

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/cluster-name/application 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
  1. Verifikasi bahwa cert-manager diinstal di cluster Anda.

    kubectl get pods -n cert-manager
  2. Instal bagan Helm dengan cert-manager diaktifkan. Ganti cluster-name dengan nama kluster Amazon EKS Anda, region dengan AWS Wilayah Anda, dan account-id dengan 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
  1. Perbarui repositori Helm untuk mendapatkan versi bagan terbaru.

    helm repo update
  2. Jalankan perintah upgrade dengan nilai yang Anda inginkan. Ganti cluster-name dengan nama kluster Amazon EKS Anda, region dengan AWS Wilayah Anda, dan account-id dengan 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
  3. Verifikasi bahwa pemutakhiran berhasil diselesaikan.

    helm list -n amazon-cloudwatch

    Nomor 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
  1. Jalankan perintah berikut untuk menghapus instalasi rilis.

    helm uninstall amazon-cloudwatch-observability \ --namespace amazon-cloudwatch
  2. 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
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di panel navigasi, pilih Wawasan Kontainer.

  3. 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.

  1. Periksa log pod operator untuk mengetahui kesalahan terkait sertifikat.

    kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=amazon-cloudwatch-observability --tail=50
  2. Verifikasi bahwa rahasia TLS webhook ada di namespace.

    kubectl get secrets -n amazon-cloudwatch | grep webhook
  3. Jika Anda menggunakan cert-manager, verifikasi bahwa status Certificate sumber daya ditampilkan. Ready

    kubectl get certificate -n amazon-cloudwatch
  4. 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.

  1. Periksa DaemonSet status untuk masalah penjadwalan.

    kubectl get daemonset -n amazon-cloudwatch cloudwatch-agent
  2. 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
  3. 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"
  4. Verifikasi bahwa pod agen sekarang berjalan di semua node.

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