

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

# Tutorial untuk menambahkan sebuah target scraping Prometheus baru: Memcached di Amazon ECS
<a name="ContainerInsights-Prometheus-Setup-memcached-ecs"></a>

Tutorial ini akan memberikan Anda pengenalan langsung tentang cara melakukan scraping pada metrik Prometheus dari aplikasi Memcached sampel di klaster Amazon ECS dengan tipe peluncuran EC2. Target eksportir Prometheus Memcached akan ditemukan secara otomatis oleh agen oleh penemuan layanan berbasis definisi tugas ECS. CloudWatch 

Memcached adalah sebuah sistem cache memori terdistribusi serba guna. Memcached ini sering digunakan untuk mempercepat situs web yang didorong oleh basis data dinamis dengan menyimpan data dan objek di RAM untuk mengurangi jumlah sumber data eksternal (seperti basis data atau API) yang harus dibaca. Untuk informasi selengkapnya, silakan lihat [ Apa itu Memcached?](https://www.memcached.org/)

[ memchached\_exporter](https://github.com/prometheus/memcached_exporter) (Apache License 2.0) adalah salah satu pengekspor resmi Prometheus. Secara bawaan, memcache\_exporter berfungsi pada port 0.0.0.0:9150 di `/metrics.`

Citra Docker dalam dua repositori Docker Hub berikut digunakan dalam tutorial ini: 
+ [ Memcached](https://hub.docker.com/_/memcached?tab=description)
+ [ prom/memcached-exporter](https://hub.docker.com/r/prom/memcached-exporter/)

**Prasyarat**

Untuk mengumpulkan metrik-metrik dari sampel beban kerja Prometheus untuk Amazon ECS, Anda harus menjalankan Wawasan Kontainer di klaster. Untuk informasi tentang cara melakukan instalasi Wawasan Kontainer, silakan lihat [Menyiapkan Wawasan Kontainer di Amazon ECS](deploy-container-insights-ECS.md).

**Topics**
+ [Menetapkan variabel lingkungan klaster Amazon ECS EC2](#ContainerInsights-Prometheus-Setup-memcached-ecs-environment)
+ [Instal beban kerja Memcached sampel](#ContainerInsights-Prometheus-Setup-memcached-ecs-install-workload)
+ [Konfigurasikan CloudWatch agen untuk mengikis metrik Prometheus Memcached](#ContainerInsights-Prometheus-Setup-memcached-ecs-agent)
+ [Menampilkan metrik-metrik Memcached Anda](#ContainerInsights-Prometheus-ECS-memcached-view)

## Menetapkan variabel lingkungan klaster Amazon ECS EC2
<a name="ContainerInsights-Prometheus-Setup-memcached-ecs-environment"></a>

**Untuk mengatur variabel lingkungan klaster Amazon ECS EC2**

1. Instal CLI Amazon ECS jika Anda belum melakukan instalasinya. Untuk informasi selengkapnya, silakan lihat [ Menginstal CLI Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_CLI_installation.html).

1. Atur nama klaster dan Wilayah Amazon ECS baru. Contoh:

   ```
   ECS_CLUSTER_NAME=ecs-ec2-memcached-tutorial
   AWS_DEFAULT_REGION=ca-central-1
   ```

1. (Opsional) Jika Anda belum memiliki cluster Amazon ECS dengan tipe peluncuran EC2 di mana Anda ingin menginstal sampel beban kerja dan CloudWatch agen Memcached, Anda dapat membuatnya dengan memasukkan perintah berikut.

   ```
   ecs-cli up --capability-iam --size 1 \
   --instance-type t3.medium \
   --cluster $ECS_CLUSTER_NAME \
   --region $AWS_REGION
   ```

   Hasil yang diharapkan dari perintah ini adalah sebagai berikut:

   ```
   WARN[0000] You will not be able to SSH into your EC2 instances without a key pair. 
   INFO[0000] Using recommended Amazon Linux 2 AMI with ECS Agent 1.44.4 and Docker version 19.03.6-ce 
   INFO[0001] Created cluster                               cluster=ecs-ec2-memcached-tutorial region=ca-central-1
   INFO[0002] Waiting for your cluster resources to be created... 
   INFO[0002] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
   INFO[0063] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
   INFO[0124] Cloudformation stack status                   stackStatus=CREATE_IN_PROGRESS
   VPC created: vpc-xxxxxxxxxxxxxxxxx
   Security Group created: sg-xxxxxxxxxxxxxxxxx
   Subnet created: subnet-xxxxxxxxxxxxxxxxx
   Subnet created: subnet-xxxxxxxxxxxxxxxxx
   Cluster creation succeeded.
   ```

## Instal beban kerja Memcached sampel
<a name="ContainerInsights-Prometheus-Setup-memcached-ecs-install-workload"></a>

**Untuk melakukan instalasi beban kerja Memcached sampel yang membuka metrik Prometheus**

1. Unduh CloudFormation template Memcached dengan memasukkan perintah berikut.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/sample_traffic/memcached/memcached-traffic-sample.yaml
   ```

1. Tetapkan nama-nama peran IAM yang akan dibuat untuk Memcached dengan memasukkan perintah-perintah berikut.

   ```
   MEMCACHED_ECS_TASK_ROLE_NAME=memcached-prometheus-demo-ecs-task-role-name
   MEMCACHED_ECS_EXECUTION_ROLE_NAME=memcached-prometheus-demo-ecs-execution-role-name
   ```

1. Instal beban kerja Memcached sampel dengan memasukkan perintah berikut. Sampel ini akan melakukan instalasi beban kerja di mode jaringan `host`.

   ```
   MEMCACHED_ECS_NETWORK_MODE=host
   
   aws cloudformation create-stack --stack-name Memcached-Prometheus-Demo-ECS-$ECS_CLUSTER_NAME-EC2-$MEMCACHED_ECS_NETWORK_MODE \
       --template-body file://memcached-traffic-sample.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=ECSNetworkMode,ParameterValue=$MEMCACHED_ECS_NETWORK_MODE \
                    ParameterKey=TaskRoleName,ParameterValue=$MEMCACHED_ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$MEMCACHED_ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_REGION
   ```

 CloudFormation Tumpukan menciptakan empat sumber daya:
+ Satu peran tugas ECS
+ Satu peran eksekusi tugas ECS
+ Satu penetapan tugas Memcached
+ Satu layanan Memcached

Dalam penetapan tugas Memcached, ada dua kontainer yang ditentukan:
+ Kontainer utama menjalankan sebuah aplikasi Memcached sederhana dan membuka port 11211 agar bisa diakses.
+ Kontainer lainnya menjalankan proses eksportir Redis OSS untuk mengekspos metrik Prometheus di port 9150. Ini adalah wadah yang akan ditemukan dan dikikis oleh agen. CloudWatch 

## Konfigurasikan CloudWatch agen untuk mengikis metrik Prometheus Memcached
<a name="ContainerInsights-Prometheus-Setup-memcached-ecs-agent"></a>

**Untuk mengonfigurasi CloudWatch agen untuk mengikis metrik Prometheus Memcached**

1. Unduh `cwagent-ecs-prometheus-metric-for-awsvpc.yaml` versi terbaru dengan memasukkan perintah berikut.

   ```
   curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/cloudformation-quickstart/cwagent-ecs-prometheus-metric-for-awsvpc.yaml
   ```

1. Buka file dengan editor teks, dan temukan konfigurasi CloudWatch agen lengkap di belakang `value` kunci di `resource:CWAgentConfigSSMParameter` bagian.

   Kemudian, di bagian `ecs_service_discovery`, tambahkan konfigurasi berikut ke bagian `task_definition_list`.

   ```
   {
       "sd_job_name": "ecs-memcached",
       "sd_metrics_ports": "9150",
       "sd_task_definition_arn_pattern": ".*:task-definition/memcached-prometheus-demo.*:[0-9]+"
   },
   ```

   Untuk bagian `metric_declaration`, pengaturan bawaan tidak mengizinkan metrik Memcached. Tambahkan bagian berikut untuk mengizinkan metrik Memcached. Pastikan untuk mengikuti pola indentasi yang ada saat itu.

   ```
   {
     "source_labels": ["container_name"],
     "label_matcher": "memcached-exporter-.*",
     "dimensions": [["ClusterName", "TaskDefinitionFamily"]],
     "metric_selectors": [
       "^memcached_current_(bytes|items|connections)$",
       "^memcached_items_(reclaimed|evicted)_total$",
       "^memcached_(written|read)_bytes_total$",
       "^memcached_limit_bytes$",
       "^memcached_commands_total$"
     ]
   },
   {
     "source_labels": ["container_name"],
     "label_matcher": "memcached-exporter-.*",
     "dimensions": [["ClusterName", "TaskDefinitionFamily","status","command"], ["ClusterName", "TaskDefinitionFamily","command"]],
     "metric_selectors": [
       "^memcached_commands_total$"
     ]
   },
   ```

1. Jika Anda sudah memiliki CloudWatch agen yang digunakan di cluster Amazon ECS oleh CloudFormation, Anda dapat membuat set perubahan dengan memasukkan perintah berikut.

   ```
   ECS_NETWORK_MODE=bridge
   CREATE_IAM_ROLES=True
   ECS_TASK_ROLE_NAME={{your_selected_ecs_task_role_name}}
   ECS_EXECUTION_ROLE_NAME={{your_selected_ecs_execution_role_name}}
   
   aws cloudformation create-change-set --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
       --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_REGION \
       --change-set-name memcached-scraping-support
   ```

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

1. Meninjau changeset `memcached-scraping-support` yang baru saja Anda buat. Anda seharusnya melihat satu perubahan diterapkan ke sumber daya `CWAgentConfigSSMParameter`. Jalankan changeset dan restart tugas CloudWatch agen dengan memasukkan perintah berikut.

   ```
   aws ecs update-service --cluster $ECS_CLUSTER_NAME \
   --desired-count 0 \
   --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \
   --region $AWS_REGION
   ```

1. Tunggu sekitar 10 detik, kemudian masukkan perintah berikut.

   ```
   aws ecs update-service --cluster $ECS_CLUSTER_NAME \
   --desired-count 1 \
   --service cwagent-prometheus-replica-service-EC2-$ECS_NETWORK_MODE \
   --region $AWS_REGION
   ```

1. Jika Anda menginstal CloudWatch agen dengan pengumpulan metrik Prometheus untuk cluster untuk pertama kalinya, masukkan perintah berikut:

   ```
   ECS_NETWORK_MODEE=bridge
   CREATE_IAM_ROLES=True
   ECS_TASK_ROLE_NAME={{your_selected_ecs_task_role_name}}
   ECS_EXECUTION_ROLE_NAME={{your_selected_ecs_execution_role_name}}
   
   aws cloudformation create-stack --stack-name CWAgent-Prometheus-ECS-${ECS_CLUSTER_NAME}-EC2-${ECS_NETWORK_MODE} \
       --template-body file://cwagent-ecs-prometheus-metric-for-bridge-host.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSNetworkMode,ParameterValue=$ECS_NETWORK_MODE \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_REGION
   ```

## Menampilkan metrik-metrik Memcached Anda
<a name="ContainerInsights-Prometheus-ECS-memcached-view"></a>

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


| Nama metrik | Dimensi | 
| --- | --- | 
| `memcached_current_items` | `ClusterName`, `TaskDefinitionFamily` | 
| `memcached_current_connections` | `ClusterName`, `TaskDefinitionFamily` | 
| `memcached_limit_bytes` | `ClusterName`, `TaskDefinitionFamily` | 
| `memcached_current_bytes` | `ClusterName`, `TaskDefinitionFamily` | 
| `memcached_written_bytes_total` | `ClusterName`, `TaskDefinitionFamily` | 
| `memcached_read_bytes_total` | `ClusterName`, `TaskDefinitionFamily` | 
| `memcached_items_evicted_total` | `ClusterName`, `TaskDefinitionFamily` | 
| `memcached_items_reclaimed_total` | `ClusterName`, `TaskDefinitionFamily` | 
| `memcached_commands_total` | `ClusterName`, `TaskDefinitionFamily`<br />`ClusterName`, TaskDefinitionFamily, perintah<br />`ClusterName`, TaskDefinitionFamily, status, perintah | 

**catatan**  
Nilai dari dimensi **perintah** bisa berupa: `delete`, `get`, `cas`, `set`, `decr`, `touch`, `incr`, atau `flush`.  
Nilai dari dimensi **status** bisa berupa `hit`, `miss`, atau `badval`. 

Anda juga dapat membuat CloudWatch dasbor untuk metrik Prometheus Memcached Anda.

**Cara membuat sebuah dasbor untuk metrik-metrik Memcached Prometheus**

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

   ```
   DASHBOARD_NAME={{your_memcached_cw_dashboard_name}}
   ECS_TASK_DEF_FAMILY=memcached-prometheus-demo-$ECS_CLUSTER_NAME-EC2-$MEMCACHED_ECS_NETWORK_MOD
   ```

1. Masukkan perintah berikut untuk membuat dasbor tersebut.

   ```
   curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/ecs-task-definition-templates/deployment-mode/replica-service/cwagent-prometheus/sample_cloudwatch_dashboards/memcached/cw_dashboard_memcached.json \
   | sed "s/{{YOUR_AWS_REGION}}/$AWS_REGION/g" \
   | sed "s/{{YOUR_CLUSTER_NAME}}/$ECS_CLUSTER_NAME/g" \
   | sed "s/{{YOUR_TASK_DEF_FAMILY}}/$ECS_TASK_DEF_FAMILY/g" \
   | xargs -0 aws cloudwatch put-dashboard --dashboard-name ${DASHBOARD_NAME} --region $AWS_REGION --dashboard-body
   ```