Publikasikan log EMR Amazon ke Log CloudWatch - Amazon EMR

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

Publikasikan log EMR Amazon ke Log CloudWatch

Ikhtisar

Amazon EMR on EC2 menyediakan integrasi asli dengan Amazon CloudWatch Logs, memungkinkan Anda mengirim log klaster langsung ke Fitur CloudWatch ini menyederhanakan pengelolaan log dan menyediakan akses terpusat ke log klaster EMR Anda untuk pemantauan, pemecahan masalah, dan analisis.

Dengan CloudWatch logging diaktifkan, Anda dapat secara otomatis menangkap dan mengalirkan log dari kluster EMR Anda ke CloudWatch grup log. Ini termasuk log eksekusi langkah, log driver Spark, dan log pelaksana Spark, memberi Anda visibilitas komprehensif ke dalam operasi klaster dan perilaku aplikasi Anda.

Fitur CloudWatch logging tersedia dimulai dengan Amazon EMR rilis 7.11.0 dan dikonfigurasi melalui MonitoringConfiguration parameter saat membuat cluster Anda. Setelah diaktifkan, log secara otomatis dialirkan ke CloudWatch saat dibuat, menyediakan akses hampir real-time untuk mencatat data melalui CloudWatch konsol atau API.

Prasyarat

Sebelum mengaktifkan CloudWatch logging untuk kluster EMR Anda, pastikan prasyarat berikut terpenuhi:

  • Rilis Amazon EMR: Kluster Anda harus menggunakan Amazon EMR rilis 7.11.0 atau yang lebih baru.

  • CloudWatch Aplikasi Agen: CloudWatch Agen Amazon harus diinstal pada cluster Anda.

  • Izin IAM: Profil EC2 instance untuk klaster Anda harus memiliki izin CloudWatch Log yang diperlukan.

  • Titik Akhir VPC (untuk subnet pribadi): Jika klaster Anda berada di subnet pribadi, Anda harus mengonfigurasi titik akhir VPC untuk Log. CloudWatch

Izin

CloudWatch Agen memerlukan izin khusus AWS Identity and Access Management(IAM) untuk membuat grup log, membuat aliran log, dan menulis peristiwa log ke Log. CloudWatch Izin ini harus dilampirkan ke profil EC2 instans Amazon yang digunakan oleh kluster EMR Anda.

Kebijakan IAM yang diperlukan

Tambahkan kebijakan berikut ke profil EC2 instans Anda untuk Amazon EMR untuk memberikan izin yang diperlukan:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:PutRetentionPolicy", "logs:DescribeLogStreams", "logs:DescribeLogGroups", "logs:CreateLogStream", "logs:CreateLogGroup" ], "Resource": "*", "Sid": "AllowCWACloudWatchLogs" } ] }

Melampirkan Kebijakan

Untuk melampirkan kebijakan ini ke profil EC2 instans Anda untuk EMR:

  1. Arahkan ke konsol IAM.

  2. Temukan profil instance yang digunakan oleh kluster EMR Anda. yang biasanya. EMR_EC2_DefaultRole

  3. Buat kebijakan inline baru atau lampirkan kebijakan yang dikelola pelanggan dengan izin di atas.

  4. Simpan perubahan kebijakan.

Untuk informasi selengkapnya tentang peran IAM untuk Amazon EMR, lihat Mengonfigurasi peran IAM untuk izin EMR Amazon ke AWS layanan dan sumber daya di Panduan Manajemen EMR Amazon.

Mengkonfigurasi Logging CloudWatch

Anda dapat mengaktifkan CloudWatch pencatatan saat membuat klaster EMR baru melalui AWS Management Console, AWS CLI, atau. AWS SDKs Konfigurasi ditentukan melalui MonitoringConfiguration parameter.

Menggunakan Konsol AWS Manajemen

