View a markdown version of this page

Pemecahan masalah dengan Amazon ECS Action Log - Amazon Elastic Container Service

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

Pemecahan masalah dengan Amazon ECS Action Log

Log Tindakan membantu Anda mendiagnosis masalah dengan memberikan catatan terperinci tentang operasi yang diprakarsai layanan Amazon ECS. Setiap entri log berisi stempel waktu, tingkat log, nama acara, dan payload detail dengan konteks tentang apa yang terjadi dan mengapa. Topik ini mencakup skenario pemecahan masalah umum dan menyediakan kueri Logs Insights yang siap CloudWatch digunakan.

Memahami Tingkat Log

Action Log menggunakan tiga level log untuk menunjukkan tingkat keparahan setiap peristiwa:

INFO

Operasi normal seperti deployment yang dimulai, tugas yang diluncurkan, atau sumber daya yang disediakan. Peristiwa ini menunjukkan bahwa Amazon ECS melakukan tindakan seperti yang diharapkan.

WARN

Non-fatal masalah yang mungkin perlu diperhatikan, seperti upaya coba lagi atau kendala kapasitas. Amazon ECS terus membuat progres, tetapi operasinya mungkin memakan waktu lebih lama dari yang diharapkan.

ERROR

Kegagalan yang memerlukan tindakan, seperti deployment yang gagal, kesalahan penyediaan, atau pemulaian tugas terganggu. Tinjau peristiwa-peristiwa ini untuk mengidentifikasi akar penyebab dan mengambil tindakan korektif.

Tip

Mulailah dengan memfilter ERROR atau WARN mencatat level untuk mengidentifikasi masalah dengan cepat. Anda kemudian dapat memperluas pencarian Anda ke INFO acara untuk konteks tambahan.

Men-debug penerapan layanan yang gagal

Gejala

Penerapan macet dalam proses atau diputar kembali secara otomatis.

Apa yang harus dicari

Filter untuk ERROR log yang eventName berisiDEPLOYMENT. Periksa detail payload untuk ARN penerapan, alasan status, dan jumlah tugas yang gagal.

Contoh berikut menunjukkan kegagalan penerapan di mana tidak ada kandidat rollback yang tersedia:

{ "resourceArn": "arn:aws:ecs:us-east-1:111122223333:cluster/my-cluster", "actionSourceId": "service/my-cluster/my-service", "logLevel": "ERROR", "eventTimestamp": 1784573730986, "detail": { "statusReason": "No rollback candidate was found to run the rollback.", "serviceDeploymentArn": "arn:aws:ecs:us-east-1:111122223333:service-deployment/my-cluster/my-service/abc123def456", "status": "FAILED", "eventName": "SERVICE_DEPLOYMENT_ROLLBACK_FAILED" } }
Resolusi

Periksa detail.statusReason bidang untuk mengidentifikasi mengapa tugas gagal. Gunakan kueri Log CloudWatch s Insights berikut untuk menemukan semua kesalahan penerapan:

fields @timestamp, detail.statusReason | filter logLevel = "ERROR" and detail.deploymentArn like /my-cluster\/my-service/ | sort @timestamp desc | limit 20

Mendiagnosis masalah daemon terkelola

Gejala

Daemon tidak dimulai pada instance atau penerapan daemon macet.

Apa yang harus dicari

Filter log oleh daemon ARN untuk menemukan peristiwa yang terkait dengan daemon Anda. Anda juga dapat memfilter logLevel untuk mempersempit hasil menjadi peringatan atau kesalahan.

Contoh berikut menunjukkan tugas daemon yang gagal dimulai karena memori yang tidak mencukupi pada instance target:

{ "timestamp": 1719500050000, "logLevel": "WARN", "account": "123456789012", "region": "us-east-1", "resourceArn": "arn:aws:ecs:us-east-1:123456789012:cluster/my-cluster", "actionSourceId": "arn:aws:ecs:us-east-1:123456789012:daemon/my-cluster/my-logging-daemon", "eventName": "DAEMON_TASK_START_IMPAIRED", "detail": { "statusReason": "RESOURCE:MEMORY - Unable to place daemon task on container instance: insufficient memory", "containerInstanceArn": "arn:aws:ecs:us-east-1:123456789012:container-instance/my-cluster/a1b2c3d4" } }
Resolusi

Verifikasi bahwa instance target memiliki sumber daya yang cukup untuk menjalankan tugas daemon. Jika instans menguras tenaga, daemon mungkin tidak dimulai sampai instans baru tersedia. Gunakan kueri berikut untuk memfilter peristiwa untuk daemon tertentu:

fields @timestamp, logLevel, detail.statusReason | filter actionSourceId like /my-logging-daemon/ | filter logLevel in ["ERROR", "WARN"] | sort @timestamp desc | limit 20

Memahami alasan penghentian tugas daemon

Gejala

Tugas Daemon berhenti secara tak terduga.

Apa yang harus dicari

Filter untuk WARN dan ERROR log yang berisi detail kegagalan tugas daemon. Bidang berikut dalam detail payload memberikan informasi tentang mengapa tugas daemon berhenti:

detail.stopCode

Kode yang dapat dibaca mesin yang mengkategorikan alasan penghentian tugas.

detail.statusReason

Deskripsi yang dapat dibaca manusia tentang mengapa tugas berhenti. Bidang ini tidak ada di semua entri log.

detail.containerStoppedReason

Konteks tambahan tentang wadah tertentu yang menyebabkan tugas berhenti.

Untuk daftar lengkap kode penghentian tugas dan deskripsinya, lihatPesan kesalahan tugas yang dihentikan Amazon ECS.

catatan

Penghentian tugas daemon yang diharapkan, sepertiUserInitiated, disaring dari Log Aksi. Anda hanya melihat penghentian tugas daemon yang tidak terduga atau terkait kesalahan.

Kueri Log CloudWatch s Insights yang berguna

Gunakan kueri CloudWatch Logs Insights berikut untuk menyelidiki masalah umum dengan layanan Amazon ECS Anda.

Semua kesalahan dalam satu jam terakhir

fields @timestamp, logLevel, eventName, detail.statusReason | filter logLevel = "ERROR" | sort @timestamp desc | limit 50
catatan

Bid detail.statusReason ang tidak ada di semua entri log. Jika bidang kosong di hasil Anda, gunakan bidang eventName dan bidang lainnya dalam detail payload untuk konteks.

Acara untuk layanan tertentu

fields @timestamp, logLevel, detail.statusReason | filter @message like /my-service/ | sort @timestamp desc | limit 50

Garis waktu penerapan untuk penerapan tertentu

fields @timestamp, logLevel, detail.statusReason | filter detail.deploymentArn like /my-cluster\/my-service\/abc123/ | sort @timestamp asc

Kegagalan tugas Daemon dikelompokkan berdasarkan alasan

filter logLevel = "ERROR" and detail.stopCode != "" | stats count(*) as failureCount by detail.stopCode, detail.statusReason | sort failureCount desc | limit 20