

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

# Pencatatan log dan pemantauan
<a name="logging-monitoring"></a>

Pemantauan merupakan bagian penting dari menjaga keandalan, ketersediaan, dan kinerja aplikasi dan pekerjaan EMR Tanpa Server. Anda harus mengumpulkan data pemantauan dari semua bagian solusi EMR Tanpa Server Anda sehingga kegagalan multipoint dapat di-debug lebih mudah jika terjadi.

**Topics**
+ [

# Menyimpan log
](logging.md)
+ [

# Memutar log
](rotating-logs.md)
+ [

# Mengenkripsi log
](jobs-log-encryption.md)
+ [

# Konfigurasikan properti Apache Log4j2 untuk Amazon EMR Tanpa Server
](log4j2.md)
+ [

# Pemantauan EMR Tanpa Server
](metrics.md)
+ [

# Mengotomatisasi EMR Tanpa Server dengan Amazon EventBridge
](using-eventbridge.md)

# Menyimpan log
<a name="logging"></a>

Untuk memantau kemajuan pekerjaan Anda di EMR Tanpa Server dan memecahkan masalah kegagalan pekerjaan, pilih cara EMR Tanpa Server menyimpan dan menyajikan log aplikasi. Saat Anda mengirimkan pekerjaan, tentukan penyimpanan terkelola, Amazon S3, dan Amazon CloudWatch sebagai opsi pencatatan Anda.

Dengan CloudWatch, tentukan jenis log dan lokasi log yang ingin Anda gunakan, atau terima tipe dan lokasi default. Untuk informasi lebih lanjut tentang CloudWatch log, lihat[Logging untuk EMR Tanpa Server dengan Amazon CloudWatch](#jobs-log-storage-cw). Dengan penyimpanan terkelola dan pencatatan S3, tabel berikut mencantumkan lokasi log dan ketersediaan UI yang dapat Anda harapkan jika Anda memilih [penyimpanan terkelola](#jobs-log-storage-managed-storage), bucket [Amazon S3](#jobs-log-storage-s3-buckets), atau keduanya.


| Opsi | Log peristiwa | Log Kontainer | UI Aplikasi | 
| --- | --- | --- | --- | 
|  Penyimpanan terkelola  |  Disimpan dalam penyimpanan terkelola  |  Disimpan dalam penyimpanan terkelola  |  Didukung  | 
|  Penyimpanan terkelola dan bucket S3  |  Disimpan di kedua tempat  |  Disimpan dalam ember S3  |  Didukung  | 
|  Buket Amazon S3  |  Disimpan dalam ember S3  |  Disimpan dalam ember S3  |  Tidak didukung 1  | 

1 Kami menyarankan agar Anda tetap memilih opsi **Penyimpanan Terkelola**. Jika tidak, Anda tidak dapat menggunakan aplikasi bawaan UIs.

## Logging untuk EMR Tanpa Server dengan penyimpanan terkelola
<a name="jobs-log-storage-managed-storage"></a>

Secara default, EMR Tanpa Server menyimpan log aplikasi dengan aman di penyimpanan terkelola Amazon EMR selama maksimal 30 hari.

**catatan**  
Jika Anda menonaktifkan opsi default, Amazon EMR tidak dapat memecahkan masalah pekerjaan Anda atas nama Anda. Contoh: Anda tidak dapat mengakses Spark-UI dari Konsol Tanpa Server EMR.

Untuk menonaktifkan opsi ini dari EMR Studio, batalkan centang kotak **Izinkan AWS untuk menyimpan log selama 30 hari** di bagian **Pengaturan tambahan** pada halaman **Kirim** pekerjaan. 

Untuk mematikan opsi ini dari AWS CLI, gunakan `managedPersistenceMonitoringConfiguration` konfigurasi saat Anda mengirimkan pekerjaan yang dijalankan.

```
{
    "monitoringConfiguration": {
        "managedPersistenceMonitoringConfiguration": {
            "enabled": false
        }
    }
}
```

Jika aplikasi EMR Tanpa Server Anda berada dalam subnet pribadi dengan titik akhir VPC untuk Amazon S3 dan Anda melampirkan kebijakan titik akhir untuk mengontrol akses, tambahkan izin berikut untuk EMR Tanpa Server untuk menyimpan dan menyajikan log aplikasi. Ganti `Resource` dengan `AppInfo` bucket dari tabel wilayah yang tersedia dalam [Kebijakan sampel untuk subnet pribadi yang mengakses Amazon S3](https://docs.aws.amazon.com/emr/latest/ManagementGuide/private-subnet-iampolicy.html#private-subnet-iampolicy-regions).

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "EMRServerlessManagedLogging",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": [
        "arn:aws:s3:::prod.us-east-1.appinfo.src",
        "arn:aws:s3:::prod.us-east-1.appinfo.src/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:PrincipalServiceName": "emr-serverless.amazonaws.com",
          "aws:SourceVpc": "vpc-12345678"
        }
      }
    }
  ]
}
```

------

Selain itu, gunakan tombol `aws:SourceVpc` kondisi untuk memastikan bahwa permintaan berjalan melalui VPC tempat titik akhir VPC dilampirkan.

## Logging untuk EMR Tanpa Server dengan bucket Amazon S3
<a name="jobs-log-storage-s3-buckets"></a>

Sebelum pekerjaan Anda dapat mengirim data log ke Amazon S3, sertakan izin berikut dalam kebijakan izin untuk peran runtime pekerjaan. Ganti `amzn-s3-demo-logging-bucket` dengan nama bucket logging Anda.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/*"
      ],
      "Sid": "AllowS3Putobject"
    }
  ]
}
```

------

Untuk menyiapkan bucket Amazon S3 untuk menyimpan log dari AWS CLI, gunakan `s3MonitoringConfiguration` konfigurasi saat Anda memulai menjalankan pekerjaan. Untuk melakukan ini, berikan yang berikut `--configuration-overrides` dalam konfigurasi. 

```
{
    "monitoringConfiguration": {
        "s3MonitoringConfiguration": {
            "logUri": "s3://amzn-s3-demo-logging-bucket/logs/"
        }
    }
}
```

Untuk pekerjaan batch yang tidak mengaktifkan percobaan ulang, EMR Serverless mengirimkan log ke jalur berikut:

```
'/applications/<applicationId>/jobs/<jobId>'
```

Log driver percikan disimpan di jalur berikut oleh EMR Tanpa Server

```
'/applications/<applicationId>/jobs/<jobId>/SPARK_DRIVER/'
```

Log pelaksana Spark disimpan di jalur berikut oleh EMR Tanpa Server

```
'/applications/<applicationId>/jobs/<jobId>/SPARK_EXECUTOR/<EXECUTOR-ID>'
```

<EXECUTOR-ID>Ini adalah bilangan bulat.

EMR Serverless merilis 7.1.0 dan mendukung upaya coba lagi yang lebih tinggi untuk pekerjaan streaming dan pekerjaan batch. Jika Anda menjalankan pekerjaan dengan percobaan ulang diaktifkan, EMR Serverless secara otomatis menambahkan nomor percobaan ke awalan jalur log, sehingga Anda dapat membedakan dan melacak log dengan lebih baik.

```
'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'
```

## Logging untuk EMR Tanpa Server dengan Amazon CloudWatch
<a name="jobs-log-storage-cw"></a>

Saat Anda mengirimkan pekerjaan ke aplikasi EMR Tanpa Server, pilih Amazon CloudWatch sebagai opsi untuk menyimpan log aplikasi Anda. Ini memungkinkan Anda untuk menggunakan fitur analisis CloudWatch log seperti Wawasan CloudWatch Log dan Live Tail. Anda juga dapat melakukan streaming log dari CloudWatch sistem lain seperti OpenSearch untuk analisis lebih lanjut.

