View a markdown version of this page

Menyiapkan konsumsi metrik menggunakan AWS Distro untuk OpenTelemetry di cluster Layanan Kubernetes Amazon Elastic - Amazon Managed Service for Prometheus

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

Menyiapkan konsumsi metrik menggunakan AWS Distro untuk OpenTelemetry di cluster Layanan Kubernetes Amazon Elastic

Anda dapat menggunakan pengumpul AWS Distro for OpenTelemetry (ADOT) untuk mengikis metrik dari Prometheus-instrumented aplikasi, dan mengirim metrik ke Amazon Managed Service for Prometheus.

catatan

Untuk informasi lebih lanjut tentang kolektor ADOT, lihat AWS Distro untuk. OpenTelemetry

Untuk informasi selengkapnya tentang Prometheus-instrumented aplikasi, lihatApa itu Prometheus-compatible metrik?.

Mengumpulkan metrik Prometheus dengan ADOT melibatkan tiga OpenTelemetry komponen: Penerima Prometheus, Eksportir Penulisan Jarak Jauh Prometheus, dan Ekstensi Otentikasi Sigv4.

Anda dapat mengonfigurasi Penerima Prometheus menggunakan konfigurasi Prometheus yang ada untuk melakukan penemuan layanan dan pengikisan metrik. Penerima Prometheus mengikis metrik dalam format eksposisi Prometheus. Setiap aplikasi atau titik akhir yang ingin Anda gores harus dikonfigurasi dengan pustaka klien Prometheus. Penerima Prometheus mendukung set lengkap konfigurasi pengikisan dan pelabelan ulang Prometheus yang dijelaskan dalam Konfigurasi dalam dokumentasi Prometheus. https://prometheus.io/docs/prometheus/latest/configuration/configuration/ Anda dapat menempelkan konfigurasi ini langsung ke konfigurasi ADOT Collector Anda.

Eksportir Penulisan Jarak Jauh Prometheus menggunakan remote_write titik akhir untuk mengirim metrik yang tergores ke ruang kerja portal manajemen Anda. Permintaan HTTP untuk mengekspor data akan ditandatangani dengan AWS SIGv4, AWS protokol untuk otentikasi aman, dengan Ekstensi Otentikasi Sigv4. Untuk informasi selengkapnya, lihat proses penandatanganan Signature Version 4.

<kubernetes_sd_config>Kolektor secara otomatis menemukan titik akhir metrik Prometheus di Amazon EKS dan menggunakan konfigurasi yang ditemukan di. https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config

Demo berikut adalah contoh konfigurasi ini pada cluster yang menjalankan Amazon Elastic Kubernetes Service atau Kubernetes yang dikelola sendiri. Untuk melakukan langkah-langkah ini, Anda harus memiliki AWS kredenSIAL dari salah satu opsi potensial dalam rantai AWS kredenSIAL default. Untuk informasi selengkapnya, lihat Mengonfigurasi AWS SDK untuk Go. Demo ini menggunakan contoh aplikasi yang digunakan untuk pengujian integrasi proses. Aplikasi sampel mengekspos metrik di /metrics titik akhir, seperti pustaka klien Prometheus.

Prasyarat

Sebelum memulai langkah-langkah pengaturan penyerapan berikut, Anda harus mengatur peran IAM untuk akun layanan dan kebijakan kepercayaan.

Untuk mengatur peran IAM untuk akun layanan dan kebijakan kepercayaan
  1. Buat peran IAM untuk akun layanan dengan mengikuti langkah-langkah diMenyiapkan peran layanan untuk menelan metrik dari kluster Amazon EKS.

    Kolektor ADOT akan menggunakan peran ini saat mengikis dan mengekspor metrik.

  2. Selanjutnya, edit kebijakan kepercayaan. Buka konsol IAM di https://console.aws.amazon.com/iam/.

  3. Di panel navigasi kiri, pilih Peran dan temukan amp-iamproxy-ingest- role yang Anda buat pada langkah 1.

  4. Pilih tab Relasi kepercayaan dan pilih Edit hubungan kepercayaan.

  5. Dalam kebijakan hubungan kepercayaan JSON, ganti aws-amp dengan adot-col lalu pilih Per barui Kebijakan Kepercayaan. Kebijakan kepercayaan yang dihasilkan akan terlihat seperti berikut:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:adot-col:amp-iamproxy-ingest-service-account", "oidc.eks.us-east-1.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] }
  6. Pilih tab Izin dan pastikan kebijakan izin berikut dilampirkan ke peran.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "aps:RemoteWrite", "aps:GetSeries", "aps:GetLabels", "aps:GetMetricMetadata" ], "Resource": "*" } ] }

