Siapkan CloudWatch agen untuk mengumpulkan metrik klaster - Amazon CloudWatch

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

Siapkan CloudWatch agen untuk mengumpulkan metrik klaster

penting

Jika Anda menginstal Container Insights di EKS klaster Amazon, sebaiknya gunakan EKS add-on Amazon CloudWatch Observability untuk penginstalan, alih-alih menggunakan petunjuk di bagian ini. Untuk informasi dan instruksi selengkapnya, silakan lihat Instal add-on Amazon CloudWatch Observability EKS.

Untuk menyiapkan Wawasan Kontainer guna mengumpulkan metrik-metrik, Anda dapat mengikuti langkah-langkah yang diuraikan di Penyiapan Mulai Cepat untuk Wawasan Kontainer di Amazon EKS dan Kubernetes atau Anda dapat mengikuti langkah-langkah di bagian ini. Pada langkah-langkah berikut, Anda mengatur CloudWatch agen untuk dapat mengumpulkan metrik dari cluster Anda.

Jika Anda menginstal di EKS klaster Amazon dan Anda menggunakan petunjuk di bagian ini pada atau setelah 6 November 2023, Anda menginstal Wawasan Kontainer dengan peningkatan observabilitas untuk Amazon EKS di cluster.

Langkah 1: Buat namespace untuk CloudWatch

Gunakan langkah berikut untuk membuat namespace Kubernetes yang dipanggil. amazon-cloudwatch CloudWatch Anda dapat melewati langkah ini jika Anda telah membuat namespace ini.

Untuk membuat namespace untuk CloudWatch
  • Masukkan perintah berikut.

    kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cloudwatch-namespace.yaml

Langkah 2: Membuat sebuah akun layanan di klaster

Gunakan salah satu metode berikut untuk membuat akun layanan untuk CloudWatch agen, jika Anda belum memilikinya.

  • Gunakan kubectl

  • Gunakan kubeconfig file

Gunakan kubectl untuk otentikasi

Untuk digunakan kubectl untuk membuat akun layanan untuk CloudWatch agen
  • Masukkan perintah berikut.

    kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-serviceaccount.yaml

Jika Anda tidak mengikuti langkah-langkah sebelumnya, tetapi Anda sudah memiliki akun layanan untuk CloudWatch agen yang ingin Anda gunakan, Anda harus memastikan bahwa ia memiliki aturan berikut. Selain itu, di langkah-langkah selanjutnya dalam instalasi Wawasan Kontainer, Anda juga harus menggunakan nama akun layanan tersebut, bukan cloudwatch-agent.

rules: - apiGroups: [""] resources: ["pods", "nodes", "endpoints"] verbs: ["list", "watch"] - apiGroups: [ "" ] resources: [ "services" ] verbs: [ "list", "watch" ] - apiGroups: ["apps"] resources: ["replicasets", "daemonsets", "deployments", "statefulsets"] verbs: ["list", "watch"] - apiGroups: ["batch"] resources: ["jobs"] verbs: ["list", "watch"] - apiGroups: [""] resources: ["nodes/proxy"] verbs: ["get"] - apiGroups: [""] resources: ["nodes/stats", "configmaps", "events"] verbs: ["create", "get"] - apiGroups: [""] resources: ["configmaps"] resourceNames: ["cwagent-clusterleader"] verbs: ["get","update"] - nonResourceURLs: ["/metrics"] verbs: ["get", "list", "watch"]

Gunakan kubeconfig untuk otentikasi

Atau, Anda dapat menggunakan kubeconfig file untuk otentikasi. Metode Thsi memungkinkan Anda untuk melewati kebutuhan akan akun layanan b secara langsung menentukan kubeconfig jalur dalam konfigurasi agen Anda CloudWatch . Ini juga memungkinkan Anda untuk menghapus ketergantungan Anda pada bidang kontrol Kubernetes API untuk otentikasi, menyederhanakan pengaturan Anda dan berpotensi meningkatkan keamanan dengan mengelola otentikasi melalui file kubeconfig Anda.

Untuk menggunakan metode ini, perbarui file konfigurasi CloudWatch agen Anda untuk menentukan jalur ke kubeconfig file Anda, seperti pada contoh berikut.

{ "logs": { "metrics_collected": { "kubernetes": { "cluster_name": "YOUR_CLUSTER_NAME", "enhanced_container_insights": false, "accelerated_compute_metrics": false, "tag_service": false, "kube_config_path": "/path/to/your/kubeconfig" "host_ip": "HOSTIP" } } } }

Untuk membuat kubeconfig file, buat Certificate Signing Request (CSR) untuk admin/{create_your_own_user} pengguna dengan peran system:masters Kubernetes. Kemudian tandatangani dengan Certificate Authority (CA) cluster Kubernetes dan buat file tersebut. kubeconfig

Langkah 3: Buat ConfigMap untuk CloudWatch agen

Gunakan langkah-langkah berikut untuk membuat ConfigMap untuk CloudWatch agen.

