Pemecahan masalah metrik Prometheus di klaster Amazon dan Kubernetes EKS - Amazon CloudWatch

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

Pemecahan masalah metrik Prometheus di klaster Amazon dan Kubernetes EKS

Bagian ini memberikan bantuan untuk memecahkan masalah penyiapan metrik Prometheus Anda di Amazon dan klaster Kubernetes. EKS

Langkah-langkah pemecahan masalah umum di Amazon EKS

Untuk mengonfirmasi bahwa CloudWatch agen sedang berjalan, masukkan perintah berikut.

kubectl get pod -n amazon-cloudwatch

Outputnya harus menyertakan sebuah baris dengan cwagent-prometheus-id pada kolom NAME dan Running dalam STATUS column.

Untuk menampilkan detail tentang pod yang sedang berjalan, Anda harus memasukkan perintah berikut. Ganti pod-name dengan nama lengkap pod Anda yang memiliki nama yang dimulai dengancw-agent-prometheus.

kubectl describe pod pod-name -n amazon-cloudwatch

Jika Anda telah menginstal CloudWatch Wawasan Kontainer, Anda dapat menggunakan Wawasan CloudWatch Log untuk menanyakan log dari CloudWatch agen yang mengumpulkan metrik Prometheus.

Cara menjalankan kueri terhadap log aplikasi
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di panel navigasi, pilih Wawasan CloudWatch Log.

  3. Pilih grup log untuk log aplikasi, /aws/containerights/cluster-name/aplikasi

  4. Ganti persamaan pencarian dengan kueri berikut, dan pilih Jalankan kueri

    fields ispresent(kubernetes.pod_name) as haskubernetes_pod_name, stream, kubernetes.pod_name, log | filter haskubernetes_pod_name and kubernetes.pod_name like /cwagent-prometheus

Anda juga dapat mengonfirmasi bahwa metrik dan metadata Prometheus sedang dicerna sebagai peristiwa Log. CloudWatch

Cara mengonfirmasi bahwa data Prometheus sedang diserap
  1. Buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Di panel navigasi, pilih Wawasan CloudWatch Log.

  3. Pilih /aws/containerights/cluster-name/prometheus

  4. Ganti persamaan pencarian dengan kueri berikut, dan pilih Jalankan kueri

    fields @timestamp, @message | sort @timestamp desc | limit 20

Mencatat log metrik-metrik Prometheus yang dibuang

Rilis ini tidak akan mengumpulkan metrik-metrik Prometheus yang bertipe histogram. Anda dapat menggunakan CloudWatch agen untuk memeriksa apakah ada metrik Prometheus yang dijatuhkan karena merupakan metrik histogram. Anda juga dapat mencatat daftar 500 metrik Prometheus pertama yang dijatuhkan dan tidak dikirim CloudWatch karena merupakan metrik histogram.

Untuk melihat apakah ada metrik yang dibuang, masukkan perintah berikut:

kubectl logs -l "app=cwagent-prometheus" -n amazon-cloudwatch --tail=-1

Jika ada metrik yang dibuang, maka Anda akan melihat garis-garis berikut di file /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log.

I! Drop Prometheus metrics with unsupported types. Only Gauge, Counter and Summary are supported. I! Please enable CWAgent debug mode to view the first 500 dropped metrics

Jika Anda melihat garis-garis tersebut dan ingin mengetahui metrik apa yang dibuang, lakukan langkah-langkah berikut ini.

Cara mencatat log daftar metrik Prometheus yang dibuang
  1. Ubah CloudWatch agen ke mode debug dengan menambahkan baris tebal berikut ke prometheus-k8s.yaml file prometheus-eks.yaml atau Anda, dan simpan file.

    { "agent": { "debug": true },

    Bagian file ini akan terlihat seperti berikut ini:

    cwagentconfig.json: | { "agent": { "debug": true }, "logs": { "metrics_collected": {
  2. Instal ulang CloudWatch agen untuk mengaktifkan mode debug dengan memasukkan perintah berikut:

    kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch kubectl apply -f prometheus.yaml

    Metrik yang dijatuhkan dicatat di pod CloudWatch agen.

  3. Untuk mengambil log dari pod CloudWatch agen, masukkan perintah berikut:

    kubectl logs -l "app=cwagent-prometheus" -n amazon-cloudwatch --tail=-1

    Atau, jika Anda menginstal logging Container Insights Fluentd, log juga disimpan di grup log Log CloudWatch /aws/containerinsights/ cluster_name/aplikasi.

    Untuk melakukan kueri pada log ini, Anda dapat mengikuti langkah-langkah kueri aplikasi log in Langkah-langkah pemecahan masalah umum di Amazon EKS.

Di mana metrik Prometheus dicerna sebagai peristiwa log Log? CloudWatch

CloudWatch Agen membuat aliran log untuk setiap konfigurasi pekerjaan scrape Prometheus. Sebagai contoh, di dalam file prometheus-eks.yaml dan file prometheus-k8s.yaml, garis job_name: 'kubernetes-pod-appmesh-envoy' melakukan scraping terhadap metrik-metrik App Mesh. Target Prometheus ditentukan sebagai kubernetes-pod-appmesh-envoy. Jadi semua metrik App Mesh Prometheus dicerna CloudWatch sebagai peristiwa Log di aliran log di bawah grup log bernama /AWS/ContainerInsights/Cluster-Name/Prometheus. kubernetes-pod-appmesh-envoy

Saya tidak melihat metrik Amazon EKS atau Kubernetes Prometheus dalam metrik CloudWatch

Pertama, Anda harus memastikan bahwa metrik-metrik Prometheus diserap sebagai peristiwa log dalam grup log /aws/containerinsights/cluster-name/Prometheus. Gunakan informasi dalam Di mana metrik Prometheus dicerna sebagai peristiwa log Log? CloudWatch untuk membantu Anda memeriksa log stream target. Jika log stream tidak dibuat atau tidak ada peristiwa log baru di log stream, periksa hal berikut:

  • Periksa apakah titik akhir pengekspor metrik Prometheus sudah diatur dengan benar

  • Periksa apakah konfigurasi pengikisan Prometheus di config map: cwagent-prometheus bagian file agen sudah benar. CloudWatch YAML Konfigurasinya harus sama dengan konfigurasi yang akan digunakan dalam file konfigurasi Prometheus. Untuk informasi selengkapnya, silakan lihat <scrape_config> dalam dokumentasi Prometheus.

Jika metrik Prometheus dicerna sebagai peristiwa log dengan benar, periksa apakah setelan format metrik yang disematkan ditambahkan ke dalam peristiwa log untuk menghasilkan metrik. CloudWatch

"CloudWatchMetrics":[ { "Metrics":[ { "Name":"envoy_http_downstream_cx_destroy_remote_active_rq" } ], "Dimensions":[ [ "ClusterName", "Namespace" ] ], "Namespace":"ContainerInsights/Prometheus" } ],

Untuk informasi selengkapnya tentang format metrik tersemat, silakan lihat Spesifikasi: Format metrik tersemat .

Jika tidak ada format metrik yang disematkan dalam peristiwa log, periksa apakah metric_declaration bagian tersebut dikonfigurasi dengan benar di config map: prometheus-cwagentconfig bagian YAML file instalasi CloudWatch agen. Untuk informasi selengkapnya, lihat Tutorial untuk menambahkan target scrape Prometheus baru: metrik Prometheus Server API.