

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
<a name="AMP-onboard-ingest-metrics-OpenTelemetry"></a>

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

**catatan**  
Untuk informasi selengkapnya tentang kolektor ADOT, lihat [AWS Distro](https://aws.amazon.com/otel/) untuk. OpenTelemetry  
Untuk informasi selengkapnya tentang aplikasi yang diinstrumentasi Prometheus, lihat. [Apa itu metrik yang kompatibel dengan Prometheus?](prom-compatible-metrics.md)

Mengumpulkan metrik Prometheus dengan ADOT melibatkan OpenTelemetry tiga 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.](https://prometheus.io/docs/prometheus/latest/configuration/configuration/) Anda dapat menempelkan konfigurasi ini langsung ke konfigurasi ADOT Collector Anda.

Prometheus Remote Write Exporter menggunakan titik akhir untuk mengirim metrik `remote_write` 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](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html). 

[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) <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](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html) for 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
<a name="AMP-onboard-ingest-metrics-OpenTelemetry-pre"></a>

Sebelum memulai langkah-langkah penyiapan konsumsi berikut, Anda harus menyiapkan peran IAM Anda 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 di[Menyiapkan peran layanan untuk menelan metrik dari kluster Amazon EKS](set-up-irsa.md#set-up-irsa-ingest).

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

1. Selanjutnya, edit kebijakan kepercayaan. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/home).

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

1. Pilih tab **Trust relationship** dan pilih **Edit trust relationship**.

1. Dalam kebijakan hubungan kepercayaan JSON, ganti `aws-amp` dengan `adot-col` lalu pilih **Perbarui Kebijakan Kepercayaan**. Kebijakan kepercayaan yang Anda hasilkan 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"
           }
         }
       }
     ]
   }
   ```

------

1. Pilih tab **Izin** dan pastikan bahwa 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 koleksi metrik Prometheus
<a name="AMP-onboard-ingest-metrics-OpenTelemetry-steps"></a>

**catatan**  
Saat Anda membuat namespace di Amazon EKS, `alertmanager` dan pengekspor node dinonaktifkan secara default.

**Untuk mengaktifkan koleksi Prometheus di Amazon EKS atau klaster Kubernetes**

1. Fork dan kloning aplikasi sampel dari repositori di. [aws-otel-community](https://github.com/aws-observability/aws-otel-community)

   Kemudian jalankan perintah berikut.

   ```
   cd ./sample-apps/prometheus-sample-app
   docker build . -t prometheus-sample-app:latest
   ```

1. Dorong gambar ini ke registri seperti Amazon ECR atau DockerHub.

1. 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
   ```

1. 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
   ```

1. Mulai contoh 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 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 Kolektor ADOT untuk membedakan titik akhir 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.

1. Masukkan perintah berikut untuk menyebarkan kolektor ADOT.

   ```
   kubectl apply -f prometheus-daemonset.yaml
   ```

1. Masukkan perintah berikut untuk memverifikasi bahwa kolektor ADOT telah dimulai. Cari `adot-col` di `NAMESPACE` kolom.

   ```
   kubectl get pods -n adot-col
   ```

1. 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
   ```

1. Untuk menguji apakah Amazon Managed Service untuk Prometheus menerima metrik, gunakan. `awscurl` [Alat ini memungkinkan Anda mengirim permintaan HTTP 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 untuk Prometheus Untuk petunjuk tentang penginstalan, lihat awscurl. `awscurl`](https://github.com/okigan/awscurl)

   Dalam perintah berikut, ganti`AMP_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
<a name="AMP-otel-advanced"></a>

[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. \*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 permintaan HTTPS yang ditandatangani oleh AWS SigV4 menggunakan AWS kredensil dari rantai kredensil default. AWS Untuk informasi selengkapnya, lihat [Mengonfigurasi AWS SDK untuk Go](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html). Anda harus menentukan layanan yang akan menjadi`aps`.

Terlepas dari metode penyebaran, kolektor ADOT harus memiliki akses ke salah satu opsi yang tercantum dalam rantai AWS kredensil default. Ekstensi Otentikasi Sigv4 bergantung pada AWS SDK untuk 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. 