

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

# Tutorial untuk mengikis metrik Redis OSS Prometheus di Amazon ECS Fargate
<a name="ContainerInsights-Prometheus-Setup-redis-ecs"></a>

Tutorial ini memberikan pengantar langsung untuk mengikis metrik Prometheus dari contoh aplikasi Redis OSS di cluster Amazon ECS Fargate. Target eksportir Redis OSS Prometheus akan ditemukan secara otomatis oleh agen CloudWatch dengan dukungan metrik Prometheus berdasarkan label docker kontainer.

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\_exporter (Lisensi MIT berlisensi) digunakan untuk mengekspos metrik prometheus Redis OSS pada port yang ditentukan (default: 0.0.0. 0:9121). Untuk informasi selengkapnya, silakan lihat [ redis\_exporter](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\_exporter](https://hub.docker.com/r/oliver006/redis_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 Fargate](#ContainerInsights-Prometheus-Setup-redis-ecs-variable)
+ [Menetapkan variabel lingkungan jaringan untuk klaster Amazon ECS Fargate](#ContainerInsights-Prometheus-Setup-redis-ecs-variable2)
+ [Instal sampel beban kerja Redis OSS](#ContainerInsights-Prometheus-Setup-redis-ecs-install-workload)
+ [Konfigurasikan CloudWatch agen untuk mengikis metrik Prometheus Redis OSS](#ContainerInsights-Prometheus-Setup-redis-ecs-agent)
+ [Melihat metrik Redis OSS Anda](#ContainerInsights-Prometheus-Setup-redis-view)

## Menetapkan variabel lingkungan klaster Amazon ECS Fargate
<a name="ContainerInsights-Prometheus-Setup-redis-ecs-variable"></a>

**Cara menetapkan variabel lingkungan klaster Amazon ECS Fargate**

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-fargate-redis-tutorial
   AWS_DEFAULT_REGION=ca-central-1
   ```

1. (Opsional) Jika Anda belum memiliki cluster Amazon ECS Fargate tempat Anda ingin menginstal contoh beban kerja CloudWatch dan agen Redis OSS, Anda dapat membuatnya dengan memasukkan perintah berikut.

   ```
   ecs-cli up --capability-iam \
   --cluster $ECS_CLUSTER_NAME \
   --launch-type FARGATE \
   --region $AWS_DEFAULT_REGION
   ```

   Hasil yang diharapkan dari perintah ini adalah sebagai berikut:

   ```
   INFO[0000] Created cluster   cluster=ecs-fargate-redis-tutorial region=ca-central-1
   INFO[0001] Waiting for your cluster resources to be created...
   INFO[0001] Cloudformation stack status   stackStatus=CREATE_IN_PROGRESS
   VPC created: vpc-xxxxxxxxxxxxxxxxx
   Subnet created: subnet-xxxxxxxxxxxxxxxxx
   Subnet created: subnet-xxxxxxxxxxxxxxxxx
   Cluster creation succeeded.
   ```

## Menetapkan variabel lingkungan jaringan untuk klaster Amazon ECS Fargate
<a name="ContainerInsights-Prometheus-Setup-redis-ecs-variable2"></a>

**Untuk menetapkan variabel lingkungan jaringan untuk klaster Amazon ECS Fargate**

1. Atur VPC dan ID subnet Anda dari klaster Amazon ECS. Jika Anda membuat sebuah klaster baru dalam prosedur sebelumnya, maka Anda akan melihat nilai-nilai ini dalam hasil perintah akhir. Jika tidak, gunakan cluster yang ada yang akan Anda gunakan dengan Redis. IDs 

   ```
   ECS_CLUSTER_VPC={{vpc-xxxxxxxxxxxxxxxxx}}
   ECS_CLUSTER_SUBNET_1={{subnet-xxxxxxxxxxxxxxxxx}}
   ECS_CLUSTER_SUBNET_2={{subnet-xxxxxxxxxxxxxxxxx}}
   ```

1. Dalam tutorial ini, kita akan menginstal aplikasi Redis OSS dan CloudWatch agen di grup keamanan default dari VPC cluster Amazon ECS. Grup keamanan default memungkinkan semua koneksi jaringan dalam grup keamanan yang sama sehingga CloudWatch agen dapat mengikis metrik Prometheus yang terpapar pada wadah Redis OSS. Dalam lingkungan produksi nyata, Anda mungkin ingin membuat grup keamanan khusus untuk aplikasi dan CloudWatch agen Redis OSS dan menetapkan izin khusus untuk mereka. 

   Masukkan perintah berikut untuk mendapatkan ID grup keamanan bawaan.

   ```
   aws ec2 describe-security-groups \
   --filters Name=vpc-id,Values=$ECS_CLUSTER_VPC  \
   --region $AWS_DEFAULT_REGION
   ```

   Kemudian atur variabel grup keamanan deafult cluster Fargate dengan memasukkan perintah berikut, ganti {{my-default-security-group}} dengan nilai yang Anda temukan dari perintah sebelumnya.

   ```
   ECS_CLUSTER_SECURITY_GROUP={{my-default-security-group}}
   ```

## Instal sampel beban kerja Redis OSS
<a name="ContainerInsights-Prometheus-Setup-redis-ecs-install-workload"></a>

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

1. Unduh CloudFormation template Redis OSS 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/redis/redis-traffic-sample.yaml
   ```

1. Atur nama peran IAM yang akan dibuat untuk Redis OSS dengan memasukkan perintah berikut.

   ```
   REDIS_ECS_TASK_ROLE_NAME=redis-prometheus-demo-ecs-task-role-name
   REDIS_ECS_EXECUTION_ROLE_NAME=redis-prometheus-demo-ecs-execution-role-name
   ```

1. Instal sampel beban kerja Redis OSS dengan memasukkan perintah berikut.

   ```
   aws cloudformation create-stack --stack-name Redis-Prometheus-Demo-ECS-$ECS_CLUSTER_NAME-fargate-awsvpc \
       --template-body file://redis-traffic-sample.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=SecurityGroupID,ParameterValue=$ECS_CLUSTER_SECURITY_GROUP \
                    ParameterKey=SubnetID,ParameterValue=$ECS_CLUSTER_SUBNET_1 \
                    ParameterKey=TaskRoleName,ParameterValue=$REDIS_ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$REDIS_ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region $AWS_DEFAULT_REGION
   ```

 CloudFormation Tumpukan menciptakan empat sumber daya:
+ Satu peran tugas ECS
+ Satu peran eksekusi tugas ECS
+ Satu definisi tugas Redis OSS
+ Satu layanan Redis OSS

Dalam definisi tugas Redis OSS, dua kontainer didefinisikan:
+ Kontainer utama menjalankan aplikasi Redis OSS sederhana dan membuka port 6379 untuk akses.
+ Kontainer lainnya menjalankan proses eksportir Redis OSS untuk mengekspos metrik Prometheus pada port 9121. Ini adalah wadah yang akan ditemukan dan dikikis oleh agen. CloudWatch Label docker berikut didefinisikan sehingga CloudWatch agen dapat menemukan kontainer ini berdasarkan itu.

  ```
  ECS_PROMETHEUS_EXPORTER_PORT: 9121
  ```

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

**Untuk mengonfigurasi CloudWatch agen untuk mengikis metrik Redis OSS Prometheus**

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 `ecs_service_discovery` bagian yang ditampilkan di sini, penemuan layanan `docker_label` berbasis diaktifkan dengan pengaturan default yang didasarkan`ECS_PROMETHEUS_EXPORTER_PORT`, yang cocok dengan label docker yang kami definisikan dalam definisi tugas Redis OSS ECS. Jadi, kita tidak perlu melakukan perubahan apa pun dalam bagian ini:

   ```
   ecs_service_discovery": {
     "sd_frequency": "1m",
     "sd_result_file": "/tmp/cwagent_ecs_auto_sd.yaml",
   *  "docker_label": {
     },*
     ...
   ```

   Untuk `metric_declaration` bagian ini, pengaturan default tidak mengizinkan metrik Redis OSS apa pun. Tambahkan bagian berikut untuk mengizinkan metrik Redis OSS. Pastikan untuk mengikuti pola indentasi yang ada saat itu.

   ```
   {
     "source_labels": ["container_name"],
     "label_matcher": "^redis-exporter-.*$",
     "dimensions": [["ClusterName","TaskDefinitionFamily"]],
     "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": ["container_name"],
     "label_matcher": "^redis-exporter-.*$",
     "dimensions": [["ClusterName","TaskDefinitionFamily","cmd"]],
     "metric_selectors": [
       "^redis_commands_total$"
     ]
   },
   {
     "source_labels": ["container_name"],
     "label_matcher": "^redis-exporter-.*$",
     "dimensions": [["ClusterName","TaskDefinitionFamily","db"]],
     "metric_selectors": [
       "^redis_db_keys$"
     ]
   },
   ```

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_LAUNCH_TYPE=FARGATE
   CREATE_IAM_ROLES=True
   ECS_CLUSTER_SUBNET=$ECS_CLUSTER_SUBNET_1
   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-$ECS_LAUNCH_TYPE-awsvpc \
       --template-body file://cwagent-ecs-prometheus-metric-for-awsvpc.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSLaunchType,ParameterValue=$ECS_LAUNCH_TYPE \
                    ParameterKey=SecurityGroupID,ParameterValue=$ECS_CLUSTER_SECURITY_GROUP \
                    ParameterKey=SubnetID,ParameterValue=$ECS_CLUSTER_SUBNET \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region ${AWS_DEFAULT_REGION} \
       --change-set-name redis-scraping-support
   ```

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

1. Meninjau changeset `redis-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-$ECS_LAUNCH_TYPE-awsvpc \
   --region ${AWS_DEFAULT_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-$ECS_LAUNCH_TYPE-awsvpc \
   --region ${AWS_DEFAULT_REGION}
   ```

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

   ```
   ECS_LAUNCH_TYPE=FARGATE
   CREATE_IAM_ROLES=True
   ECS_CLUSTER_SUBNET=$ECS_CLUSTER_SUBNET_1
   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-$ECS_LAUNCH_TYPE-awsvpc \
       --template-body file://cwagent-ecs-prometheus-metric-for-awsvpc.yaml \
       --parameters ParameterKey=ECSClusterName,ParameterValue=$ECS_CLUSTER_NAME \
                    ParameterKey=CreateIAMRoles,ParameterValue=$CREATE_IAM_ROLES \
                    ParameterKey=ECSLaunchType,ParameterValue=$ECS_LAUNCH_TYPE \
                    ParameterKey=SecurityGroupID,ParameterValue=$ECS_CLUSTER_SECURITY_GROUP \
                    ParameterKey=SubnetID,ParameterValue=$ECS_CLUSTER_SUBNET \
                    ParameterKey=TaskRoleName,ParameterValue=$ECS_TASK_ROLE_NAME \
                    ParameterKey=ExecutionRoleName,ParameterValue=$ECS_EXECUTION_ROLE_NAME \
       --capabilities CAPABILITY_NAMED_IAM \
       --region ${AWS_DEFAULT_REGION}
   ```

## Melihat metrik Redis OSS Anda
<a name="ContainerInsights-Prometheus-Setup-redis-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 | 
| --- | --- | 
| `redis_net_input_bytes_total` | ClusterName, `TaskDefinitionFamily` | 
| `redis_net_output_bytes_total` | ClusterName, `TaskDefinitionFamily` | 
| `redis_expired_keys_total` | ClusterName, `TaskDefinitionFamily` | 
| `redis_evicted_keys_total` | ClusterName, `TaskDefinitionFamily` | 
| `redis_keyspace_hits_total` | ClusterName, `TaskDefinitionFamily` | 
| `redis_keyspace_misses_total` | ClusterName, `TaskDefinitionFamily` | 
| `redis_memory_used_bytes` | ClusterName, `TaskDefinitionFamily` | 
| `redis_connected_clients` | ClusterName, `TaskDefinitionFamily` | 
| `redis_commands_total` | ` ClusterName`, `TaskDefinitionFamily`, `cmd` | 
| `redis_db_keys` | `ClusterName`, `TaskDefinitionFamily`, `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}}
   ECS_TASK_DEF_FAMILY=redis-prometheus-demo-$ECS_CLUSTER_NAME-fargate-awsvpc
   ```

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" \
   ```