Pemecahan masalah untuk metri-metrik Prometheus 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.

Pemecahan masalah untuk metri-metrik Prometheus di Amazon ECS

Bagian ini akan memberikan Anda bantuan untuk melakukan pemecahan masalah konfigurasi untuk penyiapan metrik-metrik Prometheus Anda di klaster Amazon ECS.

Saya tidak melihat metrik Prometheus dikirim ke Log CloudWatch

Metrik Prometheus harus dicerna sebagai peristiwa log di grup log/. aws/ecs/containerinsights/cluster-name/Prometheus Jika grup log tidak dibuat atau metrik Prometheus tidak dikirim ke grup log, Anda harus terlebih dahulu memeriksa apakah target Prometheus telah berhasil ditemukan oleh agen. CloudWatch Lalu periksa grup keamanan dan pengaturan izin CloudWatch agen. Langkah-langkah berikut akan memandu Anda melakukan debug.

Langkah 1: Aktifkan CloudWatch mode debugging agen

Pertama, ubah CloudWatch agen ke mode debug dengan menambahkan baris tebal berikut ke file AWS CloudFormation template Anda, cwagent-ecs-prometheus-metric-for-bridge-host.yaml ataucwagent-ecs-prometheus-metric-for-awsvpc.yaml. Kemudian simpan filenya.

cwagentconfig.json: | { "agent": { "debug": true }, "logs": { "metrics_collected": {

Buat AWS CloudFormation set perubahan baru terhadap tumpukan yang ada. Setel parameter lain di changeset ke nilai yang sama seperti di tumpukan yang ada AWS CloudFormation . Contoh berikut adalah untuk CloudWatch agen yang dipasang di cluster Amazon ECS menggunakan jenis EC2 peluncuran dan mode jaringan jembatan.

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 NEW_CHANGESET_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 $NEW_CHANGESET_NAME

Buka AWS CloudFormation konsol untuk meninjau set perubahan baru,. $NEW_CHANGESET_NAME Harus ada satu perubahan yang diterapkan pada sumber daya CWAgentConfig SSMParameter. Jalankan changeset dan restart tugas CloudWatch agen dengan memasukkan perintah berikut.

aws ecs update-service --cluster $ECS_CLUSTER_NAME \ --desired-count 0 \ --service your_service_name_here \ --region $AWS_REGION

Tunggu sekitar 10 detik dan kemudian masukkan perintah berikut.

aws ecs update-service --cluster $ECS_CLUSTER_NAME \ --desired-count 1 \ --service your_service_name_here \ --region $AWS_REGION

Langkah 2: Memeriksa log penemuan layanan ECS

Definisi tugas ECS dari CloudWatch agen memungkinkan log secara default di bagian di bawah ini. Log dikirim ke CloudWatch Log di grup log ecs-cwagent-prometheus/ecs/.

LogConfiguration: LogDriver: awslogs Options: awslogs-create-group: 'True' awslogs-group: "/ecs/ecs-cwagent-prometheus" awslogs-region: !Ref AWS::Region awslogs-stream-prefix: !Sub 'ecs-${ECSLaunchType}-awsvpc'

Lakukan penyaringan log berdasarkan string ECS_SD_Stats untuk mendapatkan metrik-metrik terkait penemuan layanan ECS, seperti yang ditunjukkan dalam contoh berikut.

2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeContainerInstances: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeInstancesRequest: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeTaskDefinition: 2 2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_DescribeTasks: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: AWSCLI_ListTasks: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: Exporter_DiscoveredTargetCount: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Get_EC2MetaData: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Get_TaskDefinition: 2 2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Size_ContainerInstance: 1 2020-09-1T01:53:14Z D! ECS_SD_Stats: LRUCache_Size_TaskDefinition: 2 2020-09-1T01:53:14Z D! ECS_SD_Stats: Latency: 43.399783ms

Arti dari masing-masing metrik untuk siklus penemuan layanan ECS tertentu adalah sebagai berikut:

  • AWSCLI_DescribeContainerInstances— jumlah panggilan ECS::DescribeContainerInstances API yang dilakukan.

  • AWSCLI_DescribeInstancesRequest— jumlah panggilan ECS::DescribeInstancesRequest API yang dilakukan.

  • AWSCLI_DescribeTaskDefinition— jumlah panggilan ECS::DescribeTaskDefinition API yang dilakukan.

  • AWSCLI_DescribeTasks— jumlah panggilan ECS::DescribeTasks API yang dilakukan.

  • AWSCLI_ListTasks— jumlah panggilan ECS::ListTasks API yang dilakukan.

  • ExporterDiscoveredTargetCount – jumlah target Prometheus yang ditemukan dan berhasil diekspor ke dalam file hasil target di dalam kontainer.

  • LRUCache_Get_ EC2 MetaData — berapa kali metadata instance kontainer diambil dari cache.

  • LRUCache_Dapatkan_ TaskDefinition — berapa kali metadata definisi tugas ECS diambil dari cache.

  • LRUCache_Size_ ContainerInstance — jumlah metadata instance kontainer unik yang di-cache dalam memori.

  • LRUCache_Ukuran_ TaskDefinition — jumlah definisi tugas ECS unik yang disimpan dalam memori.

  • Latensi – berapa lama siklus penemuan layanan berlangsung.

Periksa nilai ExporterDiscoveredTargetCount untuk melihat apakah target-target Prometheus yang ditemukan sesuai dengan harapan Anda. Jika tidak, kemungkinan penyebabnya adalah sebagai berikut:

  • Konfigurasi penemuan layanan ECS mungkin tidak sesuai dengan pengaturan aplikasi Anda. Untuk penemuan layanan berbasis label docker, kontainer target Anda mungkin tidak memiliki label docker yang diperlukan yang dikonfigurasi di agen CloudWatch untuk menemukannya secara otomatis. Untuk penemuan layanan berbasis ekspresi reguler ARN definisi tugas ECS, pengaturan regex di agen mungkin tidak cocok CloudWatch dengan definisi tugas aplikasi Anda.

  • Peran tugas ECS CloudWatch agen mungkin tidak memiliki izin untuk mengambil metadata tugas ECS. Periksa apakah CloudWatch agen telah diberikan izin hanya-baca berikut:

    • ec2:DescribeInstances

    • ecs:ListTasks

    • ecs:DescribeContainerInstances

    • ecs:DescribeTasks

    • ecs:DescribeTaskDefinition

Langkah 3: Memeriksa koneksi jaringan dan kebijakan peran tugas ECS

Jika masih belum ada peristiwa log yang dikirim ke grup CloudWatch log Log target meskipun nilai Exporter_DiscoveredTargetCount menunjukkan bahwa ada target Prometheus yang ditemukan, ini dapat disebabkan oleh salah satu hal berikut:

  • CloudWatch Agen mungkin tidak dapat terhubung ke port target Prometheus. Periksa pengaturan grup keamanan di belakang CloudWatch agen. IP pribadi harus memungkinkan CloudWatch agen untuk terhubung ke port eksportir Prometheus.

  • Peran tugas ECS CloudWatch agen mungkin tidak memiliki kebijakan yang CloudWatchAgentServerPolicydikelola. CloudWatch peran tugas ECS agen perlu memiliki kebijakan ini agar dapat mengirim metrik Prometheus sebagai peristiwa log. Jika Anda menggunakan AWS CloudFormation template sampel untuk membuat peran IAM secara otomatis, peran tugas ECS dan peran eksekusi ECS diberikan dengan hak istimewa paling sedikit untuk melakukan pemantauan Prometheus.