Untuk membuat cluster dengan CloudWatch logging dari konsol:

  1. Arahkan ke konsol AWS EMR.

  2. Pilih Buat klaster.

  3. Di bawah Nama dan aplikasi, pilih rilis EMR Amazon 7.11.0 atau lebih tinggi.

  4. Di bawah Bundel aplikasi, pilih aplikasi yang ingin Anda instal dan pastikan CloudWatch Agen Amazon disertakan dalam pilihan Anda.

  5. Di bawah log Cluster, pilih opsi untuk Menerbitkan log khusus cluster ke Amazon. CloudWatch

  6. (Opsional) Konfigurasikan pengaturan berikut:

    • Nama grup log - Nama grup log kustom. Nilai default-nya /aws/emr/{cluster_id}.

    • Awalan aliran log - Awalan untuk nama aliran log Defaultnya adalah. empty

    • CloudWatch Kunci KMS - ARN kunci KMS untuk enkripsi log (opsional).

    • Jenis log - Pilih jenis log mana yang akan ditangkap (default: langkah dan driver Spark)

  7. Selesaikan pengaturan konfigurasi cluster yang tersisa.

  8. Pilih Buat klaster.

Setelah klaster dibuat, Anda dapat mengakses tautan CloudWatch Log dari halaman Rincian Cluster EMR di bawah Manajemen clusterTujuan log di Amazon. CloudWatch

Menggunakan AWS CLI

Anda dapat mengaktifkan CloudWatch logging menggunakan create-cluster perintah AWS CLI with the. CloudWatch Agen harus disertakan dalam --applications parameter, dan logging dikonfigurasi melalui --monitoring-configuration parameter.

Contoh: Konfigurasi Default

EMR akan secara otomatis menangkap log langkah dan log driver Spark saja dan mengirimkannya ke grup log default.

aws emr create-cluster \ --name "EMR cluster with CloudWatch Logs" \ --release-label emr-7.11.0 \ --applications Name=Spark Name=AmazonCloudWatchAgent \ --instance-type m7g.2xlarge \ --instance-count 3 \ --use-default-roles \ --monitoring-configuration '{ "CloudWatchLogConfiguration": { "Enabled": true } }'

Saat menggunakan konfigurasi default:

  • Nama grup log: /aws/emr/{cluster_id} (di mana {cluster_id} secara otomatis diganti dengan ID cluster Anda).

  • Awalan aliran log: Kosong (tidak ada awalan).

  • Jenis log: STEP_LOGS dan SPARK_DRIVER diaktifkan, masing-masing menangkap keduanya STDOUT danSTDERR.

  • Enkripsi: Tidak ada kunci yang dikelola pelanggan (menggunakan Enkripsi CloudWatch Sisi Server secara default)

Contoh: Konfigurasi Kustom

Contoh ini menunjukkan konfigurasi kustom dengan nama grup log tertentu, enkripsi KMS, dan jenis log selektif.

aws emr create-cluster \ --name "EMR cluster with custom CloudWatch Logs" \ --release-label emr-7.11.0 \ --applications Name=Spark Name=AmazonCloudWatchAgent \ --instance-type m7g.2xlarge \ --instance-count 3 \ --use-default-roles \ --monitoring-configuration '{ "CloudWatchLogConfiguration": { "Enabled": true, "LogGroupName": "/my-company/emr/production", "LogStreamNamePrefix": "cluster-prod", "EncryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012", "LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"], "SPARK_DRIVER": ["STDOUT", "STDERR"], "SPARK_EXECUTOR": ["STDERR", "STDOUT"] } } }'

Konfigurasi ini:

  • Membuat log dalam grup log kustom/my-company/emr/production.

  • Awalan semua nama aliran log dengan. cluster-prod

  • Mengenkripsi log menggunakan kunci KMS yang ditentukan.

  • Menangkap semua jenis log - log langkah, log driver Spark, dan log pelaksana Spark.

Untuk informasi selengkapnya tentang penggunaan EMR AWS CLI dengan Amazon, lihat Referensi AWS CLI Perintah untuk EMR.

Referensi Konfigurasi

CloudWatchLogConfiguration Parameter

CloudWatchLogConfigurationvObjek mendukung parameter berikut:

CloudWatchLogConfiguration Parameter
Parameter Tipe Diperlukan Deskripsi
Enabled Boolean Ya Setel true untuk mengaktifkan CloudWatch logging. Setel false ke menonaktifkan.
LogGroupName String Tidak Nama grup CloudWatch log. Default: /aws/emr/{cluster_id}
LogStreamNamePrefix String Tidak Awalan untuk nama aliran log. Default: String kosong
EncryptionKeyArn String Tidak ARN dari kunci KMS untuk enkripsi log. Jika tidak ditentukan, log dienkripsi oleh enkripsi sisi CloudWatch server.
LogTypes Objek Tidak Menentukan jenis log untuk menangkap. Default: STEP_LOGS dan SPARK_DRIVER tipe dengan STDOUT dan STDERR.

Jenis log

Amazon EMR mendukung tiga jenis log, masing-masing menangkap output standar dan aliran kesalahan standar:

Jenis Log yang Didukung
Jenis Log Deskripsi Streaming yang Tersedia
STEP_LOGS Log eksekusi langkah EMR, termasuk log pengontrol langkah STDOUT, STDERR
SPARK_DRIVER Log driver Apache Spark dari aplikasi Spark STDOUT, STDERR
SPARK_EXECUTOR Log eksekutor Apache Spark dari node pekerja STDOUT, STDERR
Konfigurasi tipe log default

Bila Anda tidak menentukan LogTypes parameter, EMR menggunakan konfigurasi default berikut:

"LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"], "SPARK_DRIVER": ["STDOUT", "STDERR"] }
Konfigurasi jenis log kustom

Anda dapat menyesuaikan jenis log mana yang akan ditangkap dengan secara eksplisit menentukan parameter. LogTypes Misalnya, untuk menangkap hanya log langkah:

"LogTypes": { "STEP_LOGS": ["STDOUT", "STDERR"] }

Atau untuk menangkap hanya kesalahan standar dari driver Spark:

"LogTypes": { "SPARK_DRIVER": ["STDERR"] }

Grup log dan penamaan aliran

CloudWatch mengatur log ke grup log dan aliran log:

  • Grup Log: Kumpulan aliran log yang berbagi pengaturan retensi, pemantauan, dan kontrol akses yang sama.

    • Nama default: /aws/emr/{cluster_id}

    • Nama kustom: Setiap nama grup CloudWatch log valid yang Anda tentukan.

  • Log Stream: Urutan peristiwa log dari satu sumber:

    • Pola penamaan:

      • Log langkah:{prefix}/steps/{step_id}/{file_name}.

      • Spark driver dan log eksekutor: {prefix}/applications/{application_id}/{container_id}/{file_name}

    • Contoh:

      • /steps/s-ABCDEFG123456/stdout

      • cluster-prod/steps/s-ABCDEFG123456/stderr

      • /applications/application_1234567890_0001/container_1234567890_0001_01_000001/stdout

Mengenkripsi Log dengan AWS KMS

Anda dapat mengenkripsi CloudWatch log Anda saat istirahat menggunakan AWS Key Management Service (KMS). Untuk mengaktifkan enkripsi:

  1. Buat atau identifikasi kunci KMS di AWS Wilayah yang sama dengan cluster EMR Anda.

  2. Pastikan kebijakan kunci KMS memungkinkan layanan CloudWatch Log untuk menggunakan kunci.

  3. Tambahkan parameter ke EncryptionKeyArn parameter AndaCloudWatchLogConfiguration.

Untuk informasi rinci tentang mengenkripsi data CloudWatch Log, lihat Mengenkripsi data log di CloudWatch Log menggunakan. AWS Key Management Service

Contoh dengan Enkripsi KMS

{ "CloudWatchLogConfiguration": { "Enabled": true, "EncryptionKeyArn": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012" } }

Melihat Log di CloudWatch

Setelah klaster Anda berjalan dengan CloudWatch logging diaktifkan, Anda dapat melihat dan menganalisis log Anda melalui CloudWatch konsol atau API.

Mengakses Log dari Konsol EMR

Cara tercepat untuk mengakses log klaster Anda adalah langsung dari konsol EMR:

  1. Arahkan ke konsol EMR Amazon.

  2. Pilih klaster Anda dari daftar cluster.

  3. Pada halaman detail cluster, cari bagian manajemen Cluster.

  4. Klik tujuan Log di CloudWatch tautan Amazon.

Tautan ini akan membawa Anda langsung ke konsol CloudWatch Log yang difilter ke grup log klaster Anda.

Mengakses Log dari konsol CloudWatch

Untuk menavigasi secara manual ke log Anda CloudWatch:

  1. Buka konsol CloudWatch .

  2. Pada panel navigasi, pilih Grup log.

  3. Temukan grup log Anda (default: /aws/emr/{cluster_id} atau nama grup log kustom Anda)

  4. Pilih grup log untuk melihat aliran log yang tersedia.

  5. Pilih aliran log untuk melihat peristiwa lognya.

Untuk informasi selengkapnya tentang bekerja dengan CloudWatch Log, lihat Panduan Pengguna CloudWatch Log Amazon.

Pertimbangan-pertimbangan

CloudWatch Perilaku Agen

CloudWatch Agen Amazon menyediakan metrik dan kemampuan logging:

  • Mengaktifkan CloudWatch Agen saja (tanpaMonitoringConfiguration) hanya menerbitkan CloudWatch metrik ke. CloudWatch Tidak ada log yang dikirim.

  • Mengaktifkan CloudWatch logging membutuhkan aplikasi CloudWatch Agen dan MonitoringConfiguration parameter denganCloudWatchLogConfiguration. Ini memungkinkan metrik dan pencatatan bersama.

Mengaktifkan CloudWatch logging saja (Menonaktifkan CloudWatch Metrik)

Jika Anda ingin mengaktifkan CloudWatch logging tetapi menonaktifkan fitur pengumpulan metrik, Anda dapat mengonfigurasi CloudWatch Agen untuk berhenti mengekspor metrik. Tambahkan klasifikasi berikut ke konfigurasi klaster Anda:

[ { "Classification": "emr-metrics", "Properties": {}, "Configurations": [ { "Classification": "emr-system-metrics", "Properties": {}, "Configurations": [] } ] } ]

Untuk informasi selengkapnya tentang CloudWatch metrik, lihat Memantau metrik dengan Amazon. CloudWatch

Keterbatasan yang Sudah Diketahui

Metrik Poin Data Selama Unggahan Log:

Saat CloudWatch logging aktif, Anda dapat mengamati kesenjangan sesekali dalam data CloudWatch metrik selama periode aktivitas log tinggi, terutama selama pengiriman langkah. Hal ini terjadi karena pengontrol instans EMR memulai ulang CloudWatch Agen untuk menerapkan konfigurasi log baru saat langkah-langkah dikirimkan, sementara mengganggu pengumpulan metrik. Ini tidak mempengaruhi pengiriman log atau fungsionalitas cluster.

Persyaratan Subnet Pribadi

Untuk memublikasikan CloudWatch log ke Log untuk klaster EMR di subnet pribadi, buat dan kaitkan titik akhir VPC Log dengan CloudWatch VPC klaster Anda.

Untuk informasi selengkapnya tentang titik akhir CloudWatch Log, lihat titik akhir dan kuota Amazon CloudWatch Logs di Panduan Referensi AWS Umum.

Pertimbangan Biaya

CloudWatch Biaya log didasarkan pada:

  • Konsumsi data: Volume data log yang dicerna CloudWatch

  • Penyimpanan: Jumlah data log yang disimpan, berdasarkan pengaturan retensi Anda

  • Analisis data: Kueri dijalankan menggunakan Wawasan CloudWatch Log

Untuk mengoptimalkan biaya:

  • Tetapkan periode penyimpanan log yang sesuai untuk grup log Anda.

  • Gunakan jenis log selektif untuk menangkap hanya log yang Anda butuhkan.

  • Pertimbangkan untuk menggunakan pencatatan Amazon S3 untuk penyimpanan log jangka panjang dengan biaya lebih rendah.

Untuk informasi harga saat ini, lihat CloudWatch Harga Amazon.

Sumber Daya Tambahan