EMR Tanpa Server menyediakan pencatatan waktu nyata untuk log driver. Anda dapat mengakses log secara real time dengan kemampuan CloudWatch live tail, atau melalui perintah ekor CloudWatch CLI.

Secara default, CloudWatch logging dinonaktifkan untuk EMR Tanpa Server. Untuk mengaktifkannya, gunakan konfigurasi di[AWS CLI](#jobs-log-storage-cw-cli).

**catatan**  
Amazon CloudWatch menerbitkan log secara real time, sehingga menghasilkan lebih banyak sumber daya dari pekerja. Jika Anda memilih kapasitas pekerja yang rendah, dampaknya terhadap waktu kerja Anda mungkin meningkat. Jika Anda mengaktifkan CloudWatch pencatatan, kami sarankan Anda memilih kapasitas pekerja yang lebih besar. Mungkin juga publikasi log dapat menghambat jika tingkat transaksi per detik (TPS) terlalu rendah untuk. `PutLogEvents` Konfigurasi CloudWatch throttling bersifat global untuk semua layanan, termasuk EMR Tanpa Server. Untuk informasi selengkapnya, lihat [Bagaimana cara menentukan pembatasan di log saya? CloudWatch ](https://repost.aws/knowledge-center/cloudwatch-logs-throttling) pada *AWS re:post*.

### Izin yang diperlukan untuk login dengan CloudWatch
<a name="jobs-log-storage-cw-permissions"></a>

Sebelum pekerjaan Anda dapat mengirim data log ke Amazon CloudWatch, sertakan izin berikut dalam kebijakan izin untuk peran runtime pekerjaan.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogGroups"
      ],
      "Resource": [
        "arn:aws:logs:*:123456789012:*"
      ],
      "Sid": "AllowLOGSDescribeloggroups"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:PutLogEvents",
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "arn:aws:logs:*:123456789012:log-group:my-log-group-name:*"
      ],
      "Sid": "AllowLOGSPutlogevents"
    }
  ]
}
```

------

### AWS CLI
<a name="jobs-log-storage-cw-cli"></a>

Untuk mengatur Amazon CloudWatch untuk menyimpan log untuk EMR Tanpa Server dari AWS CLI, gunakan `cloudWatchLoggingConfiguration` konfigurasi saat Anda memulai menjalankan pekerjaan. Untuk melakukan ini, berikan penggantian konfigurasi berikut. Secara opsional, berikan juga nama grup log, nama awalan aliran log, jenis log, dan ARN kunci enkripsi.

Jika Anda tidak menentukan nilai opsional, maka CloudWatch menerbitkan log ke grup log default`/aws/emr-serverless`, dengan aliran `/applications/applicationId/jobs/jobId/worker-type` log default.

EMR Serverless merilis 7.1.0 dan mendukung upaya coba lagi yang lebih tinggi untuk pekerjaan streaming dan pekerjaan batch. Jika Anda mengaktifkan percobaan ulang untuk suatu pekerjaan, EMR Tanpa Server secara otomatis menambahkan nomor percobaan ke awalan jalur log, sehingga Anda dapat membedakan dan melacak log dengan lebih baik. 

```
'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/worker-type'
```

Berikut ini menunjukkan konfigurasi minimum yang diperlukan untuk mengaktifkan CloudWatch pencatatan Amazon dengan pengaturan default untuk EMR Tanpa Server:

```
{
    "monitoringConfiguration": {
        "cloudWatchLoggingConfiguration": {
            "enabled": true
         }
     }
}
```

Contoh berikut menunjukkan semua konfigurasi wajib dan opsional yang menentukan saat Anda mengaktifkan CloudWatch pencatatan Amazon untuk EMR Tanpa Server. `logTypes`Nilai yang didukung juga tercantum dalam contoh berikut ini.

```
{
    "monitoringConfiguration": {
        "cloudWatchLoggingConfiguration": {
            "enabled": true, // Required
            "logGroupName": "Example_logGroup", // Optional
            "logStreamNamePrefix": "Example_logStream", // Optional 
            "encryptionKeyArn": "key-arn", // Optional 
            "logTypes": { 
                "SPARK_DRIVER": ["stdout", "stderr"] //List of values
             }
         }
     }
}
```

Secara default, EMR Tanpa Server hanya menerbitkan stdout driver dan stderr log ke. CloudWatch Jika Anda menginginkan log lain, tentukan peran kontainer dan jenis log yang sesuai dengan `logTypes` bidang tersebut.

Daftar berikut menunjukkan tipe pekerja yang didukung yang menentukan `logTypes` konfigurasi:

**Spark**  
+ `SPARK_DRIVER : ["STDERR", "STDOUT"]`
+ `SPARK_EXECUTOR : ["STDERR", "STDOUT"]`

**Hive**  
+ `HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"]`
+ `TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]`

# Memutar log
<a name="rotating-logs"></a>

Amazon EMR Serverless dapat memutar log aplikasi Spark dan log peristiwa. Rotasi log membantu masalah pekerjaan yang berjalan lama menghasilkan file log besar yang dapat menghabiskan semua ruang disk Anda. Memutar log membantu Anda menghemat penyimpanan disk dan mengurangi jumlah kegagalan pekerjaan karena Anda tidak memiliki lebih banyak ruang tersisa di disk Anda. 

Rotasi log diaktifkan secara default dan hanya tersedia untuk pekerjaan Spark.

**Log peristiwa percikan**

**catatan**  
Rotasi log peristiwa percikan tersedia di semua label rilis Amazon EMR.

Alih-alih menghasilkan satu file log peristiwa, EMR Serverless memutar log peristiwa pada interval waktu reguler dan menghapus file log peristiwa yang lebih lama. Memutar log tidak memengaruhi log yang diunggah ke bucket S3.

**Log aplikasi percikan**

**catatan**  
Rotasi log aplikasi percikan tersedia di semua label rilis Amazon EMR.

