

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

# Instal CloudWatch agen dengan koleksi metrik Prometheus di klaster Amazon EKS dan Kubernetes
<a name="ContainerInsights-Prometheus-Setup"></a>

Bagian ini menjelaskan cara mengatur CloudWatch agen dengan pemantauan Prometheus di cluster yang menjalankan Amazon EKS atau Kubernetes. Setelah melakukan hal tersebut, agen secara otomatis melakukan scraping terhadap dan mengimpor metrik-metrik untuk beban kerja berikut yang berjalan di klaster tersebut.
+ AWS App Mesh
+ NGINX
+ Memcached
+ Java/JMX
+ HAProxy
+ Fluent Bit

Anda juga dapat mengonfigurasi agen tersebut untuk melakukan scraping atas dan mengimpor beban kerja dan sumber Prometheus tambahan.

Sebelum mengikuti langkah-langkah ini untuk menginstal CloudWatch agen untuk koleksi metrik Prometheus, Anda harus memiliki klaster yang berjalan di Amazon EKS atau cluster Kubernetes yang berjalan pada instance Amazon EC2.

**Persyaratan grup keamanan VPC**

Aturan masuknya kelompok keamanan untuk beban kerja Prometheus harus membuka port CloudWatch Prometheus ke agen untuk mengikis metrik Prometheus oleh IP pribadi.

Aturan keluar dari grup keamanan untuk CloudWatch agen harus memungkinkan agen untuk terhubung ke port CloudWatch beban kerja Prometheus dengan IP pribadi. 

