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.