Tutorial untuk menambahkan target scrape Prometheus baru: Memcached di Amazon ECS - Amazon CloudWatch

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

Tutorial untuk menambahkan target scrape Prometheus baru: Memcached di Amazon ECS

Tutorial ini memberikan pengantar langsung untuk mengikis metrik Prometheus dari contoh aplikasi Memcached pada cluster Amazon Amazon dengan jenis peluncuran. ECS EC2 Target eksportir Prometheus Memcached akan ditemukan secara otomatis oleh agen dengan penemuan layanan berbasis definisi tugas. CloudWatch ECS

Memcached adalah sebuah sistem cache memori terdistribusi serba guna. Ini sering digunakan untuk mempercepat situs web berbasis database dinamis dengan menyimpan data dan objek RAM untuk mengurangi berapa kali sumber data eksternal (seperti database atauAPI) harus dibaca. Untuk informasi selengkapnya, silakan lihat Apa itu Memcached?

memchached_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:

Prasyarat

Untuk mengumpulkan metrik dari contoh beban kerja Prometheus untuk ECS Amazon, Anda harus menjalankan Container Insights di cluster. Untuk informasi tentang cara melakukan instalasi Wawasan Kontainer, silakan lihat Menyiapkan Wawasan Kontainer di Amazon ECS.

Mengatur variabel lingkungan ECS EC2 klaster Amazon

Untuk mengatur variabel lingkungan ECS EC2 klaster Amazon
  1. Instal Amazon ECS CLI jika Anda belum melakukannya. Untuk informasi selengkapnya, lihat Menginstal Amazon ECS CLI.

  2. Tetapkan nama dan Wilayah ECS cluster Amazon yang baru. Sebagai contoh:

    ECS_CLUSTER_NAME=ecs-ec2-memcached-tutorial AWS_DEFAULT_REGION=ca-central-1
  3. (Opsional) Jika Anda belum memiliki ECS klaster Amazon dengan jenis EC2 peluncuran tempat 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

Untuk melakukan instalasi beban kerja Memcached sampel yang membuka metrik Prometheus
  1. Unduh AWS 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
  2. Tetapkan nama IAM peran yang akan dibuat untuk Memcached dengan memasukkan 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
  3. 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

AWS CloudFormation Tumpukan menciptakan empat sumber daya:

  • Satu peran ECS tugas

  • Satu peran eksekusi ECS tugas

  • 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 yang menjalankan proses pengekspor Redis untuk membuka metrik Prometheus di port 9150. Ini adalah wadah yang akan ditemukan dan dikikis oleh agen. CloudWatch

Konfigurasikan CloudWatch agen untuk mengikis metrik Prometheus Memcached

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
  2. 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.

    { "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$" ] },
  3. Jika Anda sudah memiliki CloudWatch agen yang digunakan di ECS klaster Amazon oleh AWS 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
  4. Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  5. 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
  6. 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
  7. 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

Tutorial ini mengirimkan metrik berikut ke namespace ECSContainerInsights//Prometheus 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

ClusterName, TaskDefinitionFamily, perintah

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
  2. 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