Siapkan konsumsi metrik menggunakan AWS Distro untuk klaster Amazon Elastic OpenTelemetry Kubernetes Service - Layanan Terkelola Amazon untuk Prometheus

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

Siapkan konsumsi metrik menggunakan AWS Distro untuk klaster Amazon Elastic OpenTelemetry Kubernetes Service

Anda dapat menggunakan kolektor AWS Distor for OpenTelemetry (ADOT) untuk mengikis metrik dari aplikasi yang diinstrumentasi Prometheus, dan mengirim metrik ke Amazon Managed Service for Prometheus.

catatan

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

Untuk informasi selengkapnya tentang aplikasi yang diinstrumentasi Prometheus, lihat. Apa itu metrik yang kompatibel dengan Prometheus?

Mengumpulkan metrik Prometheus dengan ADOT melibatkan tiga OpenTelemetry komponen: Penerima Prometheus, Eksportir Tulis 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 menggores metrik dalam format eksposisi Prometheus. Setiap aplikasi atau titik akhir yang ingin Anda kikis harus dikonfigurasi dengan pustaka klien Prometheus. Penerima Prometheus mendukung set lengkap konfigurasi pengikisan dan pelabelan ulang Prometheus yang dijelaskan dalam Konfigurasi dalam dokumentasi Prometheus. Anda dapat menempelkan konfigurasi ini langsung ke konfigurasi ADOT Kolektor Anda.

Prometheus Remote Write Exporter menggunakan titik akhir untuk mengirim metrik remote_write yang tergores ke ruang kerja portal manajemen Anda. HTTPPermintaan 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.

Kolektor secara otomatis menemukan titik akhir metrik Prometheus di Amazon dan menggunakan konfigurasi yang ditemukan diEKS. <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 kredensil dari salah satu opsi potensial dalam rantai AWS kredensi 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 penyiapan konsumsi berikut, Anda harus menyiapkan IAM peran Anda untuk akun layanan dan kebijakan kepercayaan.

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

    ADOTKolektor akan menggunakan peran ini saat menggores dan mengekspor metrik.

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

  3. Di panel navigasi kiri, pilih Peran dan temukan amp-iamproxy-ingest-roleyang Anda buat di langkah 1.

  4. Pilih tab Trust relationship dan pilih Edit trust relationship.

  5. Dalam kebijakan hubungan kepercayaanJSON, ganti aws-amp dengan adot-col dan kemudian pilih Perbarui Kebijakan Kepercayaan. Kebijakan kepercayaan yang Anda hasilkan akan terlihat seperti berikut:

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

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

Mengaktifkan koleksi metrik Prometheus

catatan

Saat Anda membuat namespace di AmazonEKS, alertmanager dan pengekspor node dinonaktifkan secara default.

Untuk mengaktifkan koleksi Prometheus di klaster Amazon atau Kubernetes EKS
  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 {{PUBLIC_SAMPLE_APP_IMAGE}} dengan mengganti 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 contoh default dari ADOT Collector. Untuk melakukannya, pertama-tama masukkan perintah berikut untuk menarik konfigurasi Kubernetes untuk Collector. ADOT

    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 Layanan Terkelola Amazon Anda untuk ruang kerja Prometheus untuk dan Wilayah Anda. YOUR_ENDPOINT YOUR_REGION Gunakan endpoint remote_write yang ditampilkan di Amazon Managed Service untuk konsol Prometheus saat Anda melihat detail ruang kerja Anda.

    Anda juga harus mengubah YOUR_ACCOUNT_ID 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 untuk membedakan endpoint aplikasi sampel dari titik akhir kube-system di cluster Anda. Anda dapat menghapus ini dari konfigurasi label ulang jika Anda ingin mengikis aplikasi sampel yang berbeda.

  6. Masukkan perintah berikut untuk menyebarkan ADOT kolektor.

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

    kubectl get pods -n adot-col
  8. Verifikasi bahwa pipeline berfungsi dengan menggunakan eksportir logging. Contoh template kami sudah terintegrasi dengan eksportir logging. 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 untuk Prometheus menerima metrik, gunakan. awscurl Alat ini memungkinkan Anda mengirim HTTP permintaan melalui baris perintah dengan otentikasi AWS Sigv4, jadi Anda harus memiliki AWS kredensyal yang disiapkan secara lokal dengan izin yang benar untuk kueri dari Amazon Managed Service for Prometheus Untuk petunjuk tentang penginstalan, lihat awscurl. awscurl

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

    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. Anda dapat menempelkan konfigurasi ini langsung ke konfigurasi ADOT Kolektor 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. *Ini sangat penting untuk nilai penggantian relabel_configurations. Misalnya, jika Anda memulai 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

Itu 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

Prometheus eksportir tulis jarak jauh dan ekstensi otentikasi Sigv4

Konfigurasi untuk Prometheus Remote Write Exporter dan Sigv4 Authentication Extension lebih sederhana daripada penerima Prometheus. Pada tahap ini, metrik telah dicerna, dan kami siap untuk mengekspor data ini ke Amazon Managed Service untuk Prometheus. Persyaratan minimum untuk konfigurasi yang berhasil untuk berkomunikasi dengan Amazon Managed Service untuk Prometheus ditampilkan 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 HTTPS permintaan yang ditandatangani oleh AWS SigV4 menggunakan AWS kredensil dari rantai kredensil default. AWS Untuk informasi selengkapnya, lihat Mengonfigurasi AWS SDK for Go. Anda harus menentukan layanan yang akan menjadiaps.

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