Untuk membuat ConfigMap untuk CloudWatch agen
  1. Unduh ConfigMap YAML ke host kubectl klien Anda dengan menjalankan perintah berikut:

    curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-configmap-enhanced.yaml
  2. Edit YAML file yang diunduh, sebagai berikut:

    • cluster_name – Di bagian kubernetes, ganti {{cluster_name}} dengan nama klaster Anda. Hapus karakter {{}}. Atau, jika Anda menggunakan EKS klaster Amazon, Anda dapat menghapus "cluster_name" bidang dan nilainya. Jika Anda melakukannya, CloudWatch agen mendeteksi nama cluster dari EC2 tag Amazon.

  3. (Opsional) Buat perubahan lebih lanjut ConfigMap berdasarkan persyaratan pemantauan Anda, sebagai berikut:

    • metrics_collection_interval – Di bagian kubernetes, Anda dapat menentukan seberapa sering agen mengumpulkan metrik. Bawaannya adalah 60 detik. Interval pengumpulan kadvisor bawaan di kubelet adalah 15 detik, jadi jangan mengatur nilai ini menjadi kurang dari 15 detik.

    • endpoint_override - Di logs bagian ini, Anda dapat menentukan titik akhir CloudWatch Log jika Anda ingin mengganti titik akhir default. Anda mungkin ingin melakukan ini jika Anda menerbitkan dari cluster di a VPC dan Anda ingin data pergi ke VPC titik akhir.

    • force_flush_interval — Di logs bagian ini, Anda dapat menentukan interval untuk batching peristiwa log sebelum dipublikasikan ke Log. CloudWatch Bawaannya adalah 5 detik.

    • region – Secara bawaan, agen menerbitkan metrik–metrik ke Wilayah tempat simpul pekerja berada. Untuk menggantinyaini, Anda dapat menambahkan sebuah bidang region di bagian agent: misalnya, "region":"us-west-2".

    • bagian statsd - Jika Anda ingin agen CloudWatch Log juga berjalan sebagai pendengar StatSD di setiap node pekerja klaster Anda, Anda dapat menambahkan statsd bagian ke bagian metrics tersebut, seperti pada contoh berikut. Untuk informasi tentang pilihan StatsD lainnya untuk bagian ini, silakan lihat Ambil metrik kustom dengan StatSD .

      "metrics": { "metrics_collected": { "statsd": { "service_address":":8125" } } }

      Contoh lengkap dari JSON bagian ini adalah sebagai berikut. Jika Anda menggunakan kubeconfig file untuk otentikasi, tambahkan kube_config_path parameter untuk menentukan path ke file kubeconfig Anda.

      { "agent": { "region": "us-east-1" }, "logs": { "metrics_collected": { "kubernetes": { "cluster_name": "MyCluster", "metrics_collection_interval": 60, "kube_config_path": "/path/to/your/kubeconfig" //if using kubeconfig for authentication } }, "force_flush_interval": 5, "endpoint_override": "logs.us-east-1.amazonaws.com" }, "metrics": { "metrics_collected": { "statsd": { "service_address": ":8125" } } } }
  4. Buat ConfigMap di cluster dengan menjalankan perintah berikut.

    kubectl apply -f cwagent-configmap.yaml

Langkah 4: Menyebarkan CloudWatch agen sebagai DaemonSet

Untuk menyelesaikan instalasi CloudWatch agen dan mulai mengumpulkan metrik kontainer, gunakan langkah-langkah berikut.

Untuk menyebarkan CloudWatch agen sebagai DaemonSet
    • Jika Anda tidak ingin menggunakan StatsD pada klaster tersebut, Anda harus memasukkan perintah berikut.

      kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-daemonset.yaml
    • Jika Anda ingin menggunakan StatsD, Anda harus mengikuti langkah-langkah ini:

      1. Unduh DaemonSet YAML ke host kubectl klien Anda dengan menjalankan perintah berikut.

        curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/daemonset/container-insights-monitoring/cwagent/cwagent-daemonset.yaml
      2. Batalkan komentar di bagian port dalam file cwagent-daemonset.yaml seperti berikut ini:

        ports: - containerPort: 8125 hostPort: 8125 protocol: UDP
      3. Terapkan CloudWatch agen di cluster Anda dengan menjalankan perintah berikut.

        kubectl apply -f cwagent-daemonset.yaml
      4. Menyebarkan CloudWatch agen pada node Windows di cluster Anda dengan menjalankan perintah berikut. Pendengar StatSD tidak didukung pada CloudWatch agen di Windows.

        kubectl apply -f cwagent-daemonset-windows.yaml
  1. Lakukan validasi bahwa agen di-deploy dengan menjalankan perintah berikut.

    kubectl get pods -n amazon-cloudwatch

Saat selesai, CloudWatch agen membuat grup log bernama /aws/containerinsights/Cluster_Name/performance dan mengirimkan peristiwa log kinerja ke grup log ini. Jika Anda juga menyiapkan agen sebagai sebuah pendengar StatsD, maka agen itu juga akan mendengarkan metrik-metrik StatsD pada port 8125 dengan alamat IP simpul tempat pod aplikasi dijadwalkan.

Pemecahan Masalah

Jika agen tersebut tidak melakukan deployment dengan benar, coba lakukan hal berikut:

  • Jalankan perintah berikut untuk mendapatkan daftar pod.

    kubectl get pods -n amazon-cloudwatch
  • Jalankan perintah berikut dan periksa peristiwa di bagian bawah output.

    kubectl describe pod pod-name -n amazon-cloudwatch
  • Jalankan perintah berikut untuk memeriksa log.

    kubectl logs pod-name -n amazon-cloudwatch