EMR Serverless juga memutar log aplikasi spark untuk driver dan pelaksana, seperti dan file. `stdout` `stderr` Anda dapat mengakses file log terbaru dengan memilih tautan log di Studio dengan menggunakan tautan Spark History Server dan Live UI. File log adalah versi terpotong dari log terbaru. Untuk merujuk ke log yang diputar yang lebih lama, tentukan lokasi Amazon S3 saat menyimpan log. Lihat [Logging untuk EMR Tanpa Server dengan bucket Amazon S3 untuk informasi selengkapnya](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/logging.html#jobs-log-storage-s3-buckets).

Anda dapat menemukan file log terbaru di lokasi berikut. EMR Serverless menyegarkan file setiap 15 detik. File-file ini dapat berkisar dari 0 MB hingga 128 MB.

```
<example-S3-logUri>/applications/<application-id>/jobs/<job-id>/SPARK_DRIVER/stderr.gz
```

Lokasi berikut berisi file yang diputar yang lebih lama. Setiap file berukuran 128 MB.

```
<example-S3-logUri>/applications/<application-id>/jobs/<job-id>/SPARK_DRIVER/archived/stderr_<index>.gz 
```

Perilaku yang sama berlaku untuk pelaksana Spark juga. Perubahan ini hanya berlaku untuk logging S3. Rotasi log tidak memperkenalkan perubahan apa pun pada aliran log yang diunggah ke Amazon. CloudWatch

EMR Serverless merilis 7.1.0 dan mendukung upaya coba lagi yang lebih tinggi untuk streaming dan pekerjaan batch. Jika Anda mengaktifkan upaya coba lagi dengan pekerjaan Anda, EMR Serverless menambahkan awalan ke jalur log untuk pekerjaan tersebut sehingga Anda dapat melacak dan membedakan log satu sama lain dengan lebih baik. Jalur ini berisi semua log yang diputar.

```
'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'.
```

# Mengenkripsi log
<a name="jobs-log-encryption"></a>

## Mengenkripsi log EMR Tanpa Server dengan penyimpanan terkelola
<a name="jobs-log-encryption-managed-storage"></a>

Untuk mengenkripsi log dalam penyimpanan terkelola dengan kunci KMS Anda sendiri, gunakan `managedPersistenceMonitoringConfiguration` konfigurasi saat Anda mengirimkan pekerjaan.

```
{
    "monitoringConfiguration": {
        "managedPersistenceMonitoringConfiguration" : {
            "encryptionKeyArn": "key-arn"
        }
    }
}
```

## Mengenkripsi log EMR Tanpa Server dengan ember Amazon S3
<a name="jobs-log-encryption-s3-buckets"></a>

Untuk mengenkripsi log di bucket Amazon S3 Anda dengan kunci KMS Anda sendiri, gunakan `s3MonitoringConfiguration` konfigurasi saat Anda mengirimkan pekerjaan.

```
{
    "monitoringConfiguration": {
        "s3MonitoringConfiguration": {
            "logUri": "s3://amzn-s3-demo-logging-bucket/logs/",
            "encryptionKeyArn": "key-arn"
        }
    }
}
```

## Mengenkripsi log EMR Tanpa Server dengan Amazon CloudWatch
<a name="jobs-log-encryption-cw"></a>

Untuk mengenkripsi log di Amazon CloudWatch dengan kunci KMS Anda sendiri, gunakan `cloudWatchLoggingConfiguration` konfigurasi saat Anda mengirimkan pekerjaan.

```
{
    "monitoringConfiguration": {
        "cloudWatchLoggingConfiguration": {
            "enabled": true,
            "encryptionKeyArn": "key-arn"
         }
     }
}
```

## Izin yang diperlukan untuk enkripsi log
<a name="jobs-log-encryption-permissions"></a>

**Topics**
+ [

### Izin pengguna yang diperlukan
](#jobs-log-encryption-permissions-user)
+ [

### Izin kunci enkripsi untuk Amazon S3 dan penyimpanan terkelola
](#jobs-log-encryption-permissions-s3)
+ [

### Izin kunci enkripsi untuk Amazon CloudWatch
](#jobs-log-encryption-permissions-cw)

### Izin pengguna yang diperlukan
<a name="jobs-log-encryption-permissions-user"></a>

Pengguna yang mengirimkan pekerjaan atau melihat log atau aplikasi UIs harus memiliki izin untuk menggunakan kunci. Anda dapat menentukan izin dalam kebijakan kunci KMS atau kebijakan IAM untuk pengguna, grup, atau peran. Jika pengguna yang mengirimkan pekerjaan tidak memiliki izin kunci KMS, EMR Tanpa Server menolak pengiriman job run.

**Contoh kebijakan kunci**

Kebijakan utama berikut memberikan izin untuk `kms:GenerateDataKey` dan`kms:Decrypt`:

```
{
    "Effect": "Allow",
    "Principal":{
       "AWS": "arn:aws:iam::111122223333:user/user-name"
     },
     "Action": [
       "kms:GenerateDataKey",       
       "kms:Decrypt"
      ],
     "Resource": "*"
 }
```

**Contoh kebijakan IAM**

Kebijakan IAM berikut memberikan izin untuk `kms:GenerateDataKey` dan: `kms:Decrypt`

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:kms:*:123456789012:key/12345678-1234-1234-1234-123456789012"
      ],
      "Sid": "AllowKMSGeneratedatakey"
    }
  ]
}
```

------

Untuk meluncurkan UI Spark atau Tez, berikan izin kepada pengguna, grup, atau peran Anda untuk mengakses `emr-serverless:GetDashboardForJobRun` API sebagai berikut:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-serverless:GetDashboardForJobRun"
      ],
      "Resource": [
        "*"
      ],
      "Sid": "AllowEMRSERVERLESSGetdashboardforjobrun"
    }
  ]
}
```

------

### Izin kunci enkripsi untuk Amazon S3 dan penyimpanan terkelola
<a name="jobs-log-encryption-permissions-s3"></a>

Saat Anda mengenkripsi log dengan kunci enkripsi Anda sendiri baik di penyimpanan terkelola atau di bucket S3 Anda, konfigurasikan izin kunci KMS sebagai berikut.

`emr-serverless.amazonaws.com`Kepala sekolah harus memiliki izin berikut dalam kebijakan untuk kunci KMS:

```
{
    "Effect": "Allow",
    "Principal":{
       "Service": "emr-serverless.amazonaws.com" 
     },
     "Action": [
       "kms:Decrypt",
       "kms:GenerateDataKey"
      ],
     "Resource": "*"
     "Condition": {
       "StringLike": {
         "aws:SourceArn": "arn:aws:emr-serverless:region:aws-account-id:/applications/application-id"
       }
     }
 }
```

Sebagai praktik keamanan terbaik, kami menyarankan Anda menambahkan kunci `aws:SourceArn` kondisi ke kebijakan kunci KMS. Kunci kondisi global IAM `aws:SourceArn` membantu memastikan bahwa EMR Tanpa Server menggunakan kunci KMS hanya untuk ARN aplikasi. 

Peran runtime pekerjaan harus memiliki izin berikut dalam kebijakan IAM-nya:

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": [
        "arn:aws:kms:*:123456789012:key/12345678-1234-1234-1234-123456789012"
      ],
      "Sid": "AllowKMSGeneratedatakey"
    }
  ]
}
```

------

### Izin kunci enkripsi untuk Amazon CloudWatch
<a name="jobs-log-encryption-permissions-cw"></a>

Untuk mengaitkan ARN kunci KMS ke grup log Anda, gunakan kebijakan IAM berikut untuk peran runtime pekerjaan.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:AssociateKmsKey"
      ],
      "Resource": [
        "arn:aws:logs:*:123456789012:log-group:my-log-group-name:*"
      ],
      "Sid": "AllowLOGSAssociatekmskey"
    }
  ]
}
```

------

