

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

# Pemecahan masalah: CloudWatch Log dan kesalahan CloudTrail
<a name="t-cloudwatch-cloudtrail-logs"></a>

Topik di halaman ini berisi resolusi untuk CloudWatch Log Amazon dan AWS CloudTrail kesalahan yang dapat Anda temui di lingkungan Alur Kerja Terkelola Amazon untuk Apache Airflow.

**Contents**
+ [Beberapa catatan](#troubleshooting-view-logs)
  + [Saya tidak dapat menemukan log tugas saya, atau saya menerima `Reading remote log from Cloudwatch log_group` kesalahan](#t-task-logs)
  + [Tugas gagal tanpa log](#t-task-failing-no-logs)
  + [Saya mendapatkan `ResourceAlreadyExistsException` kesalahan di CloudTrail](#t-cloudtrail)
  + [Saya mendapatkan `Invalid request` kesalahan di CloudTrail](#t-cloudtrail-bucket)
  + [Saya `Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory` masuk log Apache Airflow](#t-plugins-logs)
  + [Saya mendapatkan psycopg2 'server menutup koneksi secara tidak terduga' di log penjadwal saya](#scheduler-postgres-library)
  + [Saya `Executor reports task instance %s finished (%s) although the task says its %s` masuk ke log pemrosesan DAG saya](#long-running-tasks)
  + [Saya `Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log.` masuk ke log tugas saya](#t-task-fail-permission)

## Beberapa catatan
<a name="troubleshooting-view-logs"></a>

Topik berikut menjelaskan kesalahan yang mungkin Anda terima saat mengakses log Apache Airflow.

### Saya tidak dapat menemukan log tugas saya, atau saya menerima `Reading remote log from Cloudwatch log_group` kesalahan
<a name="t-task-logs"></a>

Amazon MWAA telah mengonfigurasi Apache Airflow untuk membaca dan menulis log langsung dari dan ke Amazon Logs. CloudWatch Jika seorang pekerja gagal memulai tugas, atau gagal menulis log apa pun, Anda akan merujuk ke kesalahan:

```
*** Reading remote log from Cloudwatch log_group: airflow-environmentName-Task log_stream: DAG_ID/TASK_ID/timestamp/n.log.Could not read remote logs from log_group: airflow-environmentName-Task log_stream: DAG_ID/TASK_ID/time/n.log.
```
+ Kami merekomendasikan langkah-langkah berikut:

  1. Verifikasi bahwa Anda telah mengaktifkan log tugas di `INFO` tingkat untuk lingkungan Anda. Untuk informasi lebih lanjut, lihat[Mengakses log Aliran Udara di Amazon CloudWatch](monitoring-airflow.md).

  1. Verifikasi bahwa [peran eksekusi](mwaa-create-role.md) lingkungan memiliki kebijakan izin yang benar.

  1. Verifikasi bahwa operator atau tugas Anda berfungsi dengan benar, memiliki sumber daya yang cukup untuk mengurai DAG, dan memiliki pustaka Python yang sesuai untuk dimuat. Untuk memverifikasi apakah Anda memiliki dependensi yang benar, coba hilangkan impor hingga Anda menemukan yang menyebabkan masalah. Kami merekomendasikan pengujian dependensi Python Anda menggunakan. [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images)

### Tugas gagal tanpa log
<a name="t-task-failing-no-logs"></a>

Jika tugas gagal dalam alur kerja dan Anda tidak dapat menemukan log apa pun untuk tugas yang gagal, periksa apakah Anda menyetel `queue` parameter dalam argumen default, seperti yang tercantum dalam berikut ini.

```
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago

# Setting queue argument to default.
default_args = {
	"start_date": days_ago(1),
	"queue": "default"
}

with DAG(dag_id="any_command_dag", schedule_interval=None, catchup=False, default_args=default_args) as dag:
    cli_command = BashOperator(
        task_id="bash_command",
        bash_command="{{ dag_run.conf['command'] }}"
    )
```

Untuk mengatasi masalah, hapus `queue` dari kode Anda, dan panggil DAG lagi.

### Saya mendapatkan `ResourceAlreadyExistsException` kesalahan di CloudTrail
<a name="t-cloudtrail"></a>

```
"errorCode": "ResourceAlreadyExistsException",
    "errorMessage": "The specified log stream already exists",
    "requestParameters": {
        "logGroupName": "airflow-MyAirflowEnvironment-DAGProcessing",
        "logStreamName": "scheduler_cross-account-eks.py.log"
    }
```

Persyaratan Python tertentu seperti `apache-airflow-backport-providers-amazon` memutar kembali `watchtower` perpustakaan yang digunakan Amazon MWAA untuk berkomunikasi dengan CloudWatch versi yang lebih lama. Kami merekomendasikan langkah-langkah berikut:
+ Tambahkan pustaka berikut ke `requirements.txt`

  ```
  watchtower==1.0.6
  ```

### Saya mendapatkan `Invalid request` kesalahan di CloudTrail
<a name="t-cloudtrail-bucket"></a>

```
Invalid request provided: Provided role does not have sufficient permissions for s3 location airflow-xxx-xxx/dags
```

Jika Anda membuat lingkungan Amazon MWAA dan bucket Amazon S3 menggunakan template CloudFormation yang sama, Anda perlu menambahkan bagian `DependsOn` dalam template Anda. CloudFormation Dua sumber daya (*Lingkungan MWAA* dan *Kebijakan Eksekusi MWAA*) memiliki ketergantungan dalam. CloudFormation Kami merekomendasikan langkah-langkah berikut:
+ Tambahkan **DependsOn** pernyataan berikut ke CloudFormation template Anda.

  ```
  ...
    MaxWorkers: 5
    NetworkConfiguration:
      SecurityGroupIds:
        - !GetAtt SecurityGroup.GroupId
      SubnetIds: !Ref subnetIds
    WebserverAccessMode: PUBLIC_ONLY
  DependsOn: MwaaExecutionPolicy
  
   MwaaExecutionPolicy:
   Type: AWS::IAM::ManagedPolicy
   Properties:
     Roles:
      - !Ref MwaaExecutionRole
    PolicyDocument:
      Version: 2012-10-17		 	 	 
      Statement:
        - Effect: Allow
          Action: airflow:PublishMetrics
          Resource:
  ...
  ```

  Sebagai contoh, lihat[Tutorial mulai cepat untuk Alur Kerja Terkelola Amazon untuk Apache Airflow](quick-start.md).

### Saya `Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory` masuk log Apache Airflow
<a name="t-plugins-logs"></a>
+ Kami merekomendasikan langkah-langkah berikut:

  1. Jika Anda menggunakan Apache Airflow v2, `core.lazy_load_plugins : False` tambahkan sebagai opsi konfigurasi Apache Airflow. Untuk mempelajari lebih lanjut, lihat [Menggunakan opsi konfigurasi untuk memuat plugin di 2](configuring-env-variables.md#configuring-2.0-airflow-override).

### Saya mendapatkan psycopg2 'server menutup koneksi secara tidak terduga' di log penjadwal saya
<a name="scheduler-postgres-library"></a>

Jika Anda mendapatkan kesalahan yang mirip dengan berikut ini, penjadwal Apache Airflow Anda mungkin kehabisan sumber daya.

```
2021-06-14T10:20:24.581-05:00    sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) server closed the connection unexpectedly
2021-06-14T10:20:24.633-05:00    This probably means the server terminated abnormally
2021-06-14T10:20:24.686-05:00    before or while processing the request.
```

Kami merekomendasikan langkah-langkah berikut:
+ Pertimbangkan untuk meningkatkan ke Apache Airflow v2.0.2, yang dapat Anda gunakan untuk menentukan hingga 5 penjadwal.

### Saya `Executor reports task instance %s finished (%s) although the task says its %s` masuk ke log pemrosesan DAG saya
<a name="long-running-tasks"></a>

Jika Anda mendapatkan kesalahan yang mirip dengan berikut ini, tugas Anda yang berjalan lama mungkin telah mencapai batas waktu tugas di Amazon MWAA. Amazon MWAA memiliki batas 12 jam untuk salah satu tugas Aliran Udara, untuk mencegah tugas macet dalam antrian dan memblokir aktivitas seperti penskalaan otomatis.

```
Executor reports task instance %s finished (%s) although the task says its %s. (Info: %s) Was the task killed externally
```

Kami merekomendasikan langkah-langkah berikut:
+ Pertimbangkan untuk memecah tugas menjadi beberapa tugas yang berjalan lebih pendek. Aliran udara biasanya memiliki model di mana operator asinkron. Ini memanggil aktivitas pada sistem eksternal, dan jajak pendapat Sensor Aliran Udara Apache untuk memeriksa kapan selesai. Jika Sensor gagal, sensor dapat dicoba ulang dengan aman tanpa memengaruhi fungsionalitas Operator.

### Saya `Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log.` masuk ke log tugas saya
<a name="t-task-fail-permission"></a>

Jika Anda mendapatkan kesalahan yang mirip dengan berikut ini, peran eksekusi untuk lingkungan Anda mungkin tidak berisi kebijakan izin untuk membuat aliran log untuk log tugas.

```
Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log.
```

Kami merekomendasikan langkah-langkah berikut:
+ Ubah peran eksekusi untuk lingkungan Anda menggunakan salah satu kebijakan sampel di[Peran eksekusi Amazon MWAA](mwaa-create-role.md).

Anda mungkin juga telah menentukan paket penyedia dalam `requirements.txt` file Anda yang tidak kompatibel dengan versi Apache Airflow Anda. Misalnya, jika Anda menggunakan Apache Airflow v2.0.2, Anda mungkin telah menentukan paket, seperti [apache-airflow-providers-databricks](https://airflow.apache.org/docs/apache-airflow-providers-databricks/stable/index.html)paket, yang hanya kompatibel dengan Airflow 2.1\$1.

Kami merekomendasikan langkah-langkah berikut:

1. Jika Anda menggunakan Apache Airflow v2.0.2, ubah file dan tambahkan. `requirements.txt` `apache-airflow[databricks]` Ini menginstal versi yang benar dari paket Databricks yang kompatibel dengan Apache Airflow v2.0.2.

1. Uji DAGs, plugin kustom, dan dependensi Python Anda secara lokal menggunakan on. [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) GitHub