

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
<a name="action-logs-troubleshooting"></a>

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
<a name="action-logs-troubleshooting-log-levels"></a>

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
<a name="action-logs-troubleshooting-failed-deployment"></a>

Penerapan macet dalam proses atau diputar kembali secara otomatis.

Filter untuk `ERROR` log yang `eventName` berisi`DEPLOYMENT`. 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"
  }
}
```

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
<a name="action-logs-troubleshooting-daemon"></a>

Daemon tidak dimulai pada instance atau penerapan daemon macet.

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

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
<a name="action-logs-troubleshooting-daemon-task-stops"></a>

Tugas Daemon berhenti secara tak terduga.

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, lihat[Pesan kesalahan tugas yang dihentikan Amazon ECS](stopped-task-error-codes.md).

**catatan**  
Penghentian tugas daemon yang diharapkan, seperti`UserInitiated`, disaring dari Log Aksi. Anda hanya melihat penghentian tugas daemon yang tidak terduga atau terkait kesalahan.

## Kueri Log CloudWatch s Insights yang berguna
<a name="action-logs-troubleshooting-queries"></a>

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