Konfigurasikan kebijakan kunci KMS untuk memberikan izin KMS ke Amazon: CloudWatch

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "key-default-1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "ArnLike": {
          "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:*:123456789012:*"
        }
      },
      "Sid": "AllowKMSDecrypt"
    }
  ]
}
```

------

# Konfigurasikan properti Apache Log4j2 untuk Amazon EMR Tanpa Server
<a name="log4j2"></a>

Halaman ini menjelaskan cara mengonfigurasi [properti Apache Log4j 2.x](https://logging.apache.org/log4j/2.x/) kustom untuk pekerjaan EMR Tanpa Server di. `StartJobRun` Jika Anda ingin mengonfigurasi klasifikasi Log4j di tingkat aplikasi, lihat. [Konfigurasi aplikasi default untuk EMR Tanpa Server](default-configs.md)

## Konfigurasikan properti Spark Log4j2 untuk Amazon EMR Tanpa Server
<a name="log4j2-spark"></a>

Dengan Amazon EMR merilis 6.8.0 dan yang lebih tinggi, Anda dapat menyesuaikan properti [Apache Log4j 2.x untuk menentukan konfigurasi log](https://logging.apache.org/log4j/2.x/) berbutir halus. Ini menyederhanakan pemecahan masalah pekerjaan Spark Anda di EMR Tanpa Server. Untuk mengkonfigurasi properti ini, gunakan `spark-driver-log4j2` dan `spark-executor-log4j2` klasifikasi.

**Topics**
+ [

### Klasifikasi Log4j2 untuk Spark
](#log4j2-spark-class)
+ [

### Contoh konfigurasi Log4j2 untuk Spark
](#log4j2-spark-example)
+ [

### Log4j2 dalam contoh pekerjaan Spark
](#log4j2-spark-jobs)
+ [

### Pertimbangan Log4j2 untuk Spark
](#log4j2-spark-considerations)

### Klasifikasi Log4j2 untuk Spark
<a name="log4j2-spark-class"></a>

Untuk menyesuaikan konfigurasi log Spark, gunakan klasifikasi berikut dengan. [https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_ConfigurationOverrides.html#emrserverless-Type-ConfigurationOverrides-applicationConfiguration](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_ConfigurationOverrides.html#emrserverless-Type-ConfigurationOverrides-applicationConfiguration) Untuk mengkonfigurasi properti Log4j 2.x, gunakan yang berikut ini. [https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_Configuration.html#emrserverless-Type-Configuration-properties](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_Configuration.html#emrserverless-Type-Configuration-properties)

**`spark-driver-log4j2`**  
Klasifikasi ini menetapkan nilai dalam `log4j2.properties` file untuk driver.

**`spark-executor-log4j2`**  
Klasifikasi ini menetapkan nilai dalam `log4j2.properties` file untuk pelaksana.

### Contoh konfigurasi Log4j2 untuk Spark
<a name="log4j2-spark-example"></a>

Contoh berikut menunjukkan cara mengirimkan pekerjaan Spark dengan untuk menyesuaikan konfigurasi Log4j2 `applicationConfiguration` untuk driver dan eksekutor Spark.

Untuk mengonfigurasi klasifikasi Log4j di tingkat aplikasi, bukan saat Anda mengirimkan pekerjaan, lihat. [Konfigurasi aplikasi default untuk EMR Tanpa Server](default-configs.md)

```
aws emr-serverless start-job-run \
    --application-id application-id \
    --execution-role-arn job-role-arn \
    --job-driver '{
        "sparkSubmit": {
            "entryPoint": "/usr/lib/spark/examples/jars/spark-examples.jar",
            "entryPointArguments": ["1"],
            "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1"
        }
    }'
    --configuration-overrides '{
        "applicationConfiguration": [
             {
                "classification": "spark-driver-log4j2",
                "properties": {
                    "rootLogger.level":"error", // will only display Spark error logs
                    "logger.IdentifierForClass.name": "classpath for setting logger",
                    "logger.IdentifierForClass.level": "info"
                   
                }
            },
            {
                "classification": "spark-executor-log4j2",
                "properties": {
                    "rootLogger.level":"error", // will only display Spark error logs
                    "logger.IdentifierForClass.name": "classpath for setting logger",
                    "logger.IdentifierForClass.level": "info"
                }
            }
       ]
    }'
```

### Log4j2 dalam contoh pekerjaan Spark
<a name="log4j2-spark-jobs"></a>

Contoh kode berikut menunjukkan cara membuat aplikasi Spark saat Anda menginisialisasi konfigurasi Log4j2 kustom untuk aplikasi.

------
#### [ Python ]

**Example - Menggunakan Log4j2 untuk pekerjaan Spark dengan Python**  

```
import os
import sys

from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession

app_name = "PySparkApp"
if __name__ == "__main__":
    spark = SparkSession\
        .builder\
        .appName(app_name)\
        .getOrCreate()
    
    spark.sparkContext._conf.getAll()
    sc = spark.sparkContext
    log4jLogger = sc._jvm.org.apache.log4j
    LOGGER = log4jLogger.LogManager.getLogger(app_name)

    LOGGER.info("pyspark script logger info")
    LOGGER.warn("pyspark script logger warn")
    LOGGER.error("pyspark script logger error")
    
    // your code here
    
    spark.stop()
```
Untuk menyesuaikan Log4j2 untuk driver saat Anda menjalankan pekerjaan Spark, gunakan konfigurasi berikut:  

```
{
   "classification": "spark-driver-log4j2",
      "properties": {
          "rootLogger.level":"error", // only display Spark error logs
          "logger.PySparkApp.level": "info", 
          "logger.PySparkApp.name": "PySparkApp"
      }
}
```

------
#### [ Scala ]

**Example - Menggunakan Log4j2 untuk pekerjaan Spark dengan Scala**  

```
import org.apache.log4j.Logger
import org.apache.spark.sql.SparkSession

object ExampleClass {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession
    .builder
    .appName(this.getClass.getName)
    .getOrCreate()

    val logger = Logger.getLogger(this.getClass);
    logger.info("script logging info logs")
    logger.warn("script logging warn logs")
    logger.error("script logging error logs")

// your code here
    spark.stop()
  }
}
```
Untuk menyesuaikan Log4j2 untuk driver saat Anda menjalankan pekerjaan Spark, gunakan konfigurasi berikut:  

```
{
   "classification": "spark-driver-log4j2",
      "properties": {
          "rootLogger.level":"error", // only display Spark error logs
          "logger.ExampleClass.level": "info", 
          "logger.ExampleClass.name": "ExampleClass"
      }
}
```

------

### Pertimbangan Log4j2 untuk Spark
<a name="log4j2-spark-considerations"></a>

Properti Log4j2.x berikut tidak dapat dikonfigurasi untuk proses Spark:
+ `rootLogger.appenderRef.stdout.ref`
+ `appender.console.type`
+ `appender.console.name`
+ `appender.console.target`
+ `appender.console.layout.type`
+ `appender.console.layout.pattern`

[Untuk informasi rinci tentang properti Log4j2.x yang dikonfigurasi, lihat file di. `log4j2.properties.template`](https://github.com/apache/spark/blob/v3.3.0/conf/log4j2.properties.template) GitHub

# Pemantauan EMR Tanpa Server
<a name="metrics"></a>

Bagian ini mencakup cara-cara yang memantau aplikasi dan pekerjaan Tanpa Server Amazon EMR Anda.

**Topics**
+ [

# Memantau aplikasi dan pekerjaan EMR Tanpa Server
](app-job-metrics.md)
+ [

# Pantau metrik Spark dengan Amazon Managed Service untuk Prometheus
](monitor-with-prometheus.md)
+ [

# Metrik penggunaan EMR Tanpa Server
](monitoring-usage.md)

# Memantau aplikasi dan pekerjaan EMR Tanpa Server
<a name="app-job-metrics"></a>

Dengan CloudWatch metrik Amazon untuk EMR Tanpa Server, Anda dapat menerima metrik CloudWatch 1 menit dan CloudWatch mengakses dasbor untuk mengakses near-real-time operasi dan kinerja aplikasi EMR Tanpa Server Anda.

EMR Tanpa Server mengirimkan metrik ke setiap menit. CloudWatch EMR Tanpa Server memancarkan metrik ini di tingkat aplikasi serta pekerjaan, tipe pekerja, dan level. capacity-allocation-type

Untuk memulai, gunakan templat CloudWatch dasbor EMR Tanpa Server yang disediakan di repositori [EMR](https://github.com/aws-samples/emr-serverless-samples/tree/main/cloudformation/emr-serverless-cloudwatch-dashboard/) Tanpa Server dan terapkan. GitHub 

**catatan**  
[EMR Beban kerja interaktif tanpa server](interactive-workloads.md) hanya mengaktifkan pemantauan tingkat aplikasi, dan memiliki dimensi tipe pekerja baru,. `Spark_Kernel` Untuk memantau dan men-debug beban kerja interaktif Anda, akses log dan Apache Spark UI dari dalam [EMR Studio Workspace Anda](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-debug.html#emr-studio-debug-serverless).

## Metrik pemantauan
<a name="app-job-metrics-versions"></a>

**penting**  
Kami merestrukturisasi tampilan metrik kami untuk ditambahkan `ApplicationName` dan `JobName` sebagai dimensi. Untuk rilis 7.10 dan yang lebih baru, metrik lama tidak akan lagi diperbarui. Untuk rilis EMR di bawah 7.10, metrik lama masih tersedia.

**Dimensi saat ini**

Tabel di bawah ini menjelaskan dimensi EMR Tanpa Server yang tersedia dalam namespace. `AWS/EMR Serverless`


**Dimensi untuk metrik EMR Tanpa Server**  

| Dimensi | Deskripsi | 
| --- | --- | 
| ApplicationId | Filter untuk semua metrik aplikasi EMR Tanpa Server menggunakan ID aplikasi. | 
| ApplicationName | Filter untuk semua metrik aplikasi EMR Tanpa Server menggunakan nama. Jika nama tidak diberikan, atau berisi karakter non-ASCII, itu diterbitkan sebagai **[**Tidak ditentukan]. | 
| JobId | Filter untuk semua metrik EMR Tanpa Server ID job run. | 
| JobName | Filter untuk semua metrik pekerjaan EMR Tanpa Server yang dijalankan menggunakan nama. Jika nama tidak diberikan, atau berisi karakter non-ASCII, itu diterbitkan sebagai **[**Tidak ditentukan]. | 
| WorkerType | Filter untuk semua metrik dari jenis pekerja tertentu. Misalnya, Anda dapat memfilter untuk `SPARK_DRIVER` dan `SPARK_EXECUTORS` untuk pekerjaan Spark. | 
| CapacityAllocationType | Filter untuk semua metrik dari jenis alokasi kapasitas tertentu. Misalnya, Anda dapat memfilter `PreInitCapacity` untuk kapasitas pra-inisialisasi dan `OnDemandCapacity` untuk yang lainnya. | 

## Pemantauan tingkat aplikasi
<a name="app-level-metrics"></a>

Anda dapat memantau penggunaan kapasitas di tingkat aplikasi EMR Tanpa Server dengan metrik Amazon. CloudWatch Anda juga dapat mengatur satu tampilan untuk memantau penggunaan kapasitas aplikasi di CloudWatch dasbor.


**Metrik aplikasi EMR Tanpa Server**  

| Metrik | Deskripsi | Unit | Dimensi | 
| --- | --- | --- | --- | 
| MaxCPUAllowed |  CPU maksimum yang diizinkan untuk aplikasi.  | vCPU | ApplicationId, ApplicationName | 
| MaxMemoryAllowed |  Memori maksimum dalam GB diperbolehkan untuk aplikasi.  | Gigabyte (GB) | ApplicationId, ApplicationName | 
| MaxStorageAllowed |  Penyimpanan maksimum dalam GB diperbolehkan untuk aplikasi.  | Gigabyte (GB) | ApplicationId, ApplicationName | 
| CPUAllocated |  Jumlah total v yang CPUs dialokasikan.  | vCPU | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| IdleWorkerCount |  Jumlah total pekerja yang menganggur.  | Hitungan | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| MemoryAllocated |  Total memori dalam GB dialokasikan.  | Gigabyte (GB) | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| PendingCreationWorkerCount |  Jumlah total pekerja yang menunggu penciptaan.  | Hitungan | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| RunningWorkerCount |  Jumlah total pekerja yang digunakan oleh aplikasi.  | Hitungan | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| StorageAllocated |  Total penyimpanan disk dalam GB dialokasikan.  | Gigabyte (GB) | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 
| TotalWorkerCount |  Jumlah total pekerja yang tersedia.  | Hitungan | ApplicationId, ApplicationName, WorkerType, CapacityAllocationType | 

## Pemantauan tingkat pekerjaan
<a name="job-level-metrics"></a>

Amazon EMR Tanpa Server mengirimkan metrik tingkat pekerjaan berikut ke setiap satu menit. Amazon CloudWatch Anda dapat mengakses nilai metrik untuk pekerjaan agregat yang dijalankan berdasarkan status menjalankan pekerjaan. Unit untuk setiap metrik adalah *hitungan*.


**EMR Metrik tingkat pekerjaan tanpa server**  

| Metrik | Deskripsi | Dimensi | 
| --- | --- | --- | 
| SubmittedJobs | Jumlah pekerjaan di negara bagian yang Dikirim. | ApplicationId, ApplicationName | 
| PendingJobs | Jumlah pekerjaan dalam keadaan Tertunda. | ApplicationId, ApplicationName | 
| ScheduledJobs | Jumlah pekerjaan dalam keadaan Terjadwal. | ApplicationId, ApplicationName | 
| RunningJobs | Jumlah pekerjaan dalam keadaan Running. | ApplicationId, ApplicationName | 
| SuccessJobs | Jumlah pekerjaan dalam keadaan Sukses. | ApplicationId, ApplicationName | 
| FailedJobs | Jumlah pekerjaan dalam keadaan Gagal. | ApplicationId, ApplicationName | 
| CancellingJobs | Jumlah pekerjaan di negara Membatalkan. | ApplicationId, ApplicationName | 
| CancelledJobs | Jumlah pekerjaan di negara yang Dibatalkan. | ApplicationId, ApplicationName | 

Anda dapat memantau metrik khusus mesin untuk menjalankan dan menyelesaikan pekerjaan EMR Tanpa Server dengan aplikasi khusus mesin. UIs Saat Anda mengakses UI untuk pekerjaan yang sedang berjalan, UI aplikasi langsung akan ditampilkan dengan pembaruan waktu nyata. Saat Anda mengakses UI untuk pekerjaan yang diselesaikan, UI aplikasi persisten akan ditampilkan.

**Menjalankan pekerjaan**

Untuk menjalankan tugas EMR Tanpa Server Anda, akses antarmuka real-time yang menyediakan metrik khusus mesin. Anda dapat menggunakan Apache Spark UI atau Hive Tez UI untuk memantau dan men-debug pekerjaan Anda. Untuk mengakses ini UIs, gunakan konsol EMR Studio atau minta titik akhir URL aman dengan. AWS Command Line Interface

**Pekerjaan yang diselesaikan**

Untuk pekerjaan EMR Tanpa Server Anda yang telah selesai, gunakan Spark History Server atau Persistent Hive Tez UI untuk mengakses detail pekerjaan, tahapan, tugas, dan metrik untuk menjalankan pekerjaan Spark atau Hive. Untuk mengakses ini UIs, gunakan konsol EMR Studio, atau minta titik akhir URL aman dengan. AWS Command Line Interface

## Pemantauan tingkat pekerja Job
<a name="job-worker-level-metrics"></a>

Amazon EMR Tanpa Server mengirimkan metrik tingkat pekerja kerja berikut yang tersedia di `AWS/EMRServerless` namespace dan grup metrik ke Amazon. `Job Worker Metrics` CloudWatch EMR Tanpa Server mengumpulkan poin data dari pekerja individu selama pekerjaan berjalan di tingkat pekerjaan, tipe pekerja, dan tingkat. capacity-allocation-type Anda dapat menggunakan `ApplicationId` sebagai dimensi untuk memantau beberapa pekerjaan yang termasuk dalam aplikasi yang sama.

**catatan**  
Untuk melihat total CPU dan Memori yang digunakan oleh pekerjaan EMR Tanpa Server saat melihat metrik di konsol CloudWatch Amazon, gunakan Statistik sebagai Jumlah dan Periode sebagai 1 menit.


**EMR Metrik tingkat pekerja pekerjaan tanpa server**  

| Metrik | Deskripsi | Unit | Dimensi | 
| --- | --- | --- | --- | 
| WorkerCpuAllocated | Jumlah total inti vCPU yang dialokasikan untuk pekerja dalam menjalankan pekerjaan. | vCPU | JobId, JobName, ApplicationId, ApplicationName, WorkerType, dan CapacityAllocationType | 
| WorkerCpuUsed | Jumlah total core vCPU yang digunakan oleh pekerja dalam menjalankan pekerjaan. | vCPU | JobId, JobName, ApplicationId, ApplicationName, WorkerType, dan CapacityAllocationType | 
| WorkerMemoryAllocated | Total memori dalam GB dialokasikan untuk pekerja dalam menjalankan pekerjaan. | Gigabyte (GB) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, dan CapacityAllocationType | 
| WorkerMemoryUsed | Total memori dalam GB yang digunakan oleh pekerja dalam menjalankan pekerjaan. | Gigabyte (GB) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, dan CapacityAllocationType | 
| WorkerEphemeralStorageAllocated | Jumlah byte penyimpanan sementara yang dialokasikan untuk pekerja dalam menjalankan pekerjaan. | Gigabyte (GB) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, dan CapacityAllocationType | 
| WorkerEphemeralStorageUsed | Jumlah byte penyimpanan sementara yang digunakan oleh pekerja dalam menjalankan pekerjaan. | Gigabyte (GB) | JobId, JobName, ApplicationId, ApplicationName, WorkerType, dan CapacityAllocationType | 
| WorkerStorageReadBytes | Jumlah byte yang dibaca dari penyimpanan oleh pekerja dalam menjalankan pekerjaan. | Byte | JobId, JobName, ApplicationId, ApplicationName, WorkerType, dan CapacityAllocationType | 
| WorkerStorageWriteBytes | Jumlah byte yang ditulis ke penyimpanan dari pekerja dalam menjalankan pekerjaan. | Byte | JobId, JobName, ApplicationId, ApplicationName, WorkerType, dan CapacityAllocationType | 

Langkah-langkah di bawah ini menjelaskan cara mengakses berbagai jenis metrik.

------
#### [ Console ]

**Untuk mengakses UI aplikasi Anda dengan konsol**

1. [Arahkan ke aplikasi EMR Tanpa Server Anda di EMR Studio dengan petunjuk di Memulai dari konsol.](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html#gs-console) 

1. Untuk mengakses aplikasi UIs dan log khusus mesin untuk pekerjaan yang sedang berjalan: 

   1. Pilih pekerjaan dengan `RUNNING` status.

   1. Pilih pekerjaan di halaman **Detail aplikasi**, atau navigasikan ke halaman **Detail Pekerjaan** untuk pekerjaan Anda.

   1. Di bawah menu tarik-turun **Display UI**, pilih **Spark UI** atau **Hive Tez UI untuk menavigasi ke UI** aplikasi untuk jenis pekerjaan Anda. 

   1. Untuk mengakses log mesin Spark, navigasikan ke tab **Executors** di UI Spark, dan pilih tautan **Log untuk driver**. Untuk mengakses log mesin Hive, pilih tautan **Log** untuk DAG yang sesuai di UI Hive Tez.

1. Untuk mengakses aplikasi UIs dan log khusus mesin untuk pekerjaan yang diselesaikan: 

   1. Pilih pekerjaan dengan `SUCCESS` status.

   1. Pilih pekerjaan di halaman **detail Aplikasi lamaran** Anda atau navigasikan ke halaman **detail Pekerjaan**.

   1. Di bawah menu tarik-turun **Display UI**, pilih **Spark History Server** atau **Persistent Hive Tez UI untuk menavigasi ke UI** aplikasi untuk jenis pekerjaan Anda. 

   1. Untuk mengakses log mesin Spark, navigasikan ke tab **Executors** di UI Spark, dan pilih tautan **Log untuk driver**. Untuk mengakses log mesin Hive, pilih tautan **Log** untuk DAG yang sesuai di UI Hive Tez.

------
#### [ AWS CLI ]

**Untuk mengakses UI aplikasi Anda dengan AWS CLI**
+ Untuk menghasilkan URL yang digunakan untuk mengakses UI aplikasi Anda untuk menjalankan dan menyelesaikan pekerjaan, hubungi `GetDashboardForJobRun` API. 

  ```
  aws emr-serverless get-dashboard-for-job-run /
  --application-id <application-id> /
  --job-run-id <job-id>
  ```

  URL yang Anda hasilkan valid selama satu jam.

------

# Pantau metrik Spark dengan Amazon Managed Service untuk Prometheus
<a name="monitor-with-prometheus"></a>

Dengan Amazon EMR rilis 7.1.0 dan yang lebih tinggi, Anda dapat mengintegrasikan EMR Tanpa Server dengan Amazon Managed Service untuk Prometheus guna mengumpulkan metrik Apache Spark untuk pekerjaan dan aplikasi EMR Tanpa Server. Integrasi ini tersedia saat Anda mengirimkan pekerjaan atau membuat aplikasi menggunakan AWS konsol, EMR Serverless API, atau. AWS CLI

## Prasyarat
<a name="monitoring-with-prometheus-prereqs"></a>

Sebelum Anda dapat mengirimkan metrik Spark Anda ke Amazon Managed Service untuk Prometheus, lengkapi prasyarat berikut.
+ [Buat Layanan Terkelola Amazon untuk ruang kerja Prometheus.](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-create-workspace.html) Ruang kerja ini berfungsi sebagai titik akhir konsumsi. Catat URL yang ditampilkan untuk **Endpoint - URL tulis jarak jauh**. Anda harus menentukan URL saat membuat aplikasi EMR Tanpa Server.
+ Untuk memberikan akses pekerjaan Anda ke Amazon Managed Service untuk Prometheus untuk tujuan pemantauan, tambahkan kebijakan berikut ke peran pelaksanaan pekerjaan Anda.

  ```
  {
      "Sid": "AccessToPrometheus",
      "Effect": "Allow",
      "Action": ["aps:RemoteWrite"],
      "Resource": "arn:aws:aps:<AWS_REGION>:<AWS_ACCOUNT_ID>:workspace/<WORKSPACE_ID>"
  }
  ```

## Pengaturan
<a name="monitoring-with-prometheus-setup"></a>

**Untuk menggunakan AWS konsol untuk membuat aplikasi yang terintegrasi dengan Amazon Managed Service untuk Prometheus**

1. Lihat [Memulai Amazon EMR Tanpa Server untuk membuat aplikasi](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html                             ).

1. Saat Anda membuat aplikasi, pilih **Gunakan pengaturan khusus**, lalu konfigurasikan aplikasi Anda dengan menentukan informasi ke dalam bidang yang ingin Anda konfigurasikan.

1. Di bawah **Log dan metrik aplikasi**, pilih **Mengirimkan metrik engine ke Amazon Managed Service for Prometheus**, lalu tentukan URL penulisan jarak jauh Anda.

1. Tentukan pengaturan konfigurasi lain yang Anda inginkan, lalu pilih **Buat dan mulai aplikasi**.

**Gunakan API Tanpa AWS CLI Server EMR atau EMR**

Anda juga dapat menggunakan API Tanpa Server EMR AWS CLI atau EMR untuk mengintegrasikan aplikasi EMR Tanpa Server Anda dengan Amazon Managed Service for Prometheus saat menjalankan atau perintah. `create-application` `start-job-run`

------
#### [ create-application ]

```
aws emr-serverless create-application \
--release-label emr-7.1.0 \
--type "SPARK" \
--monitoring-configuration '{ 
    "prometheusMonitoringConfiguration": {
        "remoteWriteUrl": "https://aps-workspaces.<AWS_REGION>.amazonaws.com/workspaces/<WORKSPACE_ID>/api/v1/remote_write"
    }
}'
```

------
#### [ start-job-run ]

```
aws emr-serverless start-job-run \
--application-id <APPPLICATION_ID> \
--execution-role-arn <JOB_EXECUTION_ROLE> \
--job-driver '{
    "sparkSubmit": {
        "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py",
        "entryPointArguments": ["10000"],
        "sparkSubmitParameters": "--conf spark.dynamicAllocation.maxExecutors=10"
    }
}' \
--configuration-overrides '{
     "monitoringConfiguration": {
        "prometheusMonitoringConfiguration": {
            "remoteWriteUrl": "https://aps-workspaces.<AWS_REGION>.amazonaws.com/workspaces/<WORKSPACE_ID>/api/v1/remote_write"
        }
    }
}'
```

------

Termasuk `prometheusMonitoringConfiguration` dalam perintah Anda menunjukkan bahwa EMR Tanpa Server harus menjalankan pekerjaan Spark dengan agen yang mengumpulkan metrik Spark dan menuliskannya ke titik `remoteWriteUrl` akhir Anda untuk Amazon Managed Service for Prometheus. Anda kemudian dapat menggunakan metrik Spark di Amazon Managed Service for Prometheus untuk visualisasi, peringatan, dan analisis.

## Properti konfigurasi lanjutan
<a name="monitoring-with-prometheus-config-options"></a>

EMR Tanpa Server menggunakan komponen dalam nama Spark `PrometheusServlet` untuk mengumpulkan metrik Spark dan menerjemahkan data kinerja ke dalam data yang kompatibel dengan Amazon Managed Service for Prometheus. Secara default, EMR Tanpa Server menetapkan nilai default di Spark dan mengurai metrik driver dan pelaksana saat Anda mengirimkan pekerjaan menggunakan. `PrometheusMonitoringConfiguration` 

Tabel berikut menjelaskan semua properti yang dikonfigurasi saat mengirimkan pekerjaan Spark yang mengirimkan metrik ke Amazon Managed Service untuk Prometheus.


| Properti percikan | Nilai default | Deskripsi | 
| --- | --- | --- | 
| spark.metrics.conf.\$1.sink.prometheusServlet.class | org.apache.spark.metrics.sink. PrometheusServlet | Kelas yang digunakan Spark untuk mengirim metrik ke Amazon Managed Service untuk Prometheus. Untuk mengganti perilaku default, tentukan kelas kustom Anda sendiri. | 
| spark.metrics.conf.\$1.source.jvm.class | org.apache.spark.metrics.source. JvmSource | Kelas Spark digunakan untuk mengumpulkan dan mengirim metrik penting dari mesin virtual Java yang mendasarinya. Untuk berhenti mengumpulkan metrik JVM, nonaktifkan properti ini dengan menyetelnya ke string kosong, seperti. `""` Untuk mengganti perilaku default, tentukan kelas kustom Anda sendiri.  | 
| spark.metrics.conf.driver.sink.prometheusServlet.path | /metrik/prometheus | URL berbeda yang digunakan Amazon Managed Service untuk Prometheus untuk mengumpulkan metrik dari driver. Untuk mengganti perilaku default, tentukan jalur Anda sendiri. Untuk berhenti mengumpulkan metrik driver, nonaktifkan properti ini dengan menyetelnya ke string kosong, seperti`""`. | 
| spark.metrics.conf.executor.sink.prometheusServlet.path | /metrics/executor/prometheus | URL berbeda yang digunakan Amazon Managed Service untuk Prometheus untuk mengumpulkan metrik dari pelaksana. Untuk mengganti perilaku default, tentukan jalur Anda sendiri. Untuk berhenti mengumpulkan metrik pelaksana, nonaktifkan properti ini dengan menyetelnya ke string kosong, seperti. `""` | 

Untuk informasi selengkapnya tentang metrik Spark, lihat metrik [Apache](https://spark.apache.org/docs/3.5.0/monitoring.html#metrics) Spark.

## Pertimbangan dan batasan
<a name="monitoring-with-prometheus-limitations"></a>

Saat menggunakan Amazon Managed Service for Prometheus untuk mengumpulkan metrik dari EMR Tanpa Server, pertimbangkan pertimbangan dan batasan berikut.
+ Dukungan untuk menggunakan Amazon Managed Service untuk Prometheus dengan EMR Serverless hanya tersedia di [tempat Amazon Managed Service untuk Prometheus Wilayah AWS umumnya](https://docs.aws.amazon.com/general/latest/gr/prometheus-service.html) tersedia.
+ Menjalankan agen untuk mengumpulkan metrik Spark di Amazon Managed Service untuk Prometheus membutuhkan lebih banyak sumber daya dari pekerja. Jika Anda memilih ukuran pekerja yang lebih kecil, seperti satu pekerja vCPU, waktu kerja Anda mungkin meningkat.
+ Dukungan untuk menggunakan Amazon Managed Service untuk Prometheus dengan EMR Tanpa Server hanya tersedia untuk Amazon EMR rilis 7.1.0 dan yang lebih tinggi.
+ Layanan Terkelola Amazon untuk Prometheus harus diterapkan di akun yang sama tempat Anda menjalankan EMR Tanpa Server untuk mengumpulkan metrik.

# Metrik penggunaan EMR Tanpa Server
<a name="monitoring-usage"></a>

Anda dapat menggunakan metrik CloudWatch penggunaan Amazon untuk memberikan visibilitas ke sumber daya yang digunakan akun Anda. Gunakan metrik ini untuk memvisualisasikan penggunaan layanan Anda pada CloudWatch grafik dan dasbor.

Metrik penggunaan EMR Tanpa Server sesuai dengan Service Quotas. Anda dapat mengonfigurasi alarm yang memberi tahu Anda saat penggunaan mendekati kuota layanan. Untuk informasi selengkapnya, lihat [Service Quotas dan CloudWatch alarm Amazon](https://docs.aws.amazon.com/servicequotas/latest/userguide/configure-cloudwatch.html) di Panduan Pengguna *Service* Quotas.

Untuk informasi lebih lanjut tentang kuota layanan EMR Tanpa Server, lihat. [Titik akhir dan kuota untuk EMR Serverless](endpoints-quotas.md)

## Metrik penggunaan kuota layanan untuk EMR Tanpa Server
<a name="usage-metrics"></a>

EMR Tanpa Server menerbitkan metrik penggunaan kuota layanan berikut di namespace. `AWS/Usage`


****  

| Metrik | Deskripsi | 
| --- | --- | 
| `ResourceCount`  | Jumlah total sumber daya yang ditentukan yang berjalan di akun Anda. Sumber daya ditentukan oleh [dimensi](#usage-metrics-dimensions) yang terkait dengan metrik. | 

## Dimensi untuk metrik penggunaan kuota layanan EMR Tanpa Server
<a name="usage-metrics-dimensions"></a>

Anda dapat menggunakan dimensi berikut untuk menyempurnakan metrik penggunaan yang diterbitkan EMR Tanpa Server.


****  

| Dimensi | Nilai | Deskripsi | 
| --- | --- | --- | 
|  `Service`  |  EMR Tanpa Server  | Nama yang Layanan AWS berisi sumber daya. | 
|  `Type`  |  Sumber daya  | Jenis entitas yang EMR Serverless melaporkan. | 
|  `Resource`  |  vCPU  | Jenis sumber daya yang dilacak EMR Tanpa Server. | 
|  `Class`  |  Tidak ada  | Kelas sumber daya yang dilacak EMR Tanpa Server. | 

# Mengotomatisasi EMR Tanpa Server dengan Amazon EventBridge
<a name="using-eventbridge"></a>

Anda dapat menggunakannya Amazon EventBridge untuk mengotomatiskan Layanan AWS dan merespons secara otomatis peristiwa sistem, seperti masalah ketersediaan aplikasi atau perubahan sumber daya. EventBridge memberikan aliran peristiwa sistem yang mendekati real-time yang menggambarkan perubahan dalam AWS sumber daya Anda. Anda dapat menulis aturan sederhana untuk menunjukkan kejadian mana yang sesuai kepentingan Anda, dan tindakan otomatis apa yang diambil ketika suatu kejadian sesuai dengan suatu aturan. Dengan EventBridge, Anda dapat secara otomatis:
+ Memanggil fungsi AWS Lambda 
+ Relay peristiwa ke Amazon Kinesis Data Streams
+ Aktifkan mesin AWS Step Functions negara
+ Beri tahu topik Amazon SNS atau antrian Amazon SQS

Misalnya, saat Anda menggunakan EventBridge EMR Tanpa Server, Anda dapat mengaktifkan AWS Lambda fungsi saat pekerjaan ETL berhasil atau memberi tahu topik Amazon SNS saat pekerjaan ETL gagal.

EMR Tanpa Server memancarkan empat jenis acara:
+ Peristiwa perubahan status aplikasi — Peristiwa yang memancarkan setiap perubahan status aplikasi. Untuk informasi lebih lanjut tentang status aplikasi, lihat[Status aplikasi](applications.md#application-states).
+ Job run state change events — Peristiwa yang memancarkan setiap perubahan status dari pekerjaan yang dijalankan. Untuk informasi lebih lanjut tentang, lihat[Status tugas berjalan](job-states.md).
+ Job run retry events - Acara yang memancarkan setiap percobaan ulang pekerjaan yang dijalankan dari Amazon EMR Serverless rilis 7.1.0 dan yang lebih tinggi.
+ Acara pembaruan pemanfaatan sumber daya pekerjaan - Acara yang memancarkan pembaruan pemanfaatan sumber daya untuk pekerjaan yang dijalankan dengan interval hampir 30 menit.

## Contoh acara EMR Tanpa Server EventBridge
<a name="using-eventbridge-examples"></a>

Peristiwa yang dilaporkan oleh EMR Tanpa Server memiliki nilai yang `aws.emr-serverless` ditetapkan`source`, seperti pada contoh berikut.

**Acara perubahan status aplikasi**

Contoh peristiwa berikut menunjukkan aplikasi di `CREATING` negara bagian.

```
{
    "version": "0",
    "id": "9fd3cf79-1ff1-b633-4dd9-34508dc1e660",
    "detail-type": "EMR Serverless Application State Change",
    "source": "aws.emr-serverless",
    "account": "123456789012",
    "time": "2022-05-31T21:16:31Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "applicationId": "00f1cbsc6anuij25",
        "applicationName": "3965ad00-8fba-4932-a6c8-ded32786fd42",
        "arn": "arn:aws:emr-serverless:us-east-1:111122223333:/applications/00f1cbsc6anuij25",
        "releaseLabel": "emr-6.6.0",
        "state": "CREATING",
        "type": "HIVE",
        "createdAt": "2022-05-31T21:16:31.547953Z",
        "updatedAt": "2022-05-31T21:16:31.547970Z",
        "autoStopConfig": {
            "enabled": true,
            "idleTimeout": 15
        },
        "autoStartConfig": {
            "enabled": true
        }
    }
}
```

**Acara perubahan status Job run**

Contoh peristiwa berikut menunjukkan job run yang berpindah dari `SCHEDULED` state ke `RUNNING` state.

```
{
    "version": "0",
    "id": "00df3ec6-5da1-36e6-ab71-20f0de68f8a0",
    "detail-type": "EMR Serverless Job Run State Change",
    "source": "aws.emr-serverless",
    "account": "123456789012",
    "time": "2022-05-31T21:07:42Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "jobRunId": "00f1cbn5g4bb0c01",
        "applicationId": "00f1982r1uukb925",
        "arn": "arn:aws:emr-serverless:us-east-1:123456789012:/applications/00f1982r1uukb925/jobruns/00f1cbn5g4bb0c01",
        "releaseLabel": "emr-6.6.0",
        "state": "RUNNING",
        "previousState": "SCHEDULED",
        "createdBy": "arn:aws:sts::123456789012:assumed-role/TestRole-402dcef3ad14993c15d28263f64381e4cda34775/6622b6233b6d42f59c25dd2637346242",
        "updatedAt": "2022-05-31T21:07:42.299487Z",
        "createdAt": "2022-05-31T21:07:25.325900Z"
    }
}
```

**Job run acara coba lagi**

Berikut ini adalah contoh acara coba ulang job run.

```
{
    "version": "0",
    "id": "00df3ec6-5da1-36e6-ab71-20f0de68f8a0",
    "detail-type": "EMR Serverless Job Run Retry",
    "source": "aws.emr-serverless",
    "account": "123456789012",
    "time": "2022-05-31T21:07:42Z",
    "region": "us-east-1",
    "resources": [],
    "detail": {
        "jobRunId": "00f1cbn5g4bb0c01",
        "applicationId": "00f1982r1uukb925",
        "arn": "arn:aws:emr-serverless:us-east-1:123456789012:/applications/00f1982r1uukb925/jobruns/00f1cbn5g4bb0c01",
        "releaseLabel": "emr-6.6.0",
        "createdBy": "arn:aws:sts::123456789012:assumed-role/TestRole-402dcef3ad14993c15d28263f64381e4cda34775/6622b6233b6d42f59c25dd2637346242",
        "updatedAt": "2022-05-31T21:07:42.299487Z",
        "createdAt": "2022-05-31T21:07:25.325900Z",
        //Attempt Details
        "previousAttempt": 1,
        "previousAttemptState": "FAILED",
        "previousAttemptCreatedAt": "2022-05-31T21:07:25.325900Z",
        "previousAttemptEndedAt": "2022-05-31T21:07:30.325900Z",
        "newAttempt": 2,
        "newAttemptCreatedAt": "2022-05-31T21:07:30.325900Z"
    }
}
```

**Pembaruan Pemanfaatan Sumber Daya Pekerjaan**

Contoh peristiwa berikut menunjukkan pembaruan pemanfaatan sumber daya akhir untuk pekerjaan yang dipindahkan ke status terminal setelah dijalankan.

```
{
    "version": "0",
    "id": "00df3ec6-5da1-36e6-ab71-20f0de68f8a0",
    "detail-type": "EMR Serverless Job Resource Utilization Update",
    "source": "aws.emr-serverless",
    "account": "123456789012",
    "time": "2022-05-31T21:07:42Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:emr-serverless:us-east-1:123456789012:/applications/00f1982r1uukb925/jobruns/00f1cbn5g4bb0c01"
    ],
    "detail": {
        "applicationId": "00f1982r1uukb925",
        "jobRunId": "00f1cbn5g4bb0c01",
        "attempt": 1,
        "mode": "BATCH",
        "createdAt": "2022-05-31T21:07:25.325900Z",
        "startedAt": "2022-05-31T21:07:26.123Z",
        "calculatedFrom": "2022-05-31T21:07:42.299487Z",
        "calculatedTo": "2022-05-31T21:07:30.325900Z",
        "resourceUtilizationFinal": true,
        "resourceUtilizationForInterval": {
            "vCPUHour": 0.023,
            "memoryGBHour": 0.114,
            "storageGBHour": 0.228
        },
        "billedResourceUtilizationForInterval": {
            "vCPUHour": 0.067,
            "memoryGBHour": 0.333,
            "storageGBHour": 0
        },
        "totalResourceUtilization": {
            "vCPUHour": 0.023,
            "memoryGBHour": 0.114,
            "storageGBHour": 0.228
        },
        "totalBilledResourceUtilization": {
            "vCPUHour": 0.067,
            "memoryGBHour": 0.333,
            "storageGBHour": 0
        }
    }
}
```

Bidang **starteDat** hanya akan hadir dalam acara jika pekerjaan telah pindah ke status berjalan.