Mengaktifkan pengumpulan metrik Prometheus

catatan

Saat Anda membuat namespace di Amazon EKS, alertmanager dan eksportir node dinonaktifkan secara default.

Untuk mengaktifkan koleksi Prometheus di cluster Amazon EKS atau Kubernetes
  1. Fork dan kloning aplikasi sampel dari repositori di aws- otel-community.

    Kemudian jalankan perintah berikut.

    cd ./sample-apps/prometheus-sample-app docker build . -t prometheus-sample-app:latest
  2. Dorong gambar ini ke registri seperti Amazon ECR atau DockerHub.

  3. Terapkan aplikasi sampel di cluster dengan menyalin konfigurasi Kubernetes ini dan menerapkannya. Ubah gambar ke gambar yang baru saja Anda dorong dengan mengganti {{PUBLIC_SAMPLE_APP_IMAGE}} di prometheus-sample-app.yaml file.

    curl https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/examples/eks/aws-prometheus/prometheus-sample-app.yaml -o prometheus-sample-app.yaml kubectl apply -f prometheus-sample-app.yaml
  4. Masukkan perintah berikut untuk memverifikasi bahwa aplikasi sampel telah dimulai. Dalam output perintah, Anda akan melihat prometheus-sample-app di NAME kolom.

    kubectl get all -n aoc-prometheus-pipeline-demo
  5. Mulai instance default dari ADOT Collector. Untuk melakukannya, pertama-tama masukkan perintah berikut untuk menarik konfigurasi Kubernetes untuk ADOT Collector.

    curl https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/examples/eks/aws-prometheus/prometheus-daemonset.yaml -o prometheus-daemonset.yaml

    Kemudian edit file template, ganti titik akhir remote_write untuk ruang kerja Amazon Managed Service for Prometheus dan Wilayah Anda. YOUR_ENDPOINT YOUR_REGION Gunakan titik akhir remote_write yang ditampilkan di konsol Amazon Managed Service for Prometheus saat Anda melihat detail ruang kerja Anda.

    Anda juga perlu mengubah YOUR_ACCOUNT_ID di bagian akun layanan konfigurasi Kubernetes ke ID akun Anda AWS .

    Dalam contoh ini, konfigurasi ADOT Collector menggunakan anotasi (scrape=true) untuk memberi tahu titik akhir target mana yang akan dikikis. Hal ini memungkinkan ADOT Collector membedakan titik akhir aplikasi sampel dari titik akhir sistem kube di cluster Anda. Anda dapat menghapus ini dari konfigurasi label ulang jika ingin mengikis aplikasi sampel yang berbeda.

  6. Masukkan perintah berikut untuk menerapkan kolektor ADOT.

    kubectl apply -f prometheus-daemonset.yaml
  7. Masukkan perintah berikut untuk memverifikasi bahwa kolektor ADOT telah dimulai. Cari adot-col di NAMESPACE kolom.

    kubectl get pods -n adot-col
  8. Verifikasi bahwa pipa bekerja dengan menggunakan eksportir penebangan. Template contoh kami sudah terintegrasi dengan eksportir penebangan. Masukkan perintah berikut.

    kubectl get pods -A kubectl logs -n adot-col name_of_your_adot_collector_pod

    Beberapa metrik yang tergores dari aplikasi sampel akan terlihat seperti contoh berikut.

    Resource labels: -> service.name: STRING(kubernetes-service-endpoints) -> host.name: STRING(192.168.16.238) -> port: STRING(8080) -> scheme: STRING(http) InstrumentationLibraryMetrics #0 Metric #0 Descriptor: -> Name: test_gauge0 -> Description: This is my gauge -> Unit: -> DataType: DoubleGauge DoubleDataPoints #0 StartTime: 0 Timestamp: 1606511460471000000 Value: 0.000000
  9. Untuk menguji apakah Amazon Managed Service for Prometheus menerima metrik, gunakan. awscurl Alat ini memungkinkan Anda mengirim permintaan HTTP melalui baris perintah dengan otentikasi AWS Sigv4, jadi Anda harus menyiapkan AWS kredentif secara lokal dengan izin yang benar untuk menanyakan dari Amazon Managed Service for Prometheus Untuk petunjuk pemasanganawscurl, lihat awscurl. https://github.com/okigan/awscurl

    Dalam perintah berikut, gantiAMP_REGION, dan AMP_ENDPOINT dengan informasi untuk ruang kerja Amazon Managed Service untuk Prometheus Anda.

    awscurl --service="aps" --region="AMP_REGION" "https://AMP_ENDPOINT/api/v1/query?query=adot_test_gauge0" {"status":"success","data":{"resultType":"vector","result":[{"metric":{"__name__":"adot_test_gauge0"},"value":[1606512592.493,"16.87214000011479"]}]}}

    Jika Anda menerima metrik sebagai respons, itu berarti penyiapan pipeline Anda telah berhasil dan metrik telah berhasil disebarkan dari aplikasi sampel ke Amazon Managed Service for Prometheus.

Membersihkan

Untuk membersihkan demo ini, masukkan perintah berikut.

kubectl delete namespace aoc-prometheus-pipeline-demo kubectl delete namespace adot-col

Konfigurasi lanjutan

Penerima Prometheus mendukung set lengkap konfigurasi pengikisan dan pelabelan ulang Prometheus yang dijelaskan dalam Konfigurasi dalam dokumentasi Prometheus. https://prometheus.io/docs/prometheus/latest/configuration/configuration/ Anda dapat menempelkan konfigurasi ini langsung ke konfigurasi ADOT Collector Anda.

Konfigurasi untuk Penerima Prometheus mencakup penemuan layanan Anda, konfigurasi pengikisan, dan konfigurasi pelabelan ulang. Konfigurasi penerima terlihat seperti berikut ini.

receivers: prometheus: config: [[Your Prometheus configuration]]

Berikut ini adalah contoh konfigurasi.

receivers: prometheus: config: global: scrape_interval: 1m scrape_timeout: 10s scrape_configs: - job_name: kubernetes-service-endpoints sample_limit: 10000 kubernetes_sd_configs: - role: endpoints tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token

Jika Anda memiliki konfigurasi Prometheus yang ada, Anda harus mengganti $ karakter dengan $$ untuk menghindari nilai diganti dengan variabel lingkungan. *Hal ini sangat penting untuk nilai penggantian relabel_configuration. Misalnya, jika Anda mulai dengan relabel_configuration berikut:

relabel_configs: - source_labels: [__meta_kubernetes_ingress_scheme,__address__,__meta_kubernetes_ingress_path] regex: (.+);(.+);(.+) replacement: ${1}://${2}${3} target_label: __param_target

Ini akan menjadi sebagai berikut:

relabel_configs: - source_labels: [__meta_kubernetes_ingress_scheme,__address__,__meta_kubernetes_ingress_path] regex: (.+);(.+);(.+) replacement: $${1}://${2}${3} target_label: __param_target

Eksportir penulisan jarak jauh Prometheus dan ekstensi otentikasi Sigv4

Konfigurasi untuk Eksportir Penulisan Jarak Jauh Prometheus dan Ekstensi Otentikasi Sigv4 lebih sederhana daripada penerima Prometheus. Pada tahap proses ini, metrik telah dicerna, dan kami siap untuk mengekspor data ini ke Amazon Managed Service for Prometheus. Persyaratan minimum untuk konfigurasi yang berhasil untuk berkomunikasi dengan Amazon Managed Service for Prometheus ditunjukkan dalam contoh berikut.

extensions: sigv4auth: service: "aps" region: "user-region" exporters: prometheusremotewrite: endpoint: "https://aws-managed-prometheus-endpoint/api/v1/remote_write" auth: authenticator: "sigv4auth"

Konfigurasi ini mengirimkan permintaan HTTPS yang ditandatangani oleh AWS SIGv4 menggunakan AWS kredenSIAL dari rantai kre AWS denSIAL default. Untuk informasi selengkapnya, lihat Mengonfigurasi AWS SDK untuk Go. Anda harus menentukan layanan yang akan dilakukanaps.

Terlepas dari metode penerapannya, kolektor ADOT harus memiliki akses ke salah satu opsi yang tercantum dalam rantai AWS kredenSIAL default. Ekstensi Otentikasi Sigv4 bergantung pada AWS SDK untuk Go dan menggunakannya untuk mengambil kredenSIAL dan mengotentikasi. Anda harus memastikan bahwa kredenSIAL ini memiliki izin penulisan jarak jauh untuk Amazon Managed Service for Prometheus.