**Topics**
+ [Instal CloudWatch agen dengan koleksi metrik Prometheus di klaster Amazon EKS dan Kubernetes](#ContainerInsights-Prometheus-Setup-roles)
+ [Melakukan scraping atas sumber Prometheus tambahan dan mengimpor metrik-metrik tersebut](ContainerInsights-Prometheus-Setup-configure.md)
+ [(Opsional) Menyiapkan sampel beban kerja Amazon EKS terkontainer untuk pengujian metrik Prometheus](ContainerInsights-Prometheus-Sample-Workloads.md)

## Instal CloudWatch agen dengan koleksi metrik Prometheus di klaster Amazon EKS dan Kubernetes
<a name="ContainerInsights-Prometheus-Setup-roles"></a>

Bagian ini menjelaskan cara mengatur CloudWatch agen dengan pemantauan Prometheus di cluster yang menjalankan Amazon EKS atau Kubernetes. Setelah melakukan hal tersebut, agen secara otomatis melakukan scraping terhadap dan mengimpor metrik-metrik untuk beban kerja berikut yang berjalan di klaster tersebut.
+ AWS App Mesh
+ NGINX
+ Memcached
+ Java/JMX
+ HAProxy
+ Fluent Bit

Anda juga dapat mengonfigurasi agen tersebut untuk melakukan scraping atas dan mengimpor beban kerja dan sumber Prometheus tambahan.

Sebelum mengikuti langkah-langkah ini untuk menginstal CloudWatch agen untuk koleksi metrik Prometheus, Anda harus memiliki klaster yang berjalan di Amazon EKS atau cluster Kubernetes yang berjalan pada instance Amazon EC2.

**Persyaratan grup keamanan VPC**

Aturan masuknya kelompok keamanan untuk beban kerja Prometheus harus membuka port CloudWatch Prometheus ke agen untuk mengikis metrik Prometheus oleh IP pribadi.

Aturan keluar dari grup keamanan untuk CloudWatch agen harus memungkinkan agen untuk terhubung ke port CloudWatch beban kerja Prometheus dengan IP pribadi. 

**Topics**
+ [Menyiapkan peran IAM](#ContainerInsights-Prometheus-Setup-roles)
+ [Menginstal CloudWatch agen untuk mengumpulkan metrik Prometheus](#ContainerInsights-Prometheus-Setup-install-agent)

### Menyiapkan peran IAM
<a name="ContainerInsights-Prometheus-Setup-roles"></a>

Langkah pertama adalah menyiapkan peran IAM yang diperlukan di klaster tersebut. Ada dua metode:
+ Menyiapkan peran IAM untuk sebuah akun layanan, juga dikenal sebagai sebuah *peran layanan*. Metode ini bisa digunakan untuk tipe peluncuran EC2 dan tipe peluncuran Fargate.
+ Menambahkan kebijakan IAM ke peran IAM yang digunakan untuk klaster. Ini hanya bisa dilakukan untuk tipe peluncuran EC2.

**Menyiapkan sebuah peran layanan (tipe peluncuran EC2 dan tipe peluncuran Fargate)**

Untuk menyiapkan sebuah peran layanan, masukkan perintah berikut. Ganti *MyCluster* dengan nama cluster.

```
eksctl create iamserviceaccount \
 --name cwagent-prometheus \
--namespace amazon-cloudwatch \
 --cluster MyCluster \
--attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
--approve \
--override-existing-serviceaccounts
```

**Tambahkan kebijakan ke peran IAM grup node (hanya tipe peluncuran EC2)**

**Untuk menyiapkan kebijakan IAM dalam grup node untuk dukungan Prometheus**

1. Buka konsol Amazon EC2 di. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Pada panel navigasi, silakan pilih **Instances** (Instans).

1. Anda harus menemukan awalan nama peran IAM untuk klaster. Untuk melakukan ini, pilih kotak centang di sebelah nama instance yang ada di cluster, dan pilih **Actions**, **Security**, **Modify IAM Role**. Kemudian salin awalan peran IAM, seperti `eksctl-dev303-workshop-nodegroup`.

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Pada panel navigasi, silakan pilih **Peran**.

1. Gunakan kotak pencarian untuk menemukan awalan yang Anda salin sebelumnya dalam prosedur ini, dan pilih peran tersebut.

1. Pilih **Lampirkan kebijakan**.

1. Gunakan kotak pencarian untuk menemukan **CloudWatchAgentServerPolicy**. Pilih kotak centang di samping **CloudWatchAgentServerPolicy**, dan pilih **Lampirkan kebijakan**.

### Menginstal CloudWatch agen untuk mengumpulkan metrik Prometheus
<a name="ContainerInsights-Prometheus-Setup-install-agent"></a>

Anda harus menginstal CloudWatch agen di cluster untuk mengumpulkan metrik. Cara melakukan instalasi agen yang berbeda untuk klaster Amazon EKS dan klaster Kubernetes.

**Hapus versi CloudWatch agen sebelumnya dengan dukungan Prometheus**

Jika Anda telah menginstal versi CloudWatch agen dengan dukungan Prometheus di cluster Anda, Anda harus menghapus versi itu dengan memasukkan perintah berikut. Hal perlu dilakukan hanya untuk versi agen sebelumnya yang memiliki dukungan Prometheus. Anda tidak perlu menghapus CloudWatch agen yang mengaktifkan Wawasan Kontainer tanpa dukungan Prometheus.

```
kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
```

#### Menginstal CloudWatch agen di kluster Amazon EKS dengan tipe peluncuran EC2
<a name="ContainerInsights-Prometheus-Setup-install-agent-EKS"></a>

Untuk menginstal CloudWatch agen dengan dukungan Prometheus di kluster Amazon EKS, ikuti langkah-langkah ini.

**Untuk menginstal CloudWatch agen dengan dukungan Prometheus di cluster Amazon EKS**

1. Masukkan perintah berikut untuk memeriksa apakah namespace `amazon-cloudwatch` telah dibuat:

   ```
   kubectl get namespace
   ```

1. Jika `amazon-cloudwatch` tidak ditampilkan di hasil, buat ia dengan memasukkan perintah berikut:

   ```
   kubectl create namespace amazon-cloudwatch
   ```

1. Untuk menyebarkan agen dengan konfigurasi default dan mengirimkannya data ke AWS Wilayah tempat ia diinstal, masukkan perintah berikut:

   ```
   kubectl apply -f https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
   ```

   Agar agen tersebut mengirimkan data ke Wilayah yang berbeda, ikuti langkah-langkah berikut:

   1. Unduh file YAML untuk agen tersebut dengan memasukkan perintah berikut:

      ```
      curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
      ```

   1. Buka file dengan editor teks, dan cari blok `cwagentconfig.json` dari file tersebut.

   1. Tambahkan baris-baris yang disorot, dengan menyebutkan Wilayah yang Anda kehendaki:

      ```
      cwagentconfig.json: |
          {
            "agent": {
              "region": "us-east-2"
            },
            "logs": { ...
      ```

   1. Simpan file tersebut dan terapkan agen dengan menggunakan file yang telah diperbarui.

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

#### Menginstal CloudWatch agen di cluster Amazon EKS dengan tipe peluncuran Fargate
<a name="ContainerInsights-Prometheus-Setup-install-agent-EKS-fargate"></a>

Untuk menginstal CloudWatch agen dengan dukungan Prometheus di cluster Amazon EKS dengan jenis peluncuran Fargate, ikuti langkah-langkah ini.

**Untuk menginstal CloudWatch agen dengan dukungan Prometheus di cluster Amazon EKS dengan tipe peluncuran Fargate**

1. Masukkan perintah berikut untuk membuat profil Fargate untuk CloudWatch agen sehingga dapat berjalan di dalam cluster. Ganti *MyCluster* dengan nama cluster.

   ```
   eksctl create fargateprofile --cluster MyCluster \
   --name amazon-cloudwatch \
   --namespace amazon-cloudwatch
   ```

1. Untuk menginstal CloudWatch agen, masukkan perintah berikut. Ganti *MyCluster* dengan nama cluster. Nama ini digunakan dalam nama grup log yang menyimpan peristiwa log yang dikumpulkan oleh agen, dan juga digunakan sebagai dimensi untuk metrik-metrik yang dikumpulkan oleh agen itu.

   Ganti *region* dengan nama Wilayah tempat Anda ingin metrik dikirim. Misalnya, `us-west-1`. 

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml | 
   sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" | 
   kubectl apply -f -
   ```

#### Menginstal CloudWatch agen pada cluster Kubernetes
<a name="ContainerInsights-Prometheus-Setup-install-agent-Kubernetes"></a>

Untuk menginstal CloudWatch agen dengan dukungan Prometheus pada cluster yang menjalankan Kubernetes, masukkan perintah berikut:

```
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml | 
sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" | 
kubectl apply -f -
```

Ganti *MyCluster* dengan nama cluster. Nama ini digunakan dalam nama grup log yang menyimpan peristiwa log yang dikumpulkan oleh agen, dan juga digunakan sebagai dimensi untuk metrik-metrik yang dikumpulkan oleh agen itu.

Ganti *region* dengan nama AWS Wilayah tempat Anda ingin metrik dikirim. Misalnya, **us-west-1**.

#### Verifikasi bahwa agen sedang berjalan
<a name="ContainerInsights-Prometheus-Setup-install-agent-verify"></a>

Pada keduanya, baik di klaster Amazon EKS maupun Kubernetes, Anda dapat memasukkan perintah berikut untuk mengonfirmasi bahwa agen sedang berjalan.

```
kubectl get pod -l "app=cwagent-prometheus" -n amazon-cloudwatch
```

Jika hasilnya menyertakan satu pod CloudWatch agen dalam `Running` status, agen menjalankan dan mengumpulkan metrik Prometheus. Secara default, CloudWatch agen mengumpulkan metrik untuk App Mesh, NGINX, Memcached, Java/JMX, dan setiap menit. HAProxy Untuk informasi selengkapnya tentang metrik-metrik ini, silakan lihat [Metrik Prometheus dikumpulkan oleh agen CloudWatch](ContainerInsights-Prometheus-metrics.md). Untuk petunjuk tentang cara melihat metrik Prometheus Anda di, lihat CloudWatch [Menampilkan metrik-metrik Prometheus Anda](ContainerInsights-Prometheus-viewmetrics.md)

Anda juga dapat mengonfigurasi CloudWatch agen untuk mengumpulkan metrik dari eksportir Prometheus lainnya. Untuk informasi selengkapnya, lihat [Melakukan scraping atas sumber Prometheus tambahan dan mengimpor metrik-metrik tersebut](ContainerInsights-Prometheus-Setup-configure.md).

# Melakukan scraping atas sumber Prometheus tambahan dan mengimpor metrik-metrik tersebut
<a name="ContainerInsights-Prometheus-Setup-configure"></a>

 CloudWatch Agen dengan pemantauan Prometheus membutuhkan dua konfigurasi untuk mengikis metrik Prometheus. Salah satunya adalah konfigurasi standar Prometheus sebagaimana yang didokumentasikan dalam [<scrape\$1config>](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config) dalam dokumentasi Prometheus. Yang lainnya adalah untuk CloudWatch konfigurasi agen.

Untuk klaster Amazon EKS, konfigurasi ditentukan dalam `prometheus-eks.yaml` (untuk tipe peluncuran EC2) atau `prometheus-eks-fargate.yaml` (untuk tipe peluncuran Fargate) sebagai dua peta konfigurasi:
+ Bagian `name: prometheus-config` berisi pengaturan untuk scraping Prometheus.
+ `name: prometheus-cwagentconfig`Bagian ini berisi konfigurasi untuk CloudWatch agen. Anda dapat menggunakan bagian ini untuk mengonfigurasi bagaimana metrik Prometheus dikumpulkan oleh. CloudWatch Misalnya, Anda menentukan metrik mana yang akan diimpor CloudWatch, dan menentukan dimensinya. 

Untuk klaster Kubernet yang berjalan di instans Amazon EC2, konfigurasinya ditentukan di file YAML `prometheus-k8s.yaml` sebagai dua peta konfigurasi:
+ Bagian `name: prometheus-config` berisi pengaturan untuk scraping Prometheus.
+ `name: prometheus-cwagentconfig`Bagian ini berisi konfigurasi untuk CloudWatch agen. 

Untuk mengikis sumber metrik Prometheus tambahan dan mengimpor metrik tersebut, Anda memodifikasi CloudWatch konfigurasi scrape Prometheus dan konfigurasi agen, lalu menerapkan kembali agen dengan konfigurasi yang diperbarui. CloudWatch 

**Persyaratan grup keamanan VPC**

Aturan masuknya kelompok keamanan untuk beban kerja Prometheus harus membuka port CloudWatch Prometheus ke agen untuk mengikis metrik Prometheus oleh IP pribadi.

Aturan keluar dari grup keamanan untuk CloudWatch agen harus memungkinkan agen untuk terhubung ke port CloudWatch beban kerja Prometheus dengan IP pribadi. 

## Konfigurasi scraping Prometheus
<a name="ContainerInsights-Prometheus-Setup-config-global"></a>

 CloudWatch <scrape\$1config>Agen mendukung konfigurasi scrape Prometheus standar seperti yang didokumentasikan dalam dokumentasi Prometheus.[https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config) Anda dapat mengedit bagian ini untuk memperbarui konfigurasi yang sudah ada dalam file ini, dan menambahkan target-target scraping Prometheus tambahan. Secara bawaan, file konfigurasi sampel berisi baris-baris konfigurasi global berikut ini:

```
global:
  scrape_interval: 1m
  scrape_timeout: 10s
```
+ **scrape\$1interval**— Mendefinisikan seberapa sering scraping akan dilakukan ke target.
+ **scrape\$1timeout**— Mendefinisikan berapa lama waktu tunggu sebelum permintaan scraping habis.

Anda juga dapat menentukan nilai-nilai yang berbeda untuk pengaturan ini di level pekerjaan, untuk mengganti konfigurasi global.

### Pekerjaan scraping Prometheus
<a name="ContainerInsights-Prometheus-Setup-config-scrape"></a>

File CloudWatch YAMM agen sudah memiliki beberapa pekerjaan pengikisan default yang dikonfigurasi. Sebagai contoh, di `prometheus-eks.yaml`, pekerjaan scraping bawaan dikonfigurasi di baris `job_name` pada bagian `scrape_configs`. Dalam file ini, bagian `kubernetes-pod-jmx` bawaan berikut melakukan scraping terhadap metrik-metrik pengekspor JMX.

```
   - job_name: 'kubernetes-pod-jmx'
      sample_limit: 10000
      metrics_path: /metrics
      kubernetes_sd_configs:
      - role: pod
      relabel_configs:
      - source_labels: [__address__]
        action: keep
        regex: '.*:9404$'
      - action: labelmap
        regex: __meta_kubernetes_pod_label_(.+)
      - action: replace
        source_labels:
        - __meta_kubernetes_namespace
        target_label: Namespace
      - source_labels: [__meta_kubernetes_pod_name]
        action: replace
        target_label: pod_name
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_container_name
        target_label: container_name
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_controller_name
        target_label: pod_controller_name
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_controller_kind
        target_label: pod_controller_kind
      - action: replace
        source_labels:
        - __meta_kubernetes_pod_phase
        target_label: pod_phase
```

Masing-masing target default ini dikikis, dan metrik dikirim ke CloudWatch peristiwa log menggunakan format metrik yang disematkan. Untuk informasi selengkapnya, lihat [Menyematkan metrik dalam log](CloudWatch_Embedded_Metric_Format.md).

Peristiwa log dari kluster Amazon EKS dan Kubernetes disimpan di grup log **/aws/containerinsights/ *cluster\$1name* /prometheus** di Log. CloudWatch Peristiwa log dari kluster Amazon ECS disimpan dalam grup log**///aws/ecs/containerinsights*cluster\$1name*/prometheus**.

Setiap pekerjaan scraping dimuat dalam log stream yang berbeda di grup log ini. Sebagai contoh, pekerjaan scraping Prometheus `kubernetes-pod-appmesh-envoy` ditetapkan untuk App Mesh. **Semua metrik App Mesh Prometheus dari kluster Amazon EKS dan Kubernetes dikirim ke aliran log bernama /aws/containerinsights/ >prometheus//. *cluster\$1name* kubernetes-pod-appmesh-envoy**

Untuk menambahkan sebuah target scraping baru, Anda harus menambahkan sebuah bagian `job_name` baru pada bagian `scrape_configs` file YAML, dan kemudian mulai ulang agen tersebut. Untuk contoh proses ini, silakan lihat [Tutorial untuk menambahkan sebuah target scraping Prometheus baru: metrik Server API Prometheus](#ContainerInsights-Prometheus-Setup-new-exporters).

## CloudWatch konfigurasi agen untuk Prometheus
<a name="ContainerInsights-Prometheus-Setup-cw-agent-config2"></a>

File konfigurasi CloudWatch agen memiliki `prometheus` bagian di bawah `metrics_collected` untuk konfigurasi pengikisan Prometheus. File konfigurasi tersebut mencakup opsi-opsi konfigurasi berikut:
+ **cluster\$1name**— menentukan nama klaster yang akan ditambahkan sebagai label pada peristiwa log. Bidang ini bersifat opsional. Jika Anda menghilangkannya, maka agen tersebut akan dapat mendeteksi nama klaster Amazon EKS dan Kubernetes.
+ **log\$1group\$1name**— menentukan nama grup log untuk metrik-metrik Prometheus yang di-scraping. Bidang ini bersifat opsional. Jika Anda menghilangkannya, CloudWatch gunakan **/aws/containerinsights/ *cluster\$1name* /prometheus** untuk log dari Amazon EKS dan Kubernetes cluster.
+ **prometheus\$1config\$1path**— menentukan jalur file konfigurasi scraping Prometheus. Jika nilai bidang ini dimulai dengan `env:`, maka konten file konfigurasi Prometheus scraping akan diambil dari variabel lingkungan kontainer. Jangan ubah bidang ini.
+ **ecs\$1service\$1discovery**— adalah bagian untuk menentukan konfigurasi untuk penemuan layanan Amazon ECS Prometheus. Untuk informasi selengkapnya, lihat [Panduan mendetail untuk penemuan otomatis di klaster-klaster Amazon ECS](ContainerInsights-Prometheus-Setup-autodiscovery-ecs.md).

  Bagian `ecs_service_discovery` dapat berisi bidang-bidang berikut:
  + `sd_frequency` adalah frekuensi untuk menemukan pengekspor Prometheus. Tentukan sebuah angka dan sebuah akhiran unit. Sebagai contoh, `1m` satu kali per menit atau `30s` satu kali per 30 detik. Akhiran unit yang valid adalah `ns`, `us`, `ms`, `s`, `m`, dan `h`.

    Bidang ini bersifat opsional. Bawaannya adalah 60 detik (1 menit).
  + `sd_target_cluster` adalah nama klaster Amazon ECS target untuk penemuan otomatis. Bidang ini bersifat opsional. Defaultnya adalah nama cluster Amazon ECS tempat CloudWatch agen diinstal. 
  + `sd_cluster_region` adalah Wilayah klaster Amazon ECS target. Bidang ini bersifat opsional. Defaultnya adalah Wilayah cluster Amazon ECS tempat CloudWatch agen diinstal.
  + `sd_result_file` adalah jalur file YAML untuk hasil-hasil target Prometheus. Konfigurasi scraping Prometheus akan merujuk pada file ini.
  + `docker_label` adalah sebuah bagian opsional yang dapat Anda gunakan untuk menentukan konfigurasi untuk penemuan layanan berbasis label docker. Jika Anda menghilangkan bagian ini, maka penemuan berbasis label docker tidak akan digunakan. Bagian ini dapat berisi bidang-bidang berikut:
    + `sd_port_label` adalah nama label docker dari kontainer yang menentukan port kontainer untuk metrik-metrik Prometheus. Nilai bawaannya adalah `ECS_PROMETHEUS_EXPORTER_PORT`. Jika wadah tidak memiliki label docker ini, CloudWatch agen akan melewatkannya.
    + `sd_metrics_path_label` adalah nama label docker dari kontainer yang menentukan jalur metrik-metrik Prometheus. Nilai bawaannya adalah `ECS_PROMETHEUS_METRICS_PATH`. Jika kontainer tidak memiliki label docker ini, maka agen akan mengasumsikan jalur default `/metrics`.
    + `sd_job_name_label` adalah nama label docker dari kontainer yang menentukan nama pekerjaan scraping Prometheus. Nilai bawaannya adalah `job`. Jika wadah tidak memiliki label docker ini, CloudWatch agen menggunakan nama pekerjaan dalam konfigurasi scrape Prometheus.
  + `task_definition_list` adalah sebuah bagian opsional yang dapat Anda gunakan untuk menentukan konfigurasi penemuan layanan berbasis penetapan tugas. Jika Anda menghilangkan bagian ini, maka penemuan berbasis penetapan tugas tidak akan digunakan. Bagian ini dapat berisi bidang-bidang berikut:
    + `sd_task_definition_arn_pattern` adalah pola yang akan digunakan untuk menentukan penetapan tugas Amazon ECS yang harus ditemukan. Ini adalah ekspresi biasa.
    + `sd_metrics_ports` mencantumkan containerPort untuk metrik-metrik Prometheus. Pisahkan containerPorts dengan titik koma.
    + `sd_container_name_pattern` menentukan nama-nama kontainer tugas Amazon ECS. Ini adalah ekspresi biasa.
    + `sd_metrics_path` menentukan jalur metrik Prometheus. Jika Anda menghilangkannya, maka agen tersebut akan mengasumsikan jalur bawaan `/metrics`
    + `sd_job_name` menyebutkan nama pekerjaan scraping Prometheus. Jika Anda menghilangkan bidang ini, CloudWatch agen menggunakan nama pekerjaan dalam konfigurasi scrape Prometheus.
+ **metric\$1declaration**— adalah bagian-bagian yang menentukan larik log dengan format metrik tersemat yang akan dihasilkan. Ada `metric_declaration` bagian untuk setiap sumber Prometheus yang diimpor agen secara default CloudWatch . Masing-masing bagian ini mencakup bidang-bidang berikut:
  + `label_matcher` adalah ekspresi reguler yang memeriksa nilai dari label-label yang tercantum dalam `source_labels`. Metrik yang cocok diaktifkan untuk dimasukkan dalam format metrik tertanam yang dikirim ke CloudWatch. 

    Jika Anda memiliki beberapa label yang ditentukan dalam `source_labels`, maka kami menyarankan Anda untuk tidak menggunakan karakter `^` atau `$` dalam ekspresi reguler untuk `label_matcher`.
  + `source_labels` menentukan nilai dari label-label yang diperiksa oleh baris `label_matcher`.
  + `label_separator` menentukan pemisah yang akan digunakan dalam baris ` label_matcher` jika ada beberapa `source_labels` yang ditetapkan. Nilai default-nya `;`. Anda dapat melihat nilai-nilai bawaan ini digunakan di `label_matcher` dalam contoh berikut.
  + `metric_selectors` adalah ekspresi reguler yang menentukan metrik yang akan dikumpulkan dan dikirim ke CloudWatch.
  + `dimensions` adalah daftar label yang akan digunakan sebagai CloudWatch dimensi untuk setiap metrik yang dipilih.

Lihat contoh `metric_declaration` berikut ini.

```
"metric_declaration": [
  {
     "source_labels":[ "Service", "Namespace"],
     "label_matcher":"(.*node-exporter.*|.*kube-dns.*);kube-system",
     "dimensions":[
        ["Service", "Namespace"]
     ],
     "metric_selectors":[
        "^coredns_dns_request_type_count_total$"
     ]
  }
]
```

Contoh ini mengonfigurasikan sebuah bagian format metrik tersemat yang akan dikirim sebagai sebuah peristiwa log jika kondisi-kondisi berikut dipenuhi:
+ Nilai dari `Service` berisi `node-exporter` atau `kube-dns`.
+ Nilai dari `Namespace` adalah `kube-system`.
+ Metrik Prometheus `coredns_dns_request_type_count_total` memuat label `Service` dan `Namespace`.

Peristiwa log yang dikirim mencakup bagian yang disorot berikut ini:

```
{
   "CloudWatchMetrics":[
      {
         "Metrics":[
            {
               "Name":"coredns_dns_request_type_count_total"
            }
         ],
         "Dimensions":[
            [
               "Namespace",
               "Service"
            ]
         ],
         "Namespace":"ContainerInsights/Prometheus"
      }
   ],
   "Namespace":"kube-system",
   "Service":"kube-dns",
   "coredns_dns_request_type_count_total":2562,
   "eks_amazonaws_com_component":"kube-dns",
   "instance":"192.168.61.254:9153",
   "job":"kubernetes-service-endpoints",
   ...
}
```

## Tutorial untuk menambahkan sebuah target scraping Prometheus baru: metrik Server API Prometheus
<a name="ContainerInsights-Prometheus-Setup-new-exporters"></a>

Server API Kubernetes membuka metrik-metrik Prometheus pada titik akhir secara bawaan. Contoh resmi untuk konfigurasi scraping Server API Kubernetes tersedia di [Github](https://github.com/prometheus/prometheus/blob/main/documentation/examples/prometheus-kubernetes.yml).

Tutorial berikut menunjukkan cara melakukan langkah-langkah berikut untuk mulai mengimpor metrik API Server Kubernetes ke CloudWatch:
+ Menambahkan konfigurasi scraping Prometheus untuk Kubernetes API Server ke file YAMG agen. CloudWatch 
+ Mengonfigurasi definisi metrik format metrik yang disematkan dalam file CloudWatch YAMM agen.
+ (Opsional) Membuat CloudWatch dasbor untuk metrik Kubernetes API Server.

**catatan**  
Server API Kubernetes membuka metrik-metrik pengukuran, penghitung, histogram, dan ringkasan. Dalam rilis dukungan metrik Prometheus ini, hanya mengimpor metrik dengan jenis CloudWatch pengukur, penghitung, dan ringkasan.

**Untuk mulai mengumpulkan metrik Prometheus Server API Kubernetes di CloudWatch**

1. Unduh versi terbaru dari file `prometheus-eks.yaml`, `prometheus-eks-fargate.yaml`, atau `prometheus-k8s.yaml` dengan memasukkan salah satu dari perintah-perintah berikut.

   Untuk sebuah klaster Amazon EKS dengan tipe peluncuran EC2, masukkan perintah berikut:

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
   ```

   Untuk sebuah klaster Amazon EKS dengan tipe peluncuran Fargate, masukkan perintah berikut:

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml
   ```

   Untuk sebuah klaster Kubernetes yang berjalan di sebuah instans Amazon EC2, masukkan perintah berikut:

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml
   ```

1. Buka file dengan editor teks, temukan bagian `prometheus-config` dan tambahkan bagian berikut di dalam bagian tersebut. Kemudian simpan perubahannya:

   ```
       # Scrape config for API servers
       - job_name: 'kubernetes-apiservers'
         kubernetes_sd_configs:
           - role: endpoints
             namespaces:
               names:
                 - default
         scheme: https
         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
         relabel_configs:
         - source_labels: [__meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
           action: keep
           regex: kubernetes;https
         - action: replace
           source_labels:
           - __meta_kubernetes_namespace
           target_label: Namespace
         - action: replace
           source_labels:
           - __meta_kubernetes_service_name
           target_label: Service
   ```

1. Meskipun file YAML masih terbuka di editor teks, temukan bagian `cwagentconfig.json`. Tambahkan subbagian berikut dan simpan perubahannya. Bagian ini menempatkan metrik server API ke daftar CloudWatch izin agen. Tiga jenis metrik Server API ditambahkan ke daftar yang diizinkan:
   + penghitungan objek etcd
   + Metrik pengendali registrasi Server API
   + Metrik permintaan Server API

   ```
   {"source_labels": ["job", "resource"],
     "label_matcher": "^kubernetes-apiservers;(services|daemonsets.apps|deployments.apps|configmaps|endpoints|secrets|serviceaccounts|replicasets.apps)",
     "dimensions": [["ClusterName","Service","resource"]],
     "metric_selectors": [
     "^etcd_object_counts$"
     ]
   },
   {"source_labels": ["job", "name"],
      "label_matcher": "^kubernetes-apiservers;APIServiceRegistrationController$",
      "dimensions": [["ClusterName","Service","name"]],
      "metric_selectors": [
      "^workqueue_depth$",
      "^workqueue_adds_total$",
      "^workqueue_retries_total$"
     ]
   },
   {"source_labels": ["job","code"],
     "label_matcher": "^kubernetes-apiservers;2[0-9]{2}$",
     "dimensions": [["ClusterName","Service","code"]],
     "metric_selectors": [
      "^apiserver_request_total$"
     ]
   },
   {"source_labels": ["job"],
     "label_matcher": "^kubernetes-apiservers",
     "dimensions": [["ClusterName","Service"]],
     "metric_selectors": [
     "^apiserver_request_total$"
     ]
   },
   ```

1. Jika Anda sudah memiliki CloudWatch agen dengan dukungan Prometheus yang diterapkan di cluster, Anda harus menghapusnya dengan memasukkan perintah berikut:

   ```
   kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
   ```

1. Terapkan CloudWatch agen dengan konfigurasi Anda yang diperbarui dengan memasukkan salah satu perintah berikut. Untuk sebuah klaster Amazon EKS dengan tipe peluncuran EC2, masukkan:

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

   Untuk sebuah klaster Amazon EKS dengan tipe peluncuran Fargate, Anda perlu memasukkan perintah berikut. Ganti *MyCluster* dan *region* dengan nilai agar sesuai dengan penerapan Anda.

   ```
   cat prometheus-eks-fargate.yaml \
   | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \
   | kubectl apply -f -
   ```

   Untuk sebuah klaster Kubernetes, masukkan perintah berikut. Ganti *MyCluster* dan *region* dengan nilai agar sesuai dengan penerapan Anda.

   ```
   cat prometheus-k8s.yaml \
   | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \
   | kubectl apply -f -
   ```

**Setelah Anda melakukan ini, Anda akan melihat aliran log baru bernama **kubernetes-apiservers** di grup log /aws/containerinsights/ /prometheus. *cluster\$1name*** Log stream ini harus mencakup peristiwa log dengan penetapan format metrik tersemat seperti berikut:

```
{
   "CloudWatchMetrics":[
      {
         "Metrics":[
            {
               "Name":"apiserver_request_total"
            }
         ],
         "Dimensions":[
            [
               "ClusterName",
               "Service"
            ]
         ],
         "Namespace":"ContainerInsights/Prometheus"
      }
   ],
   "ClusterName":"my-cluster-name",
   "Namespace":"default",
   "Service":"kubernetes",
   "Timestamp":"1592267020339",
   "Version":"0",
   "apiserver_request_count":0,
   "apiserver_request_total":0,
   "code":"0",
   "component":"apiserver",
   "contentType":"application/json",
   "instance":"192.0.2.0:443",
   "job":"kubernetes-apiservers",
   "prom_metric_type":"counter",
   "resource":"pods",
   "scope":"namespace",
   "verb":"WATCH",
   "version":"v1"
}
```

Anda dapat melihat metrik Anda di CloudWatch konsol di namespace **ContainerInsights/Prometheus**. Anda juga dapat secara opsional membuat CloudWatch dasbor untuk metrik Prometheus Kubernetes API Server Anda.

### (Opsional) Membuat sebuah dasbor untuk metrik-metrik Server API Kubernetes.
<a name="ContainerInsights-Prometheus-Setup-KPI-dashboard"></a>

Untuk melihat metrik API Server Kubernetes di dasbor Anda, Anda harus terlebih dahulu menyelesaikan langkah-langkah di bagian sebelumnya untuk mulai mengumpulkan metrik ini di CloudWatch.

**Cara membuat sebuah dasbor untuk metrik-metrik Server API Kubernetes**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Pastikan Anda telah memilih AWS Wilayah yang benar.

1. Pada panel navigasi, silakan pilih **Dasbor**.

1. Pilih **Buat Dasbor**. Masukkan nama untuk dasbor baru tersebut, dan pilih **Buat dasbor**.

1. Di **Tambahkan ke dasbor ini**, pilih **Batalkan**.

1. Pilih **Tindakan**, **Tampilkan/sunting sumber**.

1. Unduh file JSON berikut: [Sumber Dasbor API Kubernetes](https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/kubernetes_api_server/cw_dashboard_kubernetes_api_server.json).

1. Buka file JSON yang Anda unduh dengan editor teks, dan lakukan perubahan-perubahan berikut:
   + Ganti semua string `{{YOUR_CLUSTER_NAME}}` dengan nama persis seperti nama klaster Anda. Anda harus memastikan untuk tidak menambahkan spasi putih sebelum atau setelah teks.
   + Ganti semua string `{{YOUR_AWS_REGION}}` dengan nama Wilayah tempat metrik-metrik dikumpulkan. Sebagai contoh, `us-west-2`. Pastikan untuk tidak menambahkan spasi putih sebelum atau setelah teks.

1. Salin seluruh gumpalan JSON dan tempelkan ke dalam kotak teks di CloudWatch konsol, mengganti yang sudah ada di dalam kotak.

1. Pilih **Perbarui**, **Simpan dasbor**.

# (Opsional) Menyiapkan sampel beban kerja Amazon EKS terkontainer untuk pengujian metrik Prometheus
<a name="ContainerInsights-Prometheus-Sample-Workloads"></a>

Untuk menguji dukungan metrik Prometheus CloudWatch di Container Insights, Anda dapat menyiapkan satu atau beberapa beban kerja kontainer berikut. CloudWatch Agen dengan dukungan Prometheus secara otomatis mengumpulkan metrik dari masing-masing beban kerja ini. Untuk melihat metrik-metrik yang dikumpulkan secara bawaan, silakan lihat [Metrik Prometheus dikumpulkan oleh agen CloudWatch](ContainerInsights-Prometheus-metrics.md).

Sebelum Anda dapat melakukan instalasi salah satu beban kerja ini, Anda harus melakukan instalasi Helm 3.x dengan memasukkan perintah-perintah berikut:

```
brew install helm
```

Untuk informasi selengkapnya, silakan lihat [Helm](https://helm.sh).

**Topics**
+ [Siapkan AWS App Mesh contoh beban kerja untuk Amazon EKS dan Kubernetes](ContainerInsights-Prometheus-Sample-Workloads-appmesh.md)
+ [Siapkan NGINX dengan lalu lintas sampel di Amazon EKS dan Kubernetes](ContainerInsights-Prometheus-Sample-Workloads-nginx.md)
+ [Siapkan memcached dengan sebuah pengekspor metrik di Amazon EKS dan Kubernetes](ContainerInsights-Prometheus-Sample-Workloads-memcached.md)
+ [Siapkan Java/JMX contoh beban kerja di Amazon EKS dan Kubernetes](ContainerInsights-Prometheus-Sample-Workloads-javajmx.md)
+ [Siapkan HAProxy dengan eksportir metrik di Amazon EKS dan Kubernetes](ContainerInsights-Prometheus-Sample-Workloads-haproxy.md)
+ [Tutorial untuk menambahkan target scrape Prometheus baru: Redis OSS di Amazon EKS dan Kubernetes cluster](ContainerInsights-Prometheus-Setup-redis-eks.md)

# Siapkan AWS App Mesh contoh beban kerja untuk Amazon EKS dan Kubernetes
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh"></a>

Dukungan Prometheus dalam dukungan Container Insights. CloudWatch AWS App Mesh Bagian-bagian berikut akan menjelaskan cara menyiapkan App Mesh.

**Topics**
+ [Siapkan AWS App Mesh contoh beban kerja di klaster Amazon EKS dengan tipe peluncuran EC2 atau klaster Kubernetes](ContainerInsights-Prometheus-Sample-Workloads-appmesh-EKS.md)
+ [Siapkan AWS App Mesh contoh beban kerja di klaster Amazon EKS dengan tipe peluncuran Fargate](ContainerInsights-Prometheus-Sample-Workloads-appmesh-Fargate.md)

# Siapkan AWS App Mesh contoh beban kerja di klaster Amazon EKS dengan tipe peluncuran EC2 atau klaster Kubernetes
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-EKS"></a>

Gunakan petunjuk ini jika Anda menyiapkan App Mesh pada sebuah klaster yang menjalankan Amazon EKS dengan tipe peluncuran EC2, atau sebuah klaster Kubernetes.

## Mengonfigurasi izin IAM
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-iam"></a>

Anda harus menambahkan **AWSAppMeshFullAccess** kebijakan peran IAM untuk grup simpul Amazon EKS atau Kubernetes Anda. Pada Amazon EKS, nama grup simpul ini terlihat mirip dengan `eksctl-integ-test-eks-prometheus-NodeInstanceRole-ABCDEFHIJKL`. Di Kubernetes, mungkin terlihat mirip dengan `nodes.integ-test-kops-prometheus.k8s.local`.

## Melakukan instalasi App Mesh
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-install"></a>

Untuk melakukan instalasi pengendali App Mesh Kubernetes, ikuti petunjuk-petunjuk yang diuraikan di [Kontroler App Mesh](https://github.com/aws/eks-charts/tree/master/stable/appmesh-controller#app-mesh-controller).

## Melakukan instalasi aplikasi sampel
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-application"></a>

[aws-app-mesh-examples](https://github.com/aws/aws-app-mesh-examples)berisi beberapa penelusuran App Mesh Kubernetes. Untuk tutorial ini, Anda melakukan instalasi untuk sebuah aplikasi warna sampel yang menunjukkan bagaimana rute http dapat menggunakan header untuk mencocokkan permintaan masuk.

**Cara menggunakan sebuah aplikasi App Mesh sampel untuk menguji Wawasan Kontainer**

1. Instal aplikasi dengan menggunakan petunjuk ini: [https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/howto-k8s-http-headers](https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/howto-k8s-http-headers). 

1. Luncurkan sebuah pod curler untuk menghasilkan lalu lintas:

   ```
   kubectl -n default run -it curler --image=tutum/curl /bin/bash
   ```

1. Lakukan curling pada titik akhir yang berbeda dengan mengubah header HTTP. Jalankan perintah curl beberapa kali, sebagaimana yang ditunjukkan:

   ```
   curl -H "color_header: blue" front.howto-k8s-http-headers.svc.cluster.local:8080/; echo;
   
   curl -H "color_header: red" front.howto-k8s-http-headers.svc.cluster.local:8080/; echo;
   
   curl -H "color_header: yellow" front.howto-k8s-http-headers.svc.cluster.local:8080/; echo;
   ```

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di AWS Wilayah tempat klaster Anda berjalan, pilih **Metrik** di panel navigasi. Metrik berada di **ContainerInsights/Prometheus** ruangnama.

1. Untuk melihat peristiwa CloudWatch Log, pilih **Grup log** di panel navigasi. Peristiwa-peristiwa berada dalam grup log ` /aws/containerinsights/your_cluster_name/prometheus ` di dalam log stream `kubernetes-pod-appmesh-envoy`.

## Menghapus lingkungan pengujian App Mesh
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-delete"></a>

Setelah selesai menggunakan App Mesh dan aplikasi sampel, gunakan perintah berikut untuk menghapus sumber daya yang tidak diperlukan. Menghapus aplikasi sampel dengan memasukkan perintah berikut:

```
cd aws-app-mesh-examples/walkthroughs/howto-k8s-http-headers/
kubectl delete -f _output/manifest.yaml
```

Menghapus pengendali App Mesh dengan memasukkan perintah berikut:

```
helm delete appmesh-controller -n appmesh-system
```

# Siapkan AWS App Mesh contoh beban kerja di klaster Amazon EKS dengan tipe peluncuran Fargate
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-Fargate"></a>

Gunakan petunjuk-petunjuk ini jika Anda hendak menyiapkan App Mesh pada sebuah klaster yang menjalankan Amazon EKS dengan tipe peluncuran Fargate.

## Mengonfigurasi izin IAM
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh--fargate-iam"></a>

Untuk menyiapkan izin IAM, masukkan perintah berikut. Ganti *MyCluster* dengan nama klaster Anda.

```
eksctl create iamserviceaccount --cluster MyCluster \
 --namespace howto-k8s-fargate \
 --name appmesh-pod \
 --attach-policy-arn arn:aws:iam::aws:policy/AWSAppMeshEnvoyAccess \
 --attach-policy-arn arn:aws:iam::aws:policy/AWSCloudMapDiscoverInstanceAccess \
 --attach-policy-arn arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess \
 --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess \
 --attach-policy-arn arn:aws:iam::aws:policy/AWSAppMeshFullAccess \
 --attach-policy-arn arn:aws:iam::aws:policy/AWSCloudMapFullAccess \
 --override-existing-serviceaccounts \
 --approve
```

## Melakukan instalasi App Mesh
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-fargate-install"></a>

Untuk melakukan instalasi pengendali App Mesh Kubernetes, ikuti petunjuk-petunjuk yang diuraikan di [Kontroler App Mesh](https://github.com/aws/eks-charts/tree/master/stable/appmesh-controller#app-mesh-controller). Pastikan untuk mengikuti petunjuk-petunjuk untuk Amazon EKS dengan tipe peluncuran Fargate.

## Melakukan instalasi aplikasi sampel
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-fargate-application"></a>

[aws-app-mesh-examples](https://github.com/aws/aws-app-mesh-examples)berisi beberapa penelusuran App Mesh Kubernetes. Untuk tutorial ini, Anda melakukan instalasi aplikasi warna sampel yang bekerja untuk klaster Amazon EKS dengan tipe peluncuran Fargate.

**Cara menggunakan sebuah aplikasi App Mesh sampel untuk menguji Wawasan Kontainer**

1. Instal aplikasi dengan menggunakan petunjuk ini: [https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/howto-k8s-fargate](https://github.com/aws/aws-app-mesh-examples/tree/main/walkthroughs/howto-k8s-fargate). 

   Instruksi-instruksi tersebut mengasumsikan bahwa Anda membuat sebuah klaster baru dengan profil Fargate yang benar. Jika Anda ingin menggunakan sebuah klaster Amazon EKS yang telah Anda siapkan, maka Anda dapat menggunakan perintah-perintah berikut untuk menyiapkan klaster tersebut untuk demonstrasi ini. Ganti *MyCluster* dengan nama klaster Anda.

   ```
   eksctl create iamserviceaccount --cluster MyCluster \
    --namespace howto-k8s-fargate \
    --name appmesh-pod \
    --attach-policy-arn arn:aws:iam::aws:policy/AWSAppMeshEnvoyAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/AWSCloudMapDiscoverInstanceAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/AWSAppMeshFullAccess \
    --attach-policy-arn arn:aws:iam::aws:policy/AWSCloudMapFullAccess \
    --override-existing-serviceaccounts \
    --approve
   ```

   ```
   eksctl create fargateprofile --cluster MyCluster \
   --namespace howto-k8s-fargate --name howto-k8s-fargate
   ```

1. Port meneruskan deployment aplikasi depan:

   ```
   kubectl -n howto-k8s-fargate port-forward deployment/front 8080:8080
   ```

1. Lakukan curling pada aplikasi depan:

   ```
   while true; do  curl -s http://localhost:8080/color; sleep 0.1; echo ; done
   ```

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di AWS Wilayah tempat klaster Anda berjalan, pilih **Metrik** di panel navigasi. Metrik berada di **ContainerInsights/Prometheus** ruangnama.

1. Untuk melihat peristiwa CloudWatch Log, pilih **Grup log** di panel navigasi. Peristiwa-peristiwa berada dalam grup log ` /aws/containerinsights/your_cluster_name/prometheus ` di dalam log stream `kubernetes-pod-appmesh-envoy`.

## Menghapus lingkungan pengujian App Mesh
<a name="ContainerInsights-Prometheus-Sample-Workloads-appmesh-fargate-delete"></a>

Setelah selesai menggunakan App Mesh dan aplikasi sampel, gunakan perintah berikut untuk menghapus sumber daya yang tidak diperlukan. Menghapus aplikasi sampel dengan memasukkan perintah berikut:

```
cd aws-app-mesh-examples/walkthroughs/howto-k8s-fargate/
kubectl delete -f _output/manifest.yaml
```

Menghapus pengendali App Mesh dengan memasukkan perintah berikut:

```
helm delete appmesh-controller -n appmesh-system
```

# Siapkan NGINX dengan lalu lintas sampel di Amazon EKS dan Kubernetes
<a name="ContainerInsights-Prometheus-Sample-Workloads-nginx"></a>

NGINX adalah sebuah server web yang juga dapat digunakan sebagai penyeimbang beban dan proksi balik. Untuk informasi selengkapnya tentang bagaimana Kubernetes menggunakan NGINX untuk ingress, silakan lihat [kubernetes/ingress-nginx.](https://github.com/kubernetes/ingress-nginx)

**Untuk melakukan instalasi Ingress-NGINX dengan layanan lalu lintas sampel untuk menguji dukungan Prometheus Wawasan Kontainer**

1. Masukkan perintah berikut untuk menambahkan repo ingress-nginx Helm:

   ```
   helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
   ```

1. Masukkan perintah-perintah berikut.

   ```
   kubectl create namespace nginx-ingress-sample
   
   helm install my-nginx ingress-nginx/ingress-nginx \
   --namespace nginx-ingress-sample \
   --set controller.metrics.enabled=true \
   --set-string controller.metrics.service.annotations."prometheus\.io/port"="10254" \
   --set-string controller.metrics.service.annotations."prometheus\.io/scrape"="true"
   ```

1. Periksa apakah layanan-layanan dimulai dengan benar dengan memasukkan perintah berikut:

   ```
   kubectl get service -n nginx-ingress-sample
   ```

   Output dari perintah ini akan menampilkan beberapa kolom, termasuk sebuah kolom `EXTERNAL-IP`.

1. Mengatur variabel `EXTERNAL-IP` terhadap nilai kolom `EXTERNAL-IP` dalam baris pengendali ingress NGINX.

   ```
   EXTERNAL_IP=your-nginx-controller-external-ip
   ```

1. Mulai beberapa lalu lintas NGINX sampel dengan memasukkan perintah berikut. 

   ```
   SAMPLE_TRAFFIC_NAMESPACE=nginx-sample-traffic
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_traffic/nginx-traffic/nginx-traffic-sample.yaml | 
   sed "s/{{external_ip}}/$EXTERNAL_IP/g" | 
   sed "s/{{namespace}}/$SAMPLE_TRAFFIC_NAMESPACE/g" | 
   kubectl apply -f -
   ```

1. Masukkan perintah berikut untuk mengonfirmasi bahwa ketiga pod berada dalam status `Running`.

   ```
   kubectl get pod -n $SAMPLE_TRAFFIC_NAMESPACE
   ```

   Jika mereka berjalan, Anda akan segera melihat metrik di **ContainerInsights/Prometheus** ruangnama.

**Cara menghapus NGINX dan aplikasi lalu lintas sampel**

1. Hapus layanan lalu lintas sampel dengan memasukkan perintah berikut:

   ```
   kubectl delete namespace $SAMPLE_TRAFFIC_NAMESPACE
   ```

1. Hapus egress NGINX dengan nama rilis Helm. 

   ```
   helm uninstall my-nginx --namespace nginx-ingress-sample
   kubectl delete namespace nginx-ingress-sample
   ```

# Siapkan memcached dengan sebuah pengekspor metrik di Amazon EKS dan Kubernetes
<a name="ContainerInsights-Prometheus-Sample-Workloads-memcached"></a>

Memcached adalah sebuah sistem caching objek memori sumber terbuka. Untuk informasi selengkapnya, silakan lihat [ Apa itu Memcached?](https://www.memcached.org)

Jika Anda menjalankan memcached pada sebuah klaster dengan tipe peluncuran Fargate, maka Anda perlu meyiapkan profil Fargate sebelum melakukan langkah-langkah dalam prosedur ini. Untuk menyiapkan profilnya, masukkan perintah berikut. Ganti *MyCluster* dengan nama klaster Anda.

```
eksctl create fargateprofile --cluster MyCluster \
--namespace memcached-sample --name memcached-sample
```

**Cara melakukan instalasi dengan pengekspor metrik untuk menguji dukungan Wawasan Kontainer Prometheus**

1. Masukkan perintah berikut untuk menambahkan repo:

   ```
   helm repo add bitnami https://charts.bitnami.com/bitnami
   ```

1. Masukkan perintah berikut untuk membuat sebuah namespace baru:

   ```
   kubectl create namespace memcached-sample
   ```

1. Masukkan perintah berikut untuk melakukan instalasi Memcached

   ```
   helm install my-memcached bitnami/memcached --namespace memcached-sample \
   --set metrics.enabled=true \
   --set-string serviceAnnotations.prometheus\\.io/port="9150" \
   --set-string serviceAnnotations.prometheus\\.io/scrape="true"
   ```

1. Masukkan perintah berikut untuk mengonfirmasi keterangan dari layanan yang berjalan:

   ```
   kubectl describe service my-memcached-metrics -n memcached-sample
   ```

   Anda seharusnya melihat dua keterangan berikut:

   ```
   Annotations:   prometheus.io/port: 9150
                  prometheus.io/scrape: true
   ```

**Cara menghapus instalasi memcached**
+ Masukkan perintah-perintah berikut.

  ```
  helm uninstall my-memcached --namespace memcached-sample
  kubectl delete namespace memcached-sample
  ```

# Siapkan Java/JMX contoh beban kerja di Amazon EKS dan Kubernetes
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx"></a>

JMX Exporter adalah sebuah pengekspor Prometheus resmi yang dapat melakukan scraping dan mengekspos JMX mBeans sebagai metrik-metrik Prometheus. Untuk informasi selengkapnya, silakan lihat [prometheus/jmx\$1exporter](https://github.com/prometheus/jmx_exporter).

Wawasan Kontainer dapat mengumpulkan metrik-metrik Prometheus yang telah ditentukan sebelumnya dari Java Virtual Machine (JVM), Java, dan Tomcat (Catalina) dengan menggunakan JMX Exporter.

## Konfigurasi scraping Prometheus bawaan
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx-default"></a>

Secara default, CloudWatch agen dengan dukungan Prometheus akan mengikis metrik Java/JMX Prometheus dari setiap pod di kluster Amazon EKS atau Kubernetes. `http://CLUSTER_IP:9404/metrics` Hal ini dilakukan oleh penemuan `role: pod` Prometheus `kubernetes_sd_config`. 9404 adalah port bawaan yang dialokasikan untuk JMX Exporter oleh Prometheus. Untuk informasi selengkapnya tentang penemuan `role: pod`, silakan lihat [ pod](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#pod). Anda dapat mengonfigurasi JMX Exporter untuk mengekspos metrik-metrik sebuah pada port atau metrik\$1path yang berbeda. Jika Anda mengubah port atau jalur, perbarui jmx scrape\$1config default di peta konfigurasi agen. CloudWatch Jalankan perintah berikut untuk mendapatkan konfigurasi Prometheus CloudWatch agen saat ini:

```
kubectl describe cm prometheus-config -n amazon-cloudwatch
```

Bidang yang harus diubah adalah bidang `/metrics` dan `regex: '.*:9404$'`, seperti yang disorot dalam contoh berikut.

```
job_name: 'kubernetes-jmx-pod'
sample_limit: 10000
metrics_path: /metrics
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__address__]
  action: keep
  regex: '.*:9404$'
- action: replace
  regex: (.+)
  source_labels:
```

## Konfigurasi scraping Prometheus lainnya
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx-other"></a>

Jika Anda mengekspos aplikasi yang berjalan pada sekumpulan pod dengan pengekspor Java/JMX Prometheus oleh Layanan Kubernetes, maka Anda juga dapat beralih untuk menggunakan penemuan `role: service` atau penemuan `role: endpoint` dari Prometheus `kubernetes_sd_config`. Untuk informasi selengkapnya tentang metode penemuan ini, silakan lihat [ layanan](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#service), [titik akhir](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#endpoints), dan [ <kubernetes\$1sd\$1config>.](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#kubernetes_sd_config). 

Lebih banyak label meta disediakan oleh dua mode penemuan layanan ini yang dapat berguna bagi Anda untuk membangun dimensi CloudWatch metrik. Sebagai contoh, Anda dapat mengubah label `__meta_kubernetes_service_name` menjadi `Service` dan memasukkannya ke dalam dimensi metrik Anda. Untuk informasi selengkapnya tentang menyesuaikan CloudWatch metrik dan dimensinya, lihat. [CloudWatch konfigurasi agen untuk Prometheus](ContainerInsights-Prometheus-Setup-configure-ECS.md#ContainerInsights-Prometheus-Setup-cw-agent-config)

## Citra Docker dengan JMX Exporter
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx-docker"></a>

Berikutnya, buat sebuah citra Docker. Bagian-bagian berikut memberikan dua contoh Dockerfile.

Setelah membangun citra tersebut, muatkan citra itu ke Amazon EKS atau Kubernetes, dan kemudian jalankan perintah berikut untuk memverifikasi bahwa metrik-metrik Prometheus diekspos oleh `JMX_EXPORTER` di port 9404. Ganti *\$1JAR\$1SAMPLE\$1TRAFFIC\$1POD* dengan nama pod yang sedang berjalan dan ganti *\$1JAR\$1SAMPLE\$1TRAFFIC\$1NAMESPACE* dengan namespace aplikasi Anda. 

Jika Anda menjalankan JMX Exporter pada sebuah klaster dengan tipe peluncuran Fargate, maka Anda juga perlu meyiapkan sebuah profil Fargate sebelum melakukan langkah-langkah dalam prosedur ini. Untuk menyiapkan profilnya, masukkan perintah berikut. Ganti *MyCluster* dengan nama klaster Anda.

```
eksctl create fargateprofile --cluster MyCluster \
--namespace $JAR_SAMPLE_TRAFFIC_NAMESPACE\
 --name $JAR_SAMPLE_TRAFFIC_NAMESPACE
```

```
kubectl exec $JAR_SAMPLE_TRAFFIC_POD -n $JARCAT_SAMPLE_TRAFFIC_NAMESPACE -- curl http://localhost:9404
```

## Contoh: Citra Docker Apache Tomcat dengan metrik-metrik Prometheus
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx-tomcat"></a>

Server Apache Tomcat membuka JMX mBeans secara bawaan. Anda dapat mengintegrasikan JMX Exporter dengan Tomcat untuk mengekspos JMX mBeans sebagai metrik-metrik Prometheus. Contoh Dockerfile berikut menunjukkan langkah-langkah untuk membangun sebuah citra pengujian: 

```
# From Tomcat 9.0 JDK8 OpenJDK 
FROM tomcat:9.0-jdk8-openjdk 

RUN mkdir -p /opt/jmx_exporter

COPY ./jmx_prometheus_javaagent-0.12.0.jar /opt/jmx_exporter
COPY ./config.yaml /opt/jmx_exporter
COPY ./setenv.sh /usr/local/tomcat/bin 
COPY your web application.war /usr/local/tomcat/webapps/

RUN chmod  o+x /usr/local/tomcat/bin/setenv.sh

ENTRYPOINT ["catalina.sh", "run"]
```

Daftar berikut menjelaskan empat baris `COPY` dalam Dockerfile ini.
+ [Unduh file jar JMX Exporter terbaru dari jmx\$1exporter. https://github.com/prometheus/](https://github.com/prometheus/jmx_exporter)
+ `config.yaml` adalah file konfigurasi JMX Exporter. Untuk informasi selengkapnya, lihat [https://github.com/prometheus/jmx\$1exporter](https://github.com/prometheus/jmx_exporter#Configuration ) \$1Configuration.

  Berikut ini adalah sebuah file konfigurasi sampel untuk Java dan Tomcat:

  ```
  lowercaseOutputName: true
  lowercaseOutputLabelNames: true
  
  rules:
  - pattern: 'java.lang<type=OperatingSystem><>(FreePhysicalMemorySize|TotalPhysicalMemorySize|FreeSwapSpaceSize|TotalSwapSpaceSize|SystemCpuLoad|ProcessCpuLoad|OpenFileDescriptorCount|AvailableProcessors)'
    name: java_lang_OperatingSystem_$1
    type: GAUGE
  
  - pattern: 'java.lang<type=Threading><>(TotalStartedThreadCount|ThreadCount)'
    name: java_lang_threading_$1
    type: GAUGE
  
  - pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+)'
    name: catalina_globalrequestprocessor_$3_total
    labels:
      port: "$2"
      protocol: "$1"
    help: Catalina global $3
    type: COUNTER
  
  - pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount)'
    name: catalina_servlet_$3_total
    labels:
      module: "$1"
      servlet: "$2"
    help: Catalina servlet $3 total
    type: COUNTER
  
  - pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount)'
    name: catalina_threadpool_$3
    labels:
      port: "$2"
      protocol: "$1"
    help: Catalina threadpool $3
    type: GAUGE
  
  - pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions)'
    name: catalina_session_$3_total
    labels:
      context: "$2"
      host: "$1"
    help: Catalina session $3 total
    type: COUNTER
  
  - pattern: ".*"
  ```
+ `setenv.sh` adalah sebuah skrip perusahaan rintisan Tomcat untuk memulai JMX exporter bersama dengan Tomcat dan mengekspos metrik-metrik Prometheus di port 9404 dari host lokal. Ia juga menyediakan JMX Exporter dengan jalur file `config.yaml`.

  ```
  $ cat setenv.sh 
  export JAVA_OPTS="-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=9404:/opt/jmx_exporter/config.yaml $JAVA_OPTS"
  ```
+ Web application.war Anda adalah file `war` aplikasi web Anda yang akan dimuat oleh Tomcat.

Bangun sebuah citra docker dengan konfigurasi ini dan unggah citra tersebut ke sebuah repositori citra.

## Contoh: Citra Docker Aplikasi Jar Java dengan metrik-metrik Prometheus
<a name="ContainerInsights-Prometheus-Sample-Workloads-javajmx-jar"></a>

Contoh Dockerfile berikut menunjukkan langkah-langkah untuk membangun sebuah citra pengujian: 

```
# Alpine Linux with OpenJDK JRE
FROM openjdk:8-jre-alpine

RUN mkdir -p /opt/jmx_exporter

COPY ./jmx_prometheus_javaagent-0.12.0.jar /opt/jmx_exporter
COPY ./SampleJavaApplication-1.0-SNAPSHOT.jar /opt/jmx_exporter
COPY ./start_exporter_example.sh /opt/jmx_exporter
COPY ./config.yaml /opt/jmx_exporter

RUN chmod -R o+x /opt/jmx_exporter
RUN apk add curl

ENTRYPOINT exec /opt/jmx_exporter/start_exporter_example.sh
```

Daftar berikut menjelaskan empat baris `COPY` dalam Dockerfile ini.
+ [Unduh file jar JMX Exporter terbaru dari jmx\$1exporter. https://github.com/prometheus/](https://github.com/prometheus/jmx_exporter)
+ `config.yaml` adalah file konfigurasi JMX Exporter. Untuk informasi selengkapnya, lihat [https://github.com/prometheus/jmx\$1exporter](https://github.com/prometheus/jmx_exporter#Configuration ) \$1Configuration.

  Berikut ini adalah sebuah file konfigurasi sampel untuk Java dan Tomcat:

  ```
  lowercaseOutputName: true
  lowercaseOutputLabelNames: true
  
  rules:
  - pattern: 'java.lang<type=OperatingSystem><>(FreePhysicalMemorySize|TotalPhysicalMemorySize|FreeSwapSpaceSize|TotalSwapSpaceSize|SystemCpuLoad|ProcessCpuLoad|OpenFileDescriptorCount|AvailableProcessors)'
    name: java_lang_OperatingSystem_$1
    type: GAUGE
  
  - pattern: 'java.lang<type=Threading><>(TotalStartedThreadCount|ThreadCount)'
    name: java_lang_threading_$1
    type: GAUGE
  
  - pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+)'
    name: catalina_globalrequestprocessor_$3_total
    labels:
      port: "$2"
      protocol: "$1"
    help: Catalina global $3
    type: COUNTER
  
  - pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount)'
    name: catalina_servlet_$3_total
    labels:
      module: "$1"
      servlet: "$2"
    help: Catalina servlet $3 total
    type: COUNTER
  
  - pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount)'
    name: catalina_threadpool_$3
    labels:
      port: "$2"
      protocol: "$1"
    help: Catalina threadpool $3
    type: GAUGE
  
  - pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions)'
    name: catalina_session_$3_total
    labels:
      context: "$2"
      host: "$1"
    help: Catalina session $3 total
    type: COUNTER
  
  - pattern: ".*"
  ```
+ `start_exporter_example.sh` adalah skrip untuk memulai aplikasi JAR dengan metrik-metrik Prometheus yang diekspor. Ia juga menyediakan JMX Exporter dengan jalur file `config.yaml`.

  ```
  $ cat start_exporter_example.sh 
  java -javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-0.12.0.jar=9404:/opt/jmx_exporter/config.yaml -cp  /opt/jmx_exporter/SampleJavaApplication-1.0-SNAPSHOT.jar com.gubupt.sample.app.App
  ```
+ SampleJavaApplication-1.0-snapshot.jar adalah contoh file jar aplikasi Java. Ganti file tersebut dengan aplikasi Java yang ingin Anda pantau.

Bangun sebuah citra docker dengan konfigurasi ini dan unggah citra tersebut ke sebuah repositori citra.

# Siapkan HAProxy dengan eksportir metrik di Amazon EKS dan Kubernetes
<a name="ContainerInsights-Prometheus-Sample-Workloads-haproxy"></a>

HAProxy adalah aplikasi proxy sumber terbuka. Untuk informasi selengkapnya, lihat [HAProxy](https://www.haproxy.org).

Jika Anda menjalankan HAProxy cluster dengan tipe peluncuran Fargate, Anda perlu mengatur profil Fargate sebelum melakukan langkah-langkah dalam prosedur ini. Untuk menyiapkan profilnya, masukkan perintah berikut. Ganti *MyCluster* dengan nama klaster Anda.

```
eksctl create fargateprofile --cluster MyCluster \
--namespace haproxy-ingress-sample --name haproxy-ingress-sample
```

**Untuk menginstal HAProxy dengan eksportir metrik untuk menguji dukungan Container Insights Prometheus**

1. Masukkan perintah berikut untuk menambahkan repo inkubator Helm:

   ```
   helm repo add haproxy-ingress https://haproxy-ingress.github.io/charts
   ```

1. Masukkan perintah berikut untuk membuat sebuah namespace baru:

   ```
   kubectl create namespace haproxy-ingress-sample
   ```

1. Masukkan perintah berikut untuk menginstal HAProxy:

   ```
   helm install haproxy haproxy-ingress/haproxy-ingress \
   --namespace haproxy-ingress-sample \
   --set defaultBackend.enabled=true \
   --set controller.stats.enabled=true \
   --set controller.metrics.enabled=true \
   --set-string controller.metrics.service.annotations."prometheus\.io/port"="9101" \
   --set-string controller.metrics.service.annotations."prometheus\.io/scrape"="true"
   ```

1. Masukkan perintah berikut untuk mengonfirmasi keterangan dari layanan:

   ```
   kubectl describe service haproxy-haproxy-ingress-metrics -n haproxy-ingress-sample
   ```

   Anda seharusnya melihat dua keterangan berikut.

   ```
   Annotations:   prometheus.io/port: 9101
                  prometheus.io/scrape: true
   ```

**Untuk menghapus instalasi HAProxy**
+ Masukkan perintah-perintah berikut.

  ```
  helm uninstall haproxy --namespace haproxy-ingress-sample
  kubectl delete namespace haproxy-ingress-sample
  ```

# Tutorial untuk menambahkan target scrape Prometheus baru: Redis OSS di Amazon EKS dan Kubernetes cluster
<a name="ContainerInsights-Prometheus-Setup-redis-eks"></a>

Tutorial ini memberikan pengantar langsung untuk mengikis metrik Prometheus dari contoh aplikasi Redis OSS di Amazon EKS dan Kubernetes. Redis OSS (https://redis.io/) adalah sumber terbuka (berlisensi BSD), penyimpanan struktur data dalam memori, digunakan sebagai database, cache, dan broker pesan. Untuk informasi selengkapnya, silakan lihat [ redis](https://redis.io/).

redis\$1exporter (Lisensi MIT berlisensi) digunakan untuk mengekspos metrik Redis OSS Prometheus pada port yang ditentukan (default: 0.0.0. 0:9121). Untuk informasi selengkapnya, silakan lihat [ redis\$1exporter](https://github.com/oliver006/redis_exporter).

Citra Docker dalam dua repositori Docker Hub berikut digunakan dalam tutorial ini: 
+ [ redis](https://hub.docker.com/_/redis?tab=description)
+ [ redis\$1exporter](https://hub.docker.com/r/oliver006/redis_exporter)

**Untuk menginstal sampel beban kerja Redis OSS yang mengekspos metrik Prometheus**

1. Mengatur namespace untuk sampel beban kerja Redis OSS.

   ```
   REDIS_NAMESPACE=redis-sample
   ```

1. Jika Anda menjalankan Redis OSS pada cluster dengan tipe peluncuran Fargate, Anda perlu mengatur profil Fargate. Untuk menyiapkan profilnya, masukkan perintah berikut. Ganti *MyCluster* dengan nama klaster Anda.

   ```
   eksctl create fargateprofile --cluster MyCluster \
   --namespace $REDIS_NAMESPACE --name $REDIS_NAMESPACE
   ```

1. Masukkan perintah berikut untuk menginstal sampel beban kerja Redis OSS.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_traffic/redis/redis-traffic-sample.yaml \
   | sed "s/{{namespace}}/$REDIS_NAMESPACE/g" \
   | kubectl apply -f -
   ```

1. Instalasi termasuk layanan bernama `my-redis-metrics` yang mengekspos metrik Redis OSS Prometheus pada port 9121 Masukkan perintah berikut untuk mendapatkan rincian layanan: 

   ```
   kubectl describe service/my-redis-metrics  -n $REDIS_NAMESPACE
   ```

   Di `Annotations` bagian hasil, Anda akan melihat dua anotasi yang cocok dengan konfigurasi scrape Prometheus agen, sehingga dapat menemukan beban kerja CloudWatch secara otomatis:

   ```
   prometheus.io/port: 9121
   prometheus.io/scrape: true
   ```

   Konfigurasi scraping Prometheus terkait dapat ditemukan di bagian `- job_name: kubernetes-service-endpoints` dari `kubernetes-eks.yaml` atau `kubernetes-k8s.yaml`.

**Untuk mulai mengumpulkan metrik Redis OSS Prometheus di CloudWatch**

1. Unduh versi terbaru dari file `kubernetes-eks.yaml` atau `kubernetes-k8s.yaml` dengan memasukkan salah satu perintah dari perintah-perintah berikut. Untuk sebuah klaster Amazon EKS dengan tipe peluncuran EC2, masukkan perintah ini:

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
   ```

   Untuk sebuah klaster Amazon EKS dengan tipe peluncuran Fargate, masukkan perintah ini:

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml
   ```

   Untuk sebuah klaster Kubernetes yang berjalan di sebuah instans Amazon EC2, masukkan perintah ini:

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml
   ```

1. Buka file dengan editor teks, dan temukan bagian `cwagentconfig.json`. Tambahkan subbagian berikut dan simpan perubahannya. Pastikan bahwa indentasi mengikuti pola yang ada saat itu.

   ```
   {
     "source_labels": ["pod_name"],
     "label_matcher": "^redis-instance$",
     "dimensions": [["Namespace","ClusterName"]],
     "metric_selectors": [
       "^redis_net_(in|out)put_bytes_total$",
       "^redis_(expired|evicted)_keys_total$",
       "^redis_keyspace_(hits|misses)_total$",
       "^redis_memory_used_bytes$",
       "^redis_connected_clients$"
     ]
   },
   {
     "source_labels": ["pod_name"],
     "label_matcher": "^redis-instance$",
     "dimensions": [["Namespace","ClusterName","cmd"]],
     "metric_selectors": [
       "^redis_commands_total$"
     ]
   },
   {
     "source_labels": ["pod_name"],
     "label_matcher": "^redis-instance$",
     "dimensions": [["Namespace","ClusterName","db"]],
     "metric_selectors": [
       "^redis_db_keys$"
     ]
   },
   ```

   Bagian yang Anda tambahkan menempatkan metrik Redis OSS ke daftar izin CloudWatch agen. Untuk daftar metrik ini, silakan lihat bagian berikut.

1. Jika Anda sudah memiliki CloudWatch agen dengan dukungan Prometheus yang diterapkan di cluster ini, Anda harus menghapusnya dengan memasukkan perintah berikut.

   ```
   kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
   ```

1. Terapkan CloudWatch agen dengan konfigurasi Anda yang diperbarui dengan memasukkan salah satu perintah berikut. Ganti *MyCluster* dan *region* untuk mencocokkan pengaturan Anda.

   Untuk sebuah klaster Amazon EKS dengan tipe peluncuran EC2, masukkan perintah ini:

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

   Untuk sebuah klaster Amazon EKS dengan tipe peluncuran Fargate, masukkan perintah ini:

   ```
   cat prometheus-eks-fargate.yaml \
   | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \
   | kubectl apply -f -
   ```

   Untuk sebuah klaster Kubernetes, masukkan perintah ini.

   ```
   cat prometheus-k8s.yaml \
   | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \
   | kubectl apply -f -
   ```

## Melihat metrik Prometheus Redis OSS Anda
<a name="ContainerInsights-Prometheus-Setup-redis-eks-view"></a>

Tutorial ini mengirimkan metrik berikut ke namespace **ContainerInsights/Prometheus** di. CloudWatch Anda dapat menggunakan CloudWatch konsol untuk melihat metrik di namespace tersebut.


| Nama metrik | Dimensi | 
| --- | --- | 
|  `redis_net_input_bytes_total` |  ClusterName, `Namespace`  | 
|  `redis_net_output_bytes_total` |  ClusterName, `Namespace`  | 
|  `redis_expired_keys_total` |  ClusterName, `Namespace`  | 
|  `redis_evicted_keys_total` |  ClusterName, `Namespace`  | 
|  `redis_keyspace_hits_total` |  ClusterName, `Namespace`  | 
|  `redis_keyspace_misses_total` |  ClusterName, `Namespace`  | 
|  `redis_memory_used_bytes` |  ClusterName, `Namespace`  | 
|  `redis_connected_clients` |  ClusterName, `Namespace`  | 
|  `redis_commands_total` |  ClusterName, `Namespace`, cmd  | 
|  `redis_db_keys` |  ClusterName, `Namespace`, db  | 

**catatan**  
Nilai dari dimensi **cmd** bisa berupa: `append`, `client`, `command`, `config`, `dbsize`, `flushall`, `get`, `incr`, `info`, `latency`, atau `slowlog`.  
Nilai dari dimensi **db** bisa `db0` hingga `db15`. 

Anda juga dapat membuat CloudWatch dasbor untuk metrik Prometheus Redis OSS Anda.

**Untuk membuat dasbor untuk metrik Redis OSS Prometheus**

1. Buat variabel lingkungan, yang menggantikan nilai di bawah ini untuk menyesuaikan dengan deployment Anda.

   ```
   DASHBOARD_NAME=your_cw_dashboard_name
   REGION_NAME=your_metric_region_such_as_us-east-1
   CLUSTER_NAME=your_k8s_cluster_name_here
   NAMESPACE=your_redis_service_namespace_here
   ```

1. Masukkan perintah berikut untuk membuat dasbor tersebut.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/redis/cw_dashboard_redis.json \
   | sed "s/{{YOUR_AWS_REGION}}/${REGION_NAME}/g" \
   | sed "s/{{YOUR_CLUSTER_NAME}}/${CLUSTER_NAME}/g" \
   | sed "s/{{YOUR_NAMESPACE}}/${NAMESPACE}/g" \
   ```