

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

# Pencatatan dan pemantauan di Amazon Managed Service untuk Apache Flink
<a name="monitoring-overview"></a>

Pemantauan adalah bagian penting dari menjaga keandalan, ketersediaan, dan kinerja Managed Service untuk aplikasi Apache Flink. Anda harus mengumpulkan data pemantauan dari semua bagian AWS solusi Anda sehingga Anda dapat lebih mudah men-debug kegagalan multipoint jika terjadi. 

Sebelum Anda mulai memantau Managed Service untuk Apache Flink, Anda harus membuat rencana pemantauan yang mencakup jawaban atas pertanyaan-pertanyaan berikut:
+ Apa saja sasaran pemantauan Anda?
+ Sumber daya apa yang akan Anda pantau?
+ Seberapa sering Anda akan memantau sumber daya ini?
+ Alat pemantauan apa yang akan Anda gunakan?
+ Siapa yang akan melakukan tugas pemantauan?
+ Siapa yang harus diberi tahu saat terjadi kesalahan?

Langkah selanjutnya adalah menetapkan garis dasar untuk Layanan Terkelola normal untuk kinerja Apache Flink di lingkungan Anda. Anda melakukan ini dengan mengukur performa pada berbagai waktu dan di bawah tingkat kesesuaian beban yang berbeda. Saat Anda memantau Layanan Terkelola untuk Apache Flink, Anda dapat menyimpan data pemantauan historis. Anda selanjutnya dapat membandingkannya dengan data performa saat ini, mengidentifikasi pola performa normal dan anomali performa, serta merancang metode untuk mengatasi masalah.

**Topics**
+ [Masuk ke Layanan Terkelola untuk Apache Flink](logging.md)
+ [Pemantauan dalam Layanan Terkelola untuk Apache Flink](monitoring.md)
+ [Siapkan aplikasi logging di Managed Service untuk Apache Flink](cloudwatch-logs.md)
+ [Menganalisis log dengan Wawasan CloudWatch Log](cloudwatch-logs-reading.md)
+ [Metrik dan dimensi dalam Layanan Terkelola untuk Apache Flink](metrics-dimensions.md)
+ [Menulis pesan khusus ke CloudWatch Log](cloudwatch-logs-writing.md)
+ [Log Managed Service untuk panggilan Apache Flink API dengan AWS CloudTrail](logging-using-cloudtrail.md)

# Masuk ke Layanan Terkelola untuk Apache Flink
<a name="logging"></a>

Logging penting bagi aplikasi produksi untuk memahami kesalahan dan kegagalan. Namun, subsistem logging perlu mengumpulkan dan meneruskan entri log ke Log Sementara beberapa logging baik-baik saja dan diinginkan, logging ekstensif dapat membebani layanan dan menyebabkan aplikasi Flink tertinggal. CloudWatch Pengecualian dan peringatan logging tentu merupakan ide yang bagus. Tetapi Anda tidak dapat membuat pesan log untuk setiap pesan yang diproses oleh aplikasi Flink. Flink dioptimalkan untuk seluruh latensi tinggi dan latensi rendah, subsistem logging tidak. Jika benar-benar diperlukan untuk menghasilkan output log untuk setiap pesan yang diproses, gunakan tambahan DataStream di dalam aplikasi Flink dan wastafel yang tepat untuk mengirim data ke Amazon CloudWatch S3 atau. Jangan gunakan sistem logging Java untuk tujuan ini. Selain itu, Managed Service untuk `Debug Monitoring Log Level` pengaturan Apache Flink menghasilkan sejumlah besar lalu lintas, yang dapat menciptakan tekanan balik. Anda hanya harus menggunakannya saat secara aktif menyelidiki masalah dengan aplikasi.

## Log kueri dengan Wawasan CloudWatch Log
<a name="logging-querying"></a>

CloudWatch Logs Insights adalah layanan yang ampuh untuk menanyakan log dalam skala besar. Pelanggan harus memanfaatkan kemampuannya untuk dengan cepat mencari melalui log untuk mengidentifikasi dan mengurangi kesalahan selama acara operasional.

 Kueri berikut mencari pengecualian di semua log pengelola tugas dan memesannya sesuai dengan waktu terjadinya.

```
fields @timestamp, @message
| filter isPresent(throwableInformation.0) or isPresent(throwableInformation) or @message like /(Error|Exception)/
| sort @timestamp desc
```

Untuk kueri berguna lainnya, lihat [Contoh Kueri](https://docs.aws.amazon.com/managed-flink/latest/java/cloudwatch-logs-reading.html#cloudwatch-logs-reading-examples).

# Pemantauan dalam Layanan Terkelola untuk Apache Flink
<a name="monitoring"></a>

Saat menjalankan aplikasi streaming dalam produksi, Anda mulai menjalankan aplikasi secara terus menerus dan tanpa batas waktu. Sangat penting untuk menerapkan pemantauan dan pengkhawatiran yang tepat dari semua komponen tidak hanya aplikasi Flink. Jika tidak, Anda berisiko melewatkan masalah yang muncul sejak dini dan hanya menyadari peristiwa operasional setelah sepenuhnya terurai dan jauh lebih sulit untuk dikurangi. Hal-hal umum untuk dipantau meliputi:
+ Apakah sumbernya menelan data?
+ Apakah data dibaca dari sumber (dari perspektif sumber)?
+ Apakah aplikasi Flink menerima data?
+ Apakah aplikasi Flink dapat mengikuti atau tertinggal?
+ Apakah aplikasi Flink menyimpan data ke wastafel (dari perspektif aplikasi)?
+ Apakah wastafel menerima data?

Metrik yang lebih spesifik kemudian harus dipertimbangkan untuk aplikasi Flink. [CloudWatch Dasbor](https://github.com/aws-samples/kda-metrics-dashboard) ini memberikan titik awal yang baik. Untuk informasi selengkapnya tentang metrik apa yang harus dipantau untuk aplikasi produksi, lihat[Gunakan CloudWatch Alarm dengan Amazon Managed Service untuk Apache Flink](monitoring-metrics-alarms.md). Metrik ini meliputi:
+ **records\$1lag\$1max** dan **MillisBehindLatest** — Jika aplikasi menggunakan Kinesis atau Kafka, metrik ini menunjukkan apakah aplikasi tertinggal dan perlu diskalakan untuk mengikuti beban saat ini. Ini adalah metrik generik yang baik yang mudah dilacak untuk semua jenis aplikasi. Tetapi itu hanya dapat digunakan untuk penskalaan reaktif, yaitu, ketika aplikasi sudah tertinggal.
+ **CPUutilization **heapMemoryUtilization****dan — Metrik ini memberikan indikasi yang baik tentang pemanfaatan sumber daya keseluruhan aplikasi dan dapat digunakan untuk penskalaan proaktif kecuali aplikasi terikat. I/O 
+ **downtime** — Downtime yang lebih besar dari nol menunjukkan bahwa aplikasi telah gagal. Jika nilainya lebih besar dari 0, aplikasi tidak memproses data apa pun.
+ **lastCheckpointSize**dan *lastCheckpointDuration*— Metrik ini memantau berapa banyak data yang disimpan dalam keadaan dan berapa lama waktu yang dibutuhkan untuk mengambil pos pemeriksaan. Jika pos pemeriksaan bertambah atau memakan waktu lama, aplikasi terus menghabiskan waktu untuk pos pemeriksaan dan memiliki lebih sedikit siklus untuk pemrosesan yang sebenarnya. Di beberapa titik, pos pemeriksaan mungkin tumbuh terlalu besar atau memakan waktu lama sehingga gagal. Selain memantau nilai absolut, pelanggan juga harus mempertimbangkan untuk memantau tingkat perubahan dengan `RATE(lastCheckpointSize)` dan`RATE(lastCheckpointDuration)`.
+ **numberOfFailedCheckpoints** — Metrik ini menghitung jumlah pos pemeriksaan yang gagal sejak aplikasi dimulai. Tergantung pada aplikasinya, itu bisa ditoleransi jika pos pemeriksaan gagal sesekali. Tetapi jika pos pemeriksaan secara teratur gagal, aplikasi tersebut kemungkinan tidak sehat dan perlu perhatian lebih lanjut. Kami merekomendasikan pemantauan `RATE(numberOfFailedCheckpoints)` untuk alarm pada gradien dan bukan pada nilai absolut.

# Siapkan aplikasi logging di Managed Service untuk Apache Flink
<a name="cloudwatch-logs"></a>

Dengan menambahkan opsi CloudWatch pencatatan Amazon ke Layanan Terkelola untuk aplikasi Apache Flink, Anda dapat memantau peristiwa aplikasi atau masalah konfigurasi.

Topik ini menjelaskan cara mengonfigurasi aplikasi Anda untuk menulis peristiwa aplikasi ke aliran CloudWatch Log. Opsi CloudWatch logging adalah kumpulan pengaturan aplikasi dan izin yang digunakan aplikasi Anda untuk mengonfigurasi cara menulis peristiwa aplikasi ke CloudWatch Log. Anda dapat menambahkan dan mengonfigurasi opsi CloudWatch logging menggunakan salah satu Konsol Manajemen AWS atau AWS Command Line Interface (AWS CLI).

Perhatikan hal berikut tentang menambahkan opsi CloudWatch logging ke aplikasi Anda:
+ Saat Anda menambahkan opsi CloudWatch logging menggunakan konsol, Managed Service for Apache Flink membuat grup CloudWatch log dan aliran log untuk Anda dan menambahkan izin yang perlu ditulis aplikasi Anda ke aliran log. 
+ Saat Anda menambahkan opsi CloudWatch logging menggunakan API, Anda juga harus membuat grup log aplikasi dan aliran log, dan menambahkan izin yang dibutuhkan aplikasi Anda untuk menulis ke aliran log.

## Mengatur CloudWatch logging menggunakan konsol
<a name="cloudwatch-logs-console"></a>

Saat Anda mengaktifkan CloudWatch pencatatan untuk aplikasi Anda di konsol, grup CloudWatch log dan aliran log dibuat untuk Anda. Selain itu, kebijakan izin aplikasi Anda diperbarui dengan izin untuk menulis ke aliran. 

Layanan Terkelola untuk Apache Flink membuat grup log bernama menggunakan konvensi berikut, di *ApplicationName* mana nama aplikasi Anda.

```
/aws/kinesis-analytics/ApplicationName
```

Layanan Terkelola untuk Apache Flink membuat aliran log di grup log baru dengan nama berikut.

```
kinesis-analytics-log-stream
```

Anda menetapkan tingkat metrik pemantauan aplikasi dan tingkat log pemantauan menggunakan bagian **Tingkat log pemantauan** di halaman **Konfigurasikan aplikasi**. Untuk informasi tentang tingkat log aplikasi, lihat [Kontrol tingkat pemantauan aplikasi](#cloudwatch_levels).

## Mengatur CloudWatch logging menggunakan CLI
<a name="cloudwatch-logs-api"></a>

Untuk menambahkan opsi CloudWatch logging menggunakan AWS CLI, Anda menyelesaikan yang berikut ini: 
+ Buat grup CloudWatch log dan aliran log.
+ Tambahkan opsi logging saat Anda membuat aplikasi dengan menggunakan [CreateApplication](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)tindakan, atau tambahkan opsi logging ke aplikasi yang ada menggunakan [AddApplicationCloudWatchLoggingOption](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)tindakan.
+ Tambahkan izin ke kebijakan aplikasi Anda untuk menulis ke log.

### Buat grup CloudWatch log dan aliran log
<a name="cloudwatch-logs-api-create"></a>

Anda membuat grup CloudWatch log dan melakukan streaming menggunakan konsol CloudWatch Log atau API. Untuk informasi tentang membuat grup CloudWatch log dan aliran log, lihat [Bekerja dengan Grup Log dan Aliran Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html).

### Bekerja dengan opsi CloudWatch pencatatan aplikasi
<a name="adding_cloudwatch"></a>

Gunakan tindakan API berikut untuk menambahkan opsi CloudWatch log ke aplikasi baru atau yang sudah ada atau ubah opsi log untuk aplikasi yang sudah ada. Untuk informasi tentang cara menggunakan file JSON untuk input tindakan API, lihat [Layanan Terkelola untuk kode contoh API Apache Flink](api-examples.md).

#### Tambahkan opsi CloudWatch log saat membuat aplikasi
<a name="add_cloudwatch_create"></a>

Contoh berikut menunjukkan cara menggunakan `CreateApplication` tindakan untuk menambahkan opsi CloudWatch log saat Anda membuat aplikasi. Dalam contoh, ganti *Amazon Resource Name (ARN) of the CloudWatch Log stream to add to the new application* dengan informasi Anda sendiri. Untuk informasi selengkapnya tentang tindakan, lihat [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html).

```
{
    "ApplicationName": "test",
    "ApplicationDescription": "test-application-description",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation":{
                              "BucketARN": "arn:aws:s3:::amzn-s3-demo-bucket",
                              "FileKey": "myflink.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        }
    },
    "CloudWatchLoggingOptions": [{
      "LogStreamARN": "<Amazon Resource Name (ARN) of the CloudWatch log stream to add to the new application>"
	}]
}
```

#### Tambahkan opsi CloudWatch log ke aplikasi yang ada
<a name="add_to_existing_app"></a>

Contoh berikut menunjukkan cara menggunakan `AddApplicationCloudWatchLoggingOption` tindakan untuk menambahkan opsi CloudWatch log ke aplikasi yang ada. Dalam contoh, ganti masing-masing *user input placeholder* dengan informasi Anda sendiri. Untuk informasi selengkapnya tentang tindakan, lihat [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html).

```
{
   "ApplicationName": "<Name of the application to add the log option to>",
   "CloudWatchLoggingOption": { 
      "LogStreamARN": "<ARN of the log stream to add to the application>"
   },
   "CurrentApplicationVersionId": <Version of the application to add the log to>
}
```

#### Perbarui opsi CloudWatch log yang ada
<a name="update_existing"></a>

Contoh berikut menunjukkan bagaimana menggunakan `UpdateApplication` tindakan untuk memodifikasi opsi CloudWatch log yang ada. Dalam contoh, ganti masing-masing *user input placeholder* dengan informasi Anda sendiri. Untuk informasi selengkapnya tentang tindakan, lihat [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html).

```
{
   "ApplicationName": "<Name of the application to update the log option for>",
   "CloudWatchLoggingOptionUpdates": [ 
         { 
            "CloudWatchLoggingOptionId": "<ID of the logging option to modify>",
            "LogStreamARNUpdate": "<ARN of the new log stream to use>"
         }
      ],
   "CurrentApplicationVersionId": <ID of the application version to modify>
}
```

#### Hapus opsi CloudWatch log dari aplikasi
<a name="delete-log"></a>

Contoh berikut menunjukkan cara menggunakan `DeleteApplicationCloudWatchLoggingOption` tindakan untuk menghapus opsi CloudWatch log yang ada. Dalam contoh, ganti masing-masing *user input placeholder* dengan informasi Anda sendiri. Untuk informasi selengkapnya tentang tindakan, lihat [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationCloudWatchLoggingOption.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationCloudWatchLoggingOption.html).

```
{
   "ApplicationName": "<Name of application to delete log option from>",
   "CloudWatchLoggingOptionId": "<ID of the application log option to delete>",
   "CurrentApplicationVersionId": <Version of the application to delete the log option from>
}
```

#### Mengatur tingkat pencatatan aplikasi
<a name="cloudwatch-level"></a>

Untuk mengatur tingkat pencatatan aplikasi, gunakan parameter [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfiguration.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfiguration.html) tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) atau parameter [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html) tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html). 

Untuk informasi tentang tingkat log aplikasi, lihat [Kontrol tingkat pemantauan aplikasi](#cloudwatch_levels).

##### Mengatur tingkat pencatatan aplikasi saat membuat aplikasi
<a name="cloudwatch-level-create"></a>

Permintaan contoh berikut untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) menetapkan tingkat log aplikasi ke `INFO`.

```
{
   "ApplicationName": "MyApplication",                    
   "ApplicationDescription": "My Application Description",
   "ApplicationConfiguration": {
      "ApplicationCodeConfiguration":{
      "CodeContent":{
        "S3ContentLocation":{
          "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket",
          "FileKey":"myflink.jar",
          "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345"
        }
      },
      "CodeContentType":"ZIPFILE"
      },
      "FlinkApplicationConfiguration": 
         "MonitoringConfiguration": { 
            "ConfigurationType": "CUSTOM",
            "LogLevel": "INFO"
         }
      },
   "RuntimeEnvironment": "FLINK-1_15",
   "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole"
}
```

##### Perbarui tingkat pencatatan aplikasi
<a name="cloudwatch-level-update"></a>

Permintaan contoh berikut untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) menetapkan tingkat log aplikasi ke `INFO`.

```
{
   "ApplicationConfigurationUpdate": {
      "FlinkApplicationConfigurationUpdate": { 
         "MonitoringConfigurationUpdate": { 
            "ConfigurationTypeUpdate": "CUSTOM",
            "LogLevelUpdate": "INFO"
         }
      }
   }
}
```

### Tambahkan izin untuk menulis ke aliran CloudWatch log
<a name="enable_putlogevents"></a>

Layanan Terkelola untuk Apache Flink memerlukan izin untuk menulis kesalahan konfigurasi. CloudWatch Anda dapat menambahkan izin ini ke peran AWS Identity and Access Management (IAM) yang diasumsikan oleh Managed Service for Apache Flink.

Untuk informasi selengkapnya tentang menggunakan peran IAM untuk Layanan Terkelola untuk Apache Flink, lihat. [Identity and Access Management untuk Amazon Managed Service untuk Apache Flink](security-iam.md)

#### Kebijakan kepercayaan
<a name="enable_putlogevents_trust_policy"></a>

Untuk memberikan izin Layanan Terkelola untuk Apache Flink untuk mengambil peran IAM, Anda dapat melampirkan kebijakan kepercayaan berikut ke peran eksekusi layanan.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "kinesisanalytics.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

#### Kebijakan izin
<a name="enable_putlogevents_permissions_policy"></a>

Untuk memberikan izin ke aplikasi untuk menulis peristiwa log CloudWatch dari Layanan Terkelola untuk sumber daya Apache Flink, Anda dapat menggunakan kebijakan izin IAM berikut. Berikan Nama Sumber Daya Amazon (ARNs) yang benar untuk grup log dan streaming Anda.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt0123456789000",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:log-stream:my-log-stream*",
                "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:*",
                "arn:aws:logs:us-east-1:123456789012:log-group:*"
            ]
        }
    ]
}
```

------

## Kontrol tingkat pemantauan aplikasi
<a name="cloudwatch_levels"></a>

Anda mengontrol pembuatan pesan log aplikasi menggunakan *Tingkat Metrik Pemantauan* dan *Tingkat Log Pemantauan* aplikasi.

Tingkat metrik pemantauan aplikasi mengontrol granularitas pesan log. Memantau tingkat metrik ditentukan sebagai berikut:
+ **Aplikasi**: Metrik dicakup untuk seluruh aplikasi.
+ **Tugas**: Metrik dicakup untuk setiap tugas. Untuk informasi tentang tugas , lihat [Menerapkan penskalaan aplikasi di Managed Service untuk Apache Flink](how-scaling.md).
+ **Operator**: Metrik dicakup untuk setiap operator. Untuk informasi tentang operator, lihat [Mengubah data menggunakan operator di Managed Service untuk Apache Flink dengan API DataStream](how-operators.md).
+ **Paralelisme**: Metrik dicakup untuk paralelisme aplikasi. Anda hanya dapat mengatur level metrik ini menggunakan [ MonitoringConfigurationUpdate](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)parameter [ UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)API. Anda tidak dapat mengatur tingkat metrik ini menggunakan konsol. Untuk informasi tentang paralelisme, lihat [Menerapkan penskalaan aplikasi di Managed Service untuk Apache Flink](how-scaling.md).

Tingkat log pemantauan aplikasi mengontrol verbositas log aplikasi. Memantau tingkat log ditentukan sebagai berikut:
+ **Kesalahan**: Potensi peristiwa bencana aplikasi.
+ **Peringatan**: Situasi aplikasi yang berpotensi berbahaya.
+ **Info**: Informasi dan peristiwa kegagalan sementara aplikasi. Sebaiknya Anda menggunakan tingkat pencatatan ini.
+ **Debug**: Peristiwa informasi terperinci yang paling berguna untuk melakukan debug aplikasi. *Catatan*: Hanya gunakan tingkat ini untuk tujuan debugging sementara. 

## Terapkan praktik terbaik pencatatan
<a name="cloudwatch_bestpractices"></a>

Sebaiknya aplikasi Anda menggunakan tingkat pencatatan **Info**. Kami merekomendasikan tingkat ini untuk memastikan Anda melihat kesalahan Apache Flink, yang dicatat di tingkat **Info** bukan di tingkat **Kesalahan**.

Sebaiknya gunakan tingkat **Debug** hanya sementara saat menyelidiki masalah aplikasi. Alihkan kembali ke tingkat **Info** saat masalah teratasi. Menggunakan tingkat pencatatan **Debug** secara signifikan akan memengaruhi performa aplikasi Anda.

Pencatatan berlebihan juga dapat berdampak signifikan terhadap performa aplikasi. Sebaiknya jangan tulis entri log untuk setiap catatan yang diproses, misalnya. Pencatatan berlebihan dapat menyebabkan hambatan parah dalam pemrosesan data dan dapat menyebabkan tekanan balik dalam membaca data dari sumber.

## Lakukan pemecahan masalah logging
<a name="cloudwatch_troubleshooting"></a>

Jika log aplikasi tidak ditulis ke aliran log, verifikasi hal berikut: 
+ Verifikasi bahwa IAM role dan kebijakan IAM aplikasi Anda sudah benar. Kebijakan aplikasi Anda memerlukan izin berikut untuk mengakses aliran log Anda:
  + `logs:PutLogEvents`
  + `logs:DescribeLogGroups`
  + `logs:DescribeLogStreams`

  Untuk informasi selengkapnya, lihat [Tambahkan izin untuk menulis ke aliran CloudWatch log](#enable_putlogevents).
+ Verifikasi bahwa aplikasi Anda sedang berjalan Untuk memeriksa status aplikasi Anda, lihat halaman aplikasi Anda di konsol, atau gunakan [ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)tindakan [DescribeApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplication.html)atau.
+ Pantau CloudWatch metrik seperti `downtime` untuk mendiagnosis masalah aplikasi lainnya. Untuk informasi tentang membaca CloudWatch metrik, lihat[Metrik dan dimensi dalam Layanan Terkelola untuk Apache Flink](metrics-dimensions.md).

## Gunakan Wawasan CloudWatch Log
<a name="cloudwatch_next"></a>

Setelah Anda mengaktifkan CloudWatch login di aplikasi Anda, Anda dapat menggunakan Wawasan CloudWatch Log untuk menganalisis log aplikasi Anda. Lihat informasi yang lebih lengkap di [Menganalisis log dengan Wawasan CloudWatch Log](cloudwatch-logs-reading.md).

# Menganalisis log dengan Wawasan CloudWatch Log
<a name="cloudwatch-logs-reading"></a>

Setelah menambahkan opsi CloudWatch pencatatan ke aplikasi seperti yang dijelaskan di bagian sebelumnya, Anda dapat menggunakan Wawasan CloudWatch Log untuk menanyakan aliran log Anda untuk peristiwa atau kesalahan tertentu.

CloudWatch Logs Insights memungkinkan Anda untuk secara interaktif mencari dan menganalisis data log Anda di CloudWatch Log. 

Untuk informasi tentang memulai Wawasan CloudWatch Log, lihat [Menganalisis Data Log dengan Wawasan CloudWatch Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html).

## Jalankan kueri sampel
<a name="cloudwatch-logs-reading-run"></a>

Bagian ini menjelaskan cara menjalankan contoh kueri Wawasan CloudWatch Log.

**Prasyarat**
+ Grup log dan aliran log yang ada disiapkan di CloudWatch Log.
+ Log yang ada disimpan di CloudWatch Log.

Jika Anda menggunakan layanan seperti AWS CloudTrail, Amazon Route 53, atau Amazon VPC, Anda mungkin sudah menyiapkan log dari layanan tersebut untuk masuk ke CloudWatch Log. Untuk informasi selengkapnya tentang mengirim CloudWatch log ke Log, lihat [Memulai dengan CloudWatch Log](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_GettingStarted.html).

Kueri dalam Wawasan CloudWatch Log mengembalikan sekumpulan bidang dari peristiwa log, atau hasil agregasi matematis atau operasi lain yang dilakukan pada peristiwa log. Bagian ini menunjukkan kueri yang mengembalikan daftar log acara.

**Untuk menjalankan kueri sampel Wawasan CloudWatch Log**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi, pilih **Insights** (Wawasan).

   

1. Editor kueri di dekat bagian atas layar berisi kueri default yang mengembalikan 20 log acara terbaru. Di atas editor kueri, pilih satu grup log yang akan dikueri.

   

   Saat Anda memilih grup CloudWatch log, Wawasan Log secara otomatis mendeteksi bidang dalam data dalam grup log dan menampilkannya di **bidang Ditemukan** di panel kanan. Panel ini juga menampilkan grafik batang log acara dalam grup log ini dari waktu ke waktu. Grafik batang ini menunjukkan distribusi peristiwa dalam grup log yang sesuai dengan kueri dan rentang waktu Anda, bukan hanya peristiwa yang ditampilkan dalam tabel.

1. Pilih **Run query** (Jalankan kueri).

   Hasil kueri muncul. Dalam contoh ini, hasilnya adalah 20 log acara terbaru dari tipe apa pun.

1. Untuk melihat semua bidang untuk salah satu log acara yang ditampilkan, pilih panah di sebelah kiri log acara tersebut.

Untuk informasi selengkapnya tentang cara menjalankan dan memodifikasi kueri Wawasan CloudWatch Log, lihat [Menjalankan dan Memodifikasi Kueri Contoh](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_RunSampleQuery.html).

## Tinjau contoh kueri
<a name="cloudwatch-logs-reading-examples"></a>

Bagian ini berisi kueri contoh Wawasan CloudWatch Log untuk menganalisis Layanan Terkelola untuk log aplikasi Apache Flink. Kueri ini mencari beberapa contoh kondisi kesalahan, dan berfungsi sebagai templat untuk menulis kueri yang menemukan kondisi kesalahan lainnya. 

**catatan**  
Ganti Region (*us-west-2*), ID Akun (*012345678901*) dan nama aplikasi (*YourApplication*) dalam contoh kueri berikut dengan Region aplikasi dan ID Akun Anda.

**Topics**
+ [Menganalisis operasi: Distribusi tugas](#cloudwatch-logs-reading-tm)
+ [Analisis operasi: Perubahan paralelisme](#cloudwatch-logs-reading-auto)
+ [Menganalisis kesalahan: Akses ditolak](#cloudwatch-logs-reading-access)
+ [Analisis kesalahan: Sumber atau wastafel tidak ditemukan](#cloudwatch-logs-reading-con)
+ [Menganalisis kesalahan: Kegagalan terkait tugas aplikasi](#cloudwatch-logs-reading-apps)

### Menganalisis operasi: Distribusi tugas
<a name="cloudwatch-logs-reading-tm"></a>

Kueri CloudWatch Logs Insights berikut menampilkan jumlah tugas yang didistribusikan oleh Apache Flink Job Manager antar Task Manager. Anda perlu mengatur kerangka waktu kueri untuk mencocokkan satu tugas yang berjalan sehingga kueri tidak menampilkan tugas dari tugas sebelumnya. Untuk informasi selengkapnya tentang Paralelisme, lihat [Menerapkan penskalaan aplikasi](how-scaling.md). 

```
fields @timestamp, message
| filter message like /Deploying/
| parse message " to flink-taskmanager-*" as @tmid
| stats count(*) by @tmid
| sort @timestamp desc
| limit 2000
```

Kueri Wawasan CloudWatch Log berikut menampilkan subtugas yang ditetapkan ke setiap Task Manager. Jumlah total subtugas adalah jumlah paralelisme setiap tugas. Paralelisme tugas berasal dari paralelisme operator, dan sama dengan paralelisme aplikasi secara default, kecuali jika Anda mengubahnya dalam kode dengan menentukan `setParallelism`. Untuk informasi selengkapnya tentang pengaturan paralelisme operator, lihat [ Mengatur Paralelisme: Tingkat Operator](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/parallel.html#operator-level) di [Dokumentasi Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

```
fields @timestamp, @tmid, @subtask
| filter message like /Deploying/
| parse message "Deploying * to flink-taskmanager-*" as @subtask, @tmid
| sort @timestamp desc
| limit 2000
```

Untuk informasi selengkapnya tentang penjadwalan tugas, lihat [Tugas dan Penjadwalan](https://nightlies.apache.org/flink/flink-docs-release-1.15/internals/job_scheduling.html) di [Dokumentasi Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

### Analisis operasi: Perubahan paralelisme
<a name="cloudwatch-logs-reading-auto"></a>

Kueri CloudWatch Logs Insights berikut mengembalikan perubahan pada paralelisme aplikasi (misalnya, karena penskalaan otomatis). Kueri ini juga menampilkan perubahan manual paralelisme aplikasi. Untuk informasi selengkapnya tentang penskalaan otomatis, lihat [Gunakan penskalaan otomatis di Managed Service untuk Apache Flink](how-scaling-auto.md).

```
fields @timestamp, @parallelism
| filter message like /property: parallelism.default, /
| parse message "default, *" as @parallelism
| sort @timestamp asc
```

### Menganalisis kesalahan: Akses ditolak
<a name="cloudwatch-logs-reading-access"></a>

Kueri CloudWatch Logs Insights berikut mengembalikan `Access Denied` log.

```
fields @timestamp, @message, @messageType
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /AccessDenied/
| sort @timestamp desc
```

### Analisis kesalahan: Sumber atau wastafel tidak ditemukan
<a name="cloudwatch-logs-reading-con"></a>

Kueri CloudWatch Logs Insights berikut mengembalikan `ResourceNotFound` log. `ResourceNotFound`log dihasilkan jika sumber Kinesis atau wastafel tidak ditemukan.

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /ResourceNotFoundException/
| sort @timestamp desc
```

### Menganalisis kesalahan: Kegagalan terkait tugas aplikasi
<a name="cloudwatch-logs-reading-apps"></a>

Kueri CloudWatch Logs Insights berikut menampilkan log kegagalan terkait tugas aplikasi. Ini mencatat hasil jika status aplikasi beralih dari `RUNNING` ke `RESTARTING`.

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to RESTARTING/
| sort @timestamp desc
```

Untuk aplikasi yang menggunakan Apache Flink versi 1.8.2 dan sebelumnya, kegagalan terkait tugas akan mengakibatkan perubahan status aplikasi dari `RUNNING` ke `FAILED` sebagai gantinya. Ketika menggunakan Apache Flink 1.8.2 dan sebelumnya, gunakan kueri berikut untuk mencari kegagalan terkait tugas aplikasi:

```
fields @timestamp,@message
| filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/
| filter @message like /switched from RUNNING to FAILED/
| sort @timestamp desc
```

# Metrik dan dimensi dalam Layanan Terkelola untuk Apache Flink
<a name="metrics-dimensions"></a>

Saat Layanan Terkelola untuk Apache Flink memproses sumber data, Managed Service for Apache Flink melaporkan metrik dan dimensi berikut ke Amazon. CloudWatch

**Perubahan metrik Flink 2.2**  
Flink 2.2 memperkenalkan perubahan metrik yang dapat memengaruhi pemantauan dan alarm Anda. Tinjau perubahan berikut sebelum memutakhirkan:  
`fullRestarts`Metrik telah dihapus. Gunakan `numRestarts` sebagai gantinya.
`downtime`Metrik `uptime` dan tidak digunakan lagi dan akan dihapus di rilis mendatang. Migrasi ke metrik khusus negara bagian yang baru.
`bytesRequestedPerFetch`Metrik untuk konektor Kinesis Data Streams 6.0.0 telah dihapus.

## Metrik aplikasi
<a name="metrics-dimensions-jobs"></a>


| Metrik | Unit | Deskripsi | Tingkat | Catatan Penggunaan | 
| --- | --- | --- | --- | --- | 
| backPressuredTimeMsPerSecond\$1 | Milidetik | Waktu (dalam milidetik) tugas atau operator ini kembali ditekan per detik. | Tugas, Operator, Paralelisme | \$1Tersedia untuk Managed Service untuk aplikasi Apache Flink yang menjalankan Flink versi 1.13 saja. Metrik ini dapat berguna dalam mengidentifikasi kemacetan dalam suatu aplikasi. | 
| busyTimeMsPerSecond\$1 | Milidetik | Waktu (dalam milidetik) tugas atau operator ini sibuk (tidak menganggur atau kembali ditekan) per detik. Bisa NaN, jika nilainya tidak bisa dihitung. | Tugas, Operator, Paralelisme | \$1Tersedia untuk Managed Service untuk aplikasi Apache Flink yang menjalankan Flink versi 1.13 saja. Metrik ini dapat berguna dalam mengidentifikasi kemacetan dalam suatu aplikasi. | 
| cpuUtilization | Persentase | Keseluruhan persentase penggunaan CPU di seluruh manajer tugas. Misalnya, jika ada lima pengelola tugas, Managed Service for Apache Flink menerbitkan lima sampel metrik ini per interval pelaporan. | Aplikasi | Anda dapat menggunakan metrik ini untuk memantau penggunaan CPU minimum, rata-rata, dan maksimum dalam aplikasi Anda. CPUUtilizationMetrik hanya memperhitungkan penggunaan CPU dari proses TaskManager JVM yang berjalan di dalam wadah.  | 
| containerCPUUtilization | Persentase | Persentase keseluruhan pemanfaatan CPU di seluruh wadah task manager di cluster aplikasi Flink. Misalnya, jika ada lima pengelola tugas, maka ada lima TaskManager kontainer dan Layanan Terkelola untuk Apache Flink menerbitkan 2 \$1 lima sampel metrik ini per interval pelaporan 1 menit. | Aplikasi | Itu dihitung per kontainer sebagai: *Total waktu CPU (dalam detik) yang dikonsumsi oleh kontainer\$1 100/ Batas CPU kontainer ( CPUsdalam/detik)* `CPUUtilization`Metrik hanya memperhitungkan penggunaan CPU dari proses TaskManager JVM yang berjalan di dalam wadah. Ada komponen lain yang berjalan di luar JVM dalam wadah yang sama. `containerCPUUtilization`Metrik memberi Anda gambaran yang lebih lengkap, termasuk semua proses dalam hal kelelahan CPU di wadah dan kegagalan yang dihasilkan dari itu.  | 
| containerMemoryUtilization | Persentase | Persentase keseluruhan pemanfaatan memori di seluruh wadah pengelola tugas di cluster aplikasi Flink. Misalnya, jika ada lima pengelola tugas, maka ada lima TaskManager kontainer dan Layanan Terkelola untuk Apache Flink menerbitkan 2 \$1 lima sampel metrik ini per interval pelaporan 1 menit. | Aplikasi | Itu dihitung per kontainer sebagai: *Penggunaan memori kontainer (byte) \$1 100/ Batas memori kontainer sesuai spesifikasi penerapan pod (dalam byte)* [Metrik `HeapMemoryUtilization` dan hanya memperhitungkan `ManagedMemoryUtilzations` metrik memori tertentu seperti Heap Memory Usage of TaskManager JVM atau Managed Memory (penggunaan memori di luar JVM untuk proses asli seperti RocksDB State Backend).](https://flink.apache.org/2021/01/18/rocksdb.html#:~:text=Conclusion-,The%20RocksDB%20state%20backend%20(i.e.%2C%20RocksDBStateBackend)%20is%20one%20of,with%20exactly%2Donce%20processing%20guarantees.) `containerMemoryUtilization`Metrik memberi Anda gambaran yang lebih lengkap dengan memasukkan memori set kerja, yang merupakan pelacak yang lebih baik dari kelelahan memori total. Setelah kelelahan, itu akan menghasilkan pod`Out of Memory Error`. TaskManager   | 
| containerDiskUtilization | Persentase | Persentase keseluruhan pemanfaatan disk di seluruh wadah pengelola tugas di cluster aplikasi Flink. Misalnya, jika ada lima pengelola tugas, maka ada lima TaskManager kontainer dan Layanan Terkelola untuk Apache Flink menerbitkan 2 \$1 lima sampel metrik ini per interval pelaporan 1 menit. | Aplikasi | Itu dihitung per kontainer sebagai: *Penggunaan disk dalam byte\$1 100/Batas Disk untuk wadah dalam byte* Untuk kontainer, ini mewakili pemanfaatan sistem file tempat volume root wadah diatur.  | 
| currentInputWatermark | Milidetik | Tanda air terakhir yang application/operator/task/thread diterima | Aplikasi, Operator, Tugas, Paralelisme | Catatan ini hanya dipancarkan untuk dimensi dengan dua input. Ini adalah nilai minimum dari watermark yang terakhir diterima. | 
| currentOutputWatermark | Milidetik | Tanda air terakhir yang application/operator/task/thread dipancarkan | Aplikasi, Operator, Tugas, Paralelisme |  | 
| downtime[USANG] | Milidetik | Untuk pekerjaan yang saat ini dalam suatu failing/recovering situasi, waktu berlalu selama pemadaman ini. | Aplikasi | Metrik ini mengukur waktu berlalu saat tugas gagal atau memulihkan. Metrik ini menampilkan 0 untuk tugas yang berjalan dan -1 untuk tugas yang selesai. Jika metrik ini bukan 0 atau -1, ini menunjukkan tugas Apache Flink untuk aplikasi gagal dijalankan. **Usang di Flink 2.2.** Gunakan`restartingTime`,`cancellingTime`, and/or `failingTime` sebagai gantinya. | 
| failingTime | Milidetik | Waktu (dalam milidetik) yang dihabiskan aplikasi dalam keadaan gagal. Gunakan metrik ini untuk memantau kegagalan aplikasi dan memicu peringatan. | Aplikasi, Aliran | Tersedia dari Flink 2.2. Menggantikan bagian dari metrik usangdowntime. | 
| heapMemoryUtilization | Persentase | Keseluruhan pemanfaatan memori tumpukan di seluruh manajer tugas. Misalnya, jika ada lima pengelola tugas, Managed Service for Apache Flink menerbitkan lima sampel metrik ini per interval pelaporan. | Aplikasi | Anda dapat menggunakan metrik ini untuk memantau penggunaan memori tumpukan minimum, rata-rata, dan maksimum dalam aplikasi Anda. HeapMemoryUtilizationSatu-satunya akun untuk metrik memori tertentu seperti Heap Memory Usage of TaskManager JVM. | 
| idleTimeMsPerSecond\$1 | Milidetik | Waktu (dalam milidetik) tugas atau operator ini menganggur (tidak memiliki data untuk diproses) per detik. Waktu idle tidak termasuk waktu bertekanan kembali, jadi jika tugas kembali ditekan, itu tidak menganggur. | Tugas, Operator, Paralelisme | \$1Tersedia untuk Managed Service untuk aplikasi Apache Flink yang menjalankan Flink versi 1.13 saja. Metrik ini dapat berguna dalam mengidentifikasi kemacetan dalam suatu aplikasi. | 
| lastCheckpointSize | Byte | Total ukuran titik pemeriksaan terakhir | Aplikasi | Anda dapat menggunakan metrik ini untuk menentukan penggunaan penyimpanan aplikasi yang berjalan. Jika nilai metrik ini meningkat, ini mungkin menunjukkan adanya masalah pada aplikasi Anda, seperti kebocoran memori atau hambatan. | 
| lastCheckpointDuration | Milidetik | Waktu yang diperlukan untuk menyelesaikan titik pemeriksaan terakhir | Aplikasi | Metrik ini mengukur waktu yang diperlukan untuk menyelesaikan titik pemeriksaan terbaru. Jika nilai metrik ini meningkat, ini mungkin menunjukkan adanya masalah pada aplikasi Anda, seperti kebocoran memori atau hambatan. Dalam beberapa kasus, Anda dapat memecahkan masalah ini dengan menonaktifkan checkpointing. | 
| managedMemoryUsed\$1 | Byte | Jumlah memori terkelola yang saat ini digunakan. | Aplikasi, Operator, Tugas, Paralelisme | \$1Tersedia untuk Managed Service untuk aplikasi Apache Flink yang menjalankan Flink versi 1.13 saja. Ini berkaitan dengan memori yang dikelola oleh Flink di luar tumpukan Java. Ini digunakan untuk backend status RocksDB, dan juga tersedia untuk aplikasi. | 
| managedMemoryTotal\$1 | Byte | Jumlah total memori yang dikelola. | Aplikasi, Operator, Tugas, Paralelisme | \$1Tersedia untuk Managed Service untuk aplikasi Apache Flink yang menjalankan Flink versi 1.13 saja. Ini berkaitan dengan memori yang dikelola oleh Flink di luar tumpukan Java. Ini digunakan untuk backend status RocksDB, dan juga tersedia untuk aplikasi. `ManagedMemoryUtilzations`Metrik hanya memperhitungkan metrik memori tertentu seperti Memori Terkelola (penggunaan memori di luar JVM untuk proses asli seperti [RocksDB](https://flink.apache.org/2021/01/18/rocksdb.html#:~:text=Conclusion-,The%20RocksDB%20state%20backend%20(i.e.%2C%20RocksDBStateBackend)%20is%20one%20of,with%20exactly%2Donce%20processing%20guarantees.) State Backend) | 
| managedMemoryUtilization\$1 | Persentase | Diturunkan oleh managedMemoryUsed/managedMemoryTotal | Aplikasi, Operator, Tugas, Paralelisme | \$1Tersedia untuk Managed Service untuk aplikasi Apache Flink yang menjalankan Flink versi 1.13 saja. Ini berkaitan dengan memori yang dikelola oleh Flink di luar tumpukan Java. Ini digunakan untuk backend status RocksDB, dan juga tersedia untuk aplikasi. | 
| numberOfFailedCheckpoints | Hitungan | Jumlah kegagalan checkpointing. | Aplikasi | Anda dapat menggunakan metrik ini untuk memantau kesehatan dan kemajuan aplikasi. Titik pemeriksaan mungkin gagal karena masalah aplikasi, seperti throughput atau masalah izin.  | 
| numRecordsIn\$1 | Hitungan | Jumlah total catatan yang diterima aplikasi, operator, atau tugas. | Aplikasi, Operator, Tugas, Paralelisme | \$1Untuk menerapkan statistik SUM selama periode waktu (detik/menit): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/metrics-dimensions.html) Tingkat metrik menentukan apakah metrik ini mengukur jumlah total catatan yang diterima seluruh aplikasi, operator tertentu, atau tugas tertentu. | 
| numRecordsInPerSecond\$1 | Hitungan/Detik | Jumlah total catatan yang diterima aplikasi, operator, atau tugas per detik. | Aplikasi, Operator, Tugas, Paralelisme | \$1Untuk menerapkan statistik SUM selama periode waktu (detik/menit): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/metrics-dimensions.html) Tingkat metrik menentukan apakah metrik ini mengukur jumlah total catatan yang diterima seluruh aplikasi, operator tertentu, atau tugas tertentu per detik. | 
| numRecordsOut\$1 | Hitungan | Jumlah total catatan yang dipancarkan aplikasi, operator, atau tugas. | Aplikasi, Operator, Tugas, Paralelisme |  \$1Untuk menerapkan statistik SUM selama periode waktu (detik/menit): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/metrics-dimensions.html) Tingkat metrik menentukan apakah metrik ini mengukur jumlah total catatan yang dipancarkan seluruh aplikasi, operator tertentu, atau tugas tertentu. | 
| numLateRecordsDropped\$1 | Hitungan | Aplikasi, Operator, Tugas, Paralelisme |  | \$1Untuk menerapkan statistik SUM selama periode waktu (detik/menit): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/metrics-dimensions.html) Jumlah catatan yang dibuang operator atau tugas karena datang terlambat. | 
| numRecordsOutPerSecond\$1 | Hitungan/Detik | Jumlah total catatan yang dipancarkan aplikasi, operator, atau tugas per detik. | Aplikasi, Operator, Tugas, Paralelisme |  \$1Untuk menerapkan statistik SUM selama periode waktu (detik/menit): [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/metrics-dimensions.html) Tingkat metrik menentukan apakah metrik ini mengukur jumlah total catatan yang dipancarkan seluruh aplikasi, operator tertentu, atau tugas tertentu per detik. | 
| oldGenerationGCCount | Hitungan | Jumlah total operasi pengumpulan sampah lama yang terjadi di semua manajer tugas.  | Aplikasi |  | 
| oldGenerationGCTime | Milidetik | Total waktu yang digunakan untuk melakukan operasi pengumpulan sampah lama.  | Aplikasi | Anda dapat menggunakan metrik ini untuk memantau jumlah, rata-rata, dan waktu pengumpulan sampah maksimum. | 
| threadsCount | Hitungan | Jumlah total utas langsung yang digunakan aplikasi.  | Aplikasi | Metrik ini mengukur jumlah utas yang digunakan kode aplikasi. Ini tidak sama dengan paralelisme aplikasi. | 
| cancellingTime | Milidetik | Waktu (dalam milidetik) yang telah dihabiskan aplikasi dalam keadaan pembatalan. Gunakan metrik ini untuk memantau operasi pembatalan aplikasi. | Aplikasi, Aliran | Tersedia dari Flink 2.2. Menggantikan bagian dari metrik usangdowntime. | 
| restartingTime | Milidetik | Waktu (dalam milidetik) yang telah dihabiskan aplikasi dalam keadaan restart. Gunakan metrik ini untuk memantau perilaku restart aplikasi. | Aplikasi, Aliran | Tersedia dari Flink 2.2. Menggantikan bagian dari metrik usangdowntime. | 
| runningTime | Milidetik | Waktu (dalam milidetik) aplikasi telah berjalan tanpa gangguan. Menggantikan metrik usanguptime. | Aplikasi, Aliran | Tersedia dari Flink 2.2. Gunakan sebagai pengganti langsung untuk metrik usanguptime. | 
| uptime[USANG] | Milidetik | Waktu ketika tugas berjalan tanpa gangguan. | Aplikasi | Anda dapat menggunakan metrik ini untuk menentukan apakah tugas berhasil berjalan. Metrik ini menampilkan -1 untuk tugas yang selesai. **Usang di Flink 2.2.** Gunakan `runningTime` sebagai gantinya. | 
| jobmanagerFileDescriptorsMax | Hitungan | Jumlah maksimum deskriptor file yang tersedia untuk file. JobManager | Aplikasi, Aliran, Tuan Rumah | Gunakan metrik ini untuk memantau kapasitas deskriptor file. | 
| jobmanagerFileDescriptorsOpen | Hitungan | Jumlah deskriptor file terbuka saat ini untuk file. JobManager | Aplikasi, Aliran, Tuan Rumah | Gunakan metrik ini untuk memantau penggunaan deskriptor file dan mendeteksi potensi kehabisan sumber daya. | 
| taskmanagerFileDescriptorsMax | Hitungan | Jumlah maksimum deskriptor file yang tersedia untuk masing-masing TaskManager. | Aplikasi, Aliran, Host, tm\$1id | Gunakan metrik ini untuk memantau kapasitas deskriptor file. | 
| taskmanagerFileDescriptorsOpen | Hitungan | Jumlah deskriptor file terbuka saat ini untuk masing-masing TaskManager. | Aplikasi, Aliran, Host, tm\$1id | Gunakan metrik ini untuk memantau penggunaan deskriptor file dan mendeteksi potensi kehabisan sumber daya. | 
| KPUs\$1 | Hitungan | Jumlah total yang KPUs digunakan oleh aplikasi. | Aplikasi | \$1Metrik ini menerima satu sampel per periode penagihan (satu jam). Untuk memvisualisasikan jumlah dari KPUs waktu ke waktu, gunakan MAX atau AVG selama setidaknya satu (1) jam. Jumlah KPU termasuk `orchestration` KPU. Untuk informasi selengkapnya, lihat [Layanan Terkelola untuk Harga Apache Flink](https://aws.amazon.com/managed-service-apache-flink/pricing/). | 

**Panduan migrasi metrik Flink 2.2**  
**Migrasi dari FullRestarts:** `fullRestarts` Metrik telah dihapus di Flink 2.2. Gunakan `numRestarts` metrik sebagai gantinya. `numRestarts`Metrik menyediakan fungsionalitas yang setara dan dapat digunakan sebagai pengganti langsung dalam CloudWatch alarm tanpa memerlukan penyesuaian ambang batas.  
**Migrasi dari waktu aktif:** `uptime` Metrik tidak digunakan lagi di Flink 2.2 dan akan dihapus di rilis mendatang. Gunakan `runningTime` metrik sebagai gantinya. `runningTime`Metrik menyediakan fungsionalitas yang setara dan dapat digunakan sebagai pengganti langsung dalam CloudWatch alarm tanpa memerlukan penyesuaian ambang batas.  
**Migrasi dari waktu henti:** `downtime` Metrik tidak digunakan lagi di Flink 2.2 dan akan dihapus di rilis mendatang. Bergantung pada apa yang ingin Anda pantau, gunakan satu atau beberapa metrik berikut:  
`restartingTime`: Pantau waktu yang dihabiskan untuk memulai ulang aplikasi
`cancellingTime`: Memantau waktu yang dihabiskan untuk membatalkan aplikasi
`failingTime`: Pantau waktu yang dihabiskan dalam keadaan gagal

## Metrik konektor Kinesis Data Streams
<a name="metrics-dimensions-stream"></a>

AWS memancarkan semua catatan untuk Kinesis Data Streams selain yang berikut:


| Metrik | Unit | Deskripsi | Tingkat | Catatan Penggunaan | 
| --- | --- | --- | --- | --- | 
| millisbehindLatest | Milidetik | Jumlah milidetik konsumen berada di belakang bagian depan aliran, menunjukkan seberapa jauh di belakang waktu konsumen saat ini. | Aplikasi (untuk Stream), Paralelisme (untuk) ShardId | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/managed-flink/latest/java/metrics-dimensions.html)  | 

**catatan**  
`bytesRequestedPerFetch`Metrik telah dihapus di AWS konektor Flink versi 6.0.0 (satu-satunya versi konektor yang kompatibel dengan Flink 2.2). Satu-satunya metrik konektor Kinesis Data Streams yang tersedia di Flink 2.2 adalah. `millisBehindLatest`

## Metrik konektor MSK Amazon
<a name="metrics-dimensions-msk"></a>

AWS memancarkan semua catatan untuk Amazon MSK selain yang berikut:


| Metrik | Unit | Deskripsi | Tingkat | Catatan Penggunaan | 
| --- | --- | --- | --- | --- | 
| currentoffsets | N/A | Offset baca konsumen saat ini, untuk setiap partisi. Metrik partisi tertentu dapat ditentukan berdasarkan nama topik dan id partisi. | Aplikasi (untuk Topik), Paralelisme (untuk) PartitionId |  | 
| commitsFailed | N/A | Jumlah total kegagalan commit offset ke Kafka, jika commit offset dan checkpointing diaktifkan.  | Aplikasi, Operator, Tugas, Paralelisme | Melakukan commit offset kembali ke Kafka hanyalah sarana untuk mengungkapkan kemajuan konsumen, jadi kegagalan commit tidak memengaruhi integritas offset partisi titik pemeriksaan Flink. | 
| commitsSucceeded | N/A | Jumlah total keberhasilan commit offset ke Kafka, jika commit offset dan checkpointing diaktifkan.  | Aplikasi, Operator, Tugas, Paralelisme |  | 
| committedoffsets | N/A | Offset komit yang berhasil terakhir ke Kafka, untuk setiap partisi. Metrik partisi tertentu dapat ditentukan berdasarkan nama topik dan id partisi. | Aplikasi (untuk Topik), Paralelisme (untuk) PartitionId |  | 
| records\$1lag\$1max | Hitungan | Keterlambatan maksimum dalam hal jumlah catatan untuk setiap partisi di jendela ini | Aplikasi, Operator, Tugas, Paralelisme |  | 
| bytes\$1consumed\$1rate | Byte | Jumlah rata-rata byte yang digunakan per detik untuk topik | Aplikasi, Operator, Tugas, Paralelisme |  | 

## Metrik Apache Zeppelin
<a name="metrics-dimensions-zeppelin"></a>

Untuk notebook Studio, AWS memancarkan metrik berikut di tingkat aplikasi:`KPUs`,,,, `cpuUtilization` `heapMemoryUtilization``oldGenerationGCTime`, `oldGenerationGCCount` dan. `threadCount` Selain itu, ini memancarkan metrik yang ditunjukkan dalam tabel berikut, juga pada tingkat aplikasi.


****  

| Metrik | Unit | Deskripsi | Nama Prometheus | 
| --- | --- | --- | --- | 
| zeppelinCpuUtilization | Persentase | Persentase keseluruhan pemanfaatan CPU di server Apache Zeppelin. | process\$1cpu\$1usage | 
| zeppelinHeapMemoryUtilization | Persentase | Persentase keseluruhan pemanfaatan memori tumpukan untuk server Apache Zeppelin. | jvm\$1memory\$1used\$1bytes | 
| zeppelinThreadCount | Hitungan | Jumlah total utas langsung yang digunakan oleh server Apache Zeppelin. | jvm\$1threads\$1live\$1threads | 
| zeppelinWaitingJobs | Hitungan | Jumlah antrian tugas Apache Zeppelin yang menunggu utas. | jetty\$1threads\$1jobs | 
| zeppelinServerUptime | Detik | Total waktu server aktif dan berjalan. | process\$1uptime\$1seconds | 

# Lihat CloudWatch metrik
<a name="metrics-dimensions-viewing"></a>

Anda dapat melihat CloudWatch metrik untuk aplikasi Anda menggunakan CloudWatch konsol Amazon atau. AWS CLI

**Untuk melihat metrik menggunakan konsol CloudWatch**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi, pilih **Metrik**.

1. Di panel **CloudWatch Metrik menurut Kategori** untuk Layanan Terkelola untuk Apache Flink, pilih kategori metrik.

1. Di panel atas, gulir untuk melihat daftar lengkap metrik.

**Untuk melihat metrik menggunakan AWS CLI**
+ Pada prompt perintah, gunakan perintah berikut.

  ```
  1. aws cloudwatch list-metrics --namespace "AWS/KinesisAnalytics" --region region
  ```

# Tetapkan CloudWatch tingkat pelaporan metrik
<a name="cloudwatch-logs-levels"></a>

Anda dapat mengontrol tingkat metrik aplikasi yang dibuat aplikasi Anda. Layanan Terkelola untuk Apache Flink mendukung tingkat metrik berikut:
+ **Application** (Aplikasi): Aplikasi hanya melaporkan tingkat metrik tertinggi untuk setiap aplikasi. Layanan Terkelola untuk metrik Apache Flink dipublikasikan di tingkat Aplikasi secara default.
+ **Task** (Tugas): Aplikasi ini melaporkan dimensi metrik khusus tugas untuk metrik yang ditentukan dengan tingkat pelaporan metrik Tugas, seperti jumlah catatan masuk dan keluar dari aplikasi per detik.
+ **Operator:** Aplikasi ini melaporkan dimensi metrik khusus operator untuk metrik yang ditentukan dengan tingkat pelaporan metrik Operator, seperti metrik untuk setiap operasi filter atau peta.
+ **Paralelism** (Paralelisme) Aplikasi melaporkan metrik tingkat `Task` dan `Operator` untuk setiap utas eksekusi. Tingkat pelaporan ini tidak disarankan untuk aplikasi dengan pengaturan Paralelisme di atas 64 karena biaya yang berlebihan. 
**catatan**  
Anda hanya harus menggunakan tingkat metrik ini untuk pemecahan masalah karena jumlah data metrik yang dihasilkan layanan. Anda hanya dapat mengatur tingkat metrik ini menggunakan CLI. Tingkat metrik ini tidak tersedia di konsol.

Tingkat default adalah **Application** (Aplikasi). Aplikasi melaporkan metrik pada tingkat saat ini dan semua tingkat yang lebih tinggi. Misalnya, jika tingkat pelaporan diatur ke **Operator**, aplikasi melaporkan metrik **Application** (Aplikasi), **Task** (Tugas), dan **Operator** (Operator).

Anda menetapkan tingkat pelaporan CloudWatch metrik menggunakan `MonitoringConfiguration` parameter [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)tindakan, atau `MonitoringConfigurationUpdate` parameter [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)tindakan. Contoh permintaan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)tindakan berikut ini menetapkan tingkat pelaporan CloudWatch metrik ke **Tugas**:

```
{
   "ApplicationName": "MyApplication",  
   "CurrentApplicationVersionId": 4,
   "ApplicationConfigurationUpdate": { 
      "FlinkApplicationConfigurationUpdate": { 
         "MonitoringConfigurationUpdate": { 
            "ConfigurationTypeUpdate": "CUSTOM",
            "MetricsLevelUpdate": "TASK"
         }
      }
   }
}
```

Anda juga dapat mengonfigurasi tingkat pencatatan menggunakan parameter `LogLevel` dari tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) atau parameter `LogLevelUpdate` dari tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html). Anda dapat menggunakan tingkat log berikut:
+ `ERROR`: Mencatat peristiwa kesalahan yang berpotensi dapat dipulihkan
+ `WARN`: Mencatat peristiwa peringatan yang mungkin menyebabkan kesalahan.
+ `INFO`: Mencatat peristiwa informasi.
+ `DEBUG`: Mencatat peristiwa debugging umum. 

Untuk informasi selengkapnya tentang tingkat pencatatan Log4j, lihat [Tingkat Log Kustom](https://logging.apache.org/log4j/2.x/manual/customloglevels.html) di dokumentasi [Apache Log4j](https://logging.apache.org/log4j/2.x/).

# Menggunakan metrik kustom dengan Amazon Managed Service untuk Apache Flink
<a name="monitoring-metrics-custom"></a>

Layanan Terkelola untuk Apache Flink memaparkan 19 metrik CloudWatch, termasuk metrik untuk penggunaan dan throughput sumber daya. Selain itu, Anda dapat membuat metrik sendiri untuk melacak data khusus aplikasi, seperti memproses peristiwa atau mengakses sumber daya eksternal.

**Topics**
+ [Cara kerjanya](#monitoring-metrics-custom-howitworks)
+ [Lihat contoh untuk membuat kelas pemetaan](#monitoring-metrics-custom-examples)
+ [Lihat metrik khusus](#monitoring-metrics-custom-examples-viewing)

## Cara kerjanya
<a name="monitoring-metrics-custom-howitworks"></a>

Metrik kustom dalam Layanan Terkelola untuk Apache Flink menggunakan sistem metrik Apache Flink. Metrik Apache Flink memiliki atribut berikut:
+ **Type** (Tipe): Tipe metrik menjelaskan cara mengukur dan melaporkan data. Tipe metrik Apache Flink yang tersedia termasuk Count, Gauge, Histogram, dan Meter. Untuk informasi selengkapnya tentang tipe metrik Apache Flink, lihat [Tipe Metrik](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html#metric-types).
**catatan**  
AWS CloudWatch Metrik tidak mendukung jenis metrik Histogram Apache Flink. CloudWatch hanya dapat menampilkan metrik Apache Flink dari tipe Count, Gauge, dan Meter.
+ **Lingkup:** Ruang lingkup metrik terdiri dari pengenal dan satu set pasangan nilai kunci yang menunjukkan bagaimana metrik akan dilaporkan. CloudWatch Pengidentifikasi metrik terdiri dari hal berikut:
  + Cakupan sistem, yang menunjukkan tingkat tempat metrik dilaporkan (misalnya Operator).
  + Cakupan pengguna, yang menentukan atribut seperti variabel pengguna atau nama grup metrik. Atribut ini didefinisikan menggunakan [https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-java.lang.String-](https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-java.lang.String-)atau [https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-](https://ci.apache.org/projects/flink/flink-docs-master/api/java/org/apache/flink/metrics/MetricGroup.html#addGroup-java.lang.String-).

  Untuk informasi selengkapnya tentang cakupan metrik, lihat [Cakupan](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html#scope).

Untuk informasi selengkapnya tentang metrik Apache Flink, lihat [Metrik](https://nightlies.apache.org/flink/flink-docs-release-1.15/monitoring/metrics.html) di [Dokumentasi Apache Flink](https://nightlies.apache.org/flink/flink-docs-release-1.15/).

Untuk membuat metrik kustom di Managed Service for Apache Flink, Anda dapat mengakses sistem metrik Apache Flink dari fungsi pengguna apa pun yang diperluas dengan menelepon. `RichFunction` [https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/api/common/functions/RuntimeContext.html#getMetricGroup--](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/api/common/functions/RuntimeContext.html#getMetricGroup--) Metode ini mengembalikan [MetricGroup](https://nightlies.apache.org/flink/flink-docs-release-1.15/api/java/org/apache/flink/metrics/MetricGroup.html)objek yang dapat Anda gunakan untuk membuat dan mendaftarkan metrik kustom. Layanan Terkelola untuk Apache Flink melaporkan semua metrik yang dibuat dengan kunci grup. `KinesisAnalytics` CloudWatch Metrik kustom yang Anda tentukan memiliki karakteristik sebagai berikut:
+ Metrik kustom Anda memiliki nama metrik dan nama grup. [Nama-nama ini harus terdiri dari karakter alfanumerik menurut aturan penamaan Prometheus.](https://prometheus.io/docs/instrumenting/writing_exporters/#naming)
+ Atribut yang Anda tentukan dalam lingkup pengguna (kecuali untuk grup `KinesisAnalytics` metrik) diterbitkan sebagai CloudWatch dimensi.
+ Metrik kustom dipublikasikan di tingkat `Application` secara default.
+ Dimensi (Task/ Operator /Paralelism) ditambahkan ke metrik berdasarkan tingkat pemantauan aplikasi. Anda mengatur tingkat pemantauan aplikasi menggunakan [MonitoringConfiguration](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfiguration.html)parameter [CreateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html)tindakan, atau [MonitoringConfigurationUpdate](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)parameter [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)tindakan.

## Lihat contoh untuk membuat kelas pemetaan
<a name="monitoring-metrics-custom-examples"></a>

Contoh kode berikut menunjukkan cara membuat kelas pemetaan yang membuat dan menambah metrik kustom, dan bagaimana menerapkan kelas pemetaan dalam aplikasi Anda dengan menambahkannya ke objek. `DataStream`

### Rekam hitungan metrik kustom
<a name="monitoring-metrics-custom-examples-recordcount"></a>

Contoh kode berikut menunjukkan cara membuat kelas pemetaan yang membuat metrik yang menghitung catatan dalam aliran data (fungsionalitas yang sama seperti metrik `numRecordsIn`):

```
    private static class NoOpMapperFunction extends RichMapFunction<String, String> {
        private transient int valueToExpose = 0;
        private final String customMetricName;
 
        public NoOpMapperFunction(final String customMetricName) {
            this.customMetricName = customMetricName;
        }
 
        @Override
        public void open(Configuration config) {
            getRuntimeContext().getMetricGroup()
                    .addGroup("KinesisAnalytics")
                    .addGroup("Program", "RecordCountApplication")
                    .addGroup("NoOpMapperFunction")
                    .gauge(customMetricName, (Gauge<Integer>) () -> valueToExpose);
        }
 
        @Override
        public String map(String value) throws Exception {
            valueToExpose++;
            return value;
        }
    }
```

Dalam contoh sebelumnya, variabel `valueToExpose` ditingkatkan untuk setiap catatan yang diproses aplikasi. 

Setelah menentukan kelas pemetaan, Anda selanjutnya membuat aliran dalam aplikasi yang mengimplementasikan peta:

```
DataStream<String> noopMapperFunctionAfterFilter =
    kinesisProcessed.map(new NoOpMapperFunction("FilteredRecords"));
```

Untuk kode lengkap aplikasi ini, lihat [Aplikasi Metrik Kustom Hitungan Catatan](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics/RecordCount).

### Metrik kustom hitungan kata
<a name="monitoring-metrics-custom-examples-wordcount"></a>

Contoh kode berikut menunjukkan cara membuat kelas pemetaan yang membuat metrik yang menghitung kata dalam aliran data:

```
private static final class Tokenizer extends RichFlatMapFunction<String, Tuple2<String, Integer>> {
     
            private transient Counter counter;
     
            @Override
            public void open(Configuration config) {
                this.counter = getRuntimeContext().getMetricGroup()
                        .addGroup("KinesisAnalytics")
                        .addGroup("Service", "WordCountApplication")
                        .addGroup("Tokenizer")
                        .counter("TotalWords");
            }
     
            @Override
            public void flatMap(String value, Collector<Tuple2<String, Integer>>out) {
                // normalize and split the line
                String[] tokens = value.toLowerCase().split("\\W+");
     
                // emit the pairs
                for (String token : tokens) {
                    if (token.length() > 0) {
                        counter.inc();
                        out.collect(new Tuple2<>(token, 1));
                    }
                }
            }
        }
```

Dalam contoh sebelumnya, variabel `counter` ditingkatkan untuk setiap kata yang diproses aplikasi. 

Setelah menentukan kelas pemetaan, Anda selanjutnya membuat aliran dalam aplikasi yang mengimplementasikan peta:

```
// Split up the lines in pairs (2-tuples) containing: (word,1), and
// group by the tuple field "0" and sum up tuple field "1"
DataStream<Tuple2<String, Integer>> wordCountStream = input.flatMap(new Tokenizer()).keyBy(0).sum(1);
     
// Serialize the tuple to string format, and publish the output to kinesis sink
wordCountStream.map(tuple -> tuple.toString()).addSink(createSinkFromStaticConfig());
```

Untuk kode lengkap aplikasi ini, lihat [Aplikasi Metrik Kustom Hitungan Kata](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/java/CustomMetrics/WordCount).

## Lihat metrik khusus
<a name="monitoring-metrics-custom-examples-viewing"></a>

Metrik khusus untuk aplikasi Anda muncul di konsol CloudWatch Metrik di **AWS/KinesisAnalytics**dasbor, di bawah grup metrik **Aplikasi**. 

# Gunakan CloudWatch Alarm dengan Amazon Managed Service untuk Apache Flink
<a name="monitoring-metrics-alarms"></a>

Menggunakan alarm CloudWatch metrik Amazon, Anda menonton CloudWatch metrik selama periode waktu yang Anda tentukan. Alarm tersebut melakukan satu atau beberapa tindakan berdasarkan pada nilai metrik atau ekspresi relatif terhadap ambang batas selama beberapa periode waktu. Contoh tindakan mengirim pemberitahuan ke topik Amazon Simple Notification Service (Amazon SNS). 

Untuk informasi selengkapnya tentang CloudWatch alarm, lihat [Menggunakan CloudWatch Alarm Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html).

## Tinjau alarm yang direkomendasikan
<a name="monitoring-metrics-alarms-recommended"></a>

Bagian ini berisi alarm yang direkomendasikan untuk memantau Layanan Terkelola untuk aplikasi Apache Flink.

Tabel menjelaskan alarm yang direkomendasikan dan memiliki kolom berikut:
+ **Metric Expression** (Ekspresi Metrik): Metrik atau ekspresi metrik untuk menguji ambang.
+ **Statistic** (Statistik): Statistik yang digunakan untuk memeriksa metrik—misalnya, **Rata-rata**.
+ **Threshold** (Ambang): Menggunakan alarm ini mengharuskan Anda menentukan ambang yang menentukan batas performa aplikasi yang diharapkan. Anda perlu menentukan ambang ini dengan memantau aplikasi Anda dalam kondisi normal.
+ **Description** (Deskripsi): Penyebab yang mungkin memicu alarm ini, dan kemungkinan solusi untuk kondisi.


| Ekspresi Metrik | Statistik | Ambang | Deskripsi | 
| --- |--- |--- |--- |
| downtime> 0 | Rata-rata | 0 |  Waktu henti yang lebih besar dari nol menunjukkan bahwa aplikasi telah gagal. Jika nilainya lebih besar dari 0, aplikasi tidak memproses data apa pun. Direkomendasikan untuk semua aplikasi. DowntimeMetrik mengukur durasi pemadaman. Waktu henti yang lebih besar dari nol menunjukkan bahwa aplikasi telah gagal. Untuk pemecahan masalah, lihat. [Aplikasi dimulai ulang](troubleshooting-rt-restarts.md) | 
| RATE (numberOfFailedCheckpoints)> 0 | Rata-rata | 0 | Metrik ini menghitung jumlah pos pemeriksaan yang gagal sejak aplikasi dimulai. Tergantung pada aplikasinya, itu bisa ditoleransi jika pos pemeriksaan gagal sesekali. Tetapi jika pos pemeriksaan secara teratur gagal, aplikasi tersebut kemungkinan tidak sehat dan perlu perhatian lebih lanjut. Kami merekomendasikan pemantauan RATE (numberOfFailedCheckpoints) untuk alarm pada gradien dan bukan pada nilai absolut. Direkomendasikan untuk semua aplikasi. Gunakan metrik ini untuk memantau kesehatan aplikasi dan kemajuan pos pemeriksaan. Aplikasi menyimpan data negara ke pos pemeriksaan saat sehat. Checkpointing dapat gagal karena batas waktu jika aplikasi tidak membuat kemajuan dalam memproses data input. Untuk pemecahan masalah, lihat. [Waktu titik checkpointing](troubleshooting-chk-timeout.md) | 
| Operator.numRecordsOutPerSecond< ambang | Rata-rata | Jumlah minimum catatan yang dipancarkan dari aplikasi selama kondisi normal.  | Direkomendasikan untuk semua aplikasi. Jatuh di bawah ambang batas ini dapat menunjukkan bahwa aplikasi tidak membuat kemajuan yang diharapkan pada data input. Untuk pemecahan masalah, lihat. [Throughput terlalu lambat](troubleshooting-rt-throughput.md) | 
| records\$1lag\$1max\$1millisbehindLatest> ambang | Maksimum | Latensi maksimum yang diharapkan selama kondisi normal. | Jika aplikasi menggunakan Kinesis atau Kafka, metrik ini menunjukkan apakah aplikasi tertinggal dan perlu diskalakan untuk mengikuti beban saat ini. Ini adalah metrik generik yang baik yang mudah dilacak untuk semua jenis aplikasi. Tetapi itu hanya dapat digunakan untuk penskalaan reaktif, yaitu, ketika aplikasi sudah tertinggal. Direkomendasikan untuk semua aplikasi. Gunakan records\$1lag\$1max metrik untuk sumber Kafka, atau millisbehindLatest untuk sumber aliran Kinesis. Naik di atas ambang batas ini dapat menunjukkan bahwa aplikasi tidak membuat kemajuan yang diharapkan pada data input. Untuk pemecahan masalah, lihat. [Throughput terlalu lambat](troubleshooting-rt-throughput.md) | 
| lastCheckpointDuration> ambang | Maksimum | Durasi pos pemeriksaan maksimum yang diharapkan selama kondisi normal. | Memantau berapa banyak data yang disimpan dalam keadaan dan berapa lama waktu yang dibutuhkan untuk mengambil pos pemeriksaan. Jika pos pemeriksaan bertambah atau memakan waktu lama, aplikasi terus menghabiskan waktu untuk pos pemeriksaan dan memiliki lebih sedikit siklus untuk pemrosesan yang sebenarnya. Di beberapa titik, pos pemeriksaan mungkin tumbuh terlalu besar atau memakan waktu lama sehingga gagal. Selain memantau nilai absolut, pelanggan juga harus mempertimbangkan untuk memantau tingkat perubahan dengan RATE(lastCheckpointSize) danRATE(lastCheckpointDuration). Jika lastCheckpointDuration terus meningkat, naik di atas ambang batas ini dapat menunjukkan bahwa aplikasi tidak membuat kemajuan yang diharapkan pada data input, atau bahwa ada masalah dengan kesehatan aplikasi seperti tekanan balik. Untuk pemecahan masalah, lihat. [Pertumbuhan negara tak terbatas](troubleshooting-rt-stateleaks.md) | 
| lastCheckpointSize> ambang | Maksimum | Ukuran pos pemeriksaan maksimum yang diharapkan selama kondisi normal. | Memantau berapa banyak data yang disimpan dalam keadaan dan berapa lama waktu yang dibutuhkan untuk mengambil pos pemeriksaan. Jika pos pemeriksaan bertambah atau memakan waktu lama, aplikasi terus menghabiskan waktu untuk pos pemeriksaan dan memiliki lebih sedikit siklus untuk pemrosesan yang sebenarnya. Di beberapa titik, pos pemeriksaan mungkin tumbuh terlalu besar atau memakan waktu lama sehingga gagal. Selain memantau nilai absolut, pelanggan juga harus mempertimbangkan untuk memantau tingkat perubahan dengan RATE(lastCheckpointSize) danRATE(lastCheckpointDuration). Jika lastCheckpointSize terus meningkat, naik di atas ambang batas ini dapat menunjukkan bahwa aplikasi mengumpulkan data status. Jika data status menjadi terlalu besar, aplikasi dapat kehabisan memori saat pulih dari pos pemeriksaan, atau pemulihan dari pos pemeriksaan mungkin memakan waktu terlalu lama. Untuk pemecahan masalah, lihat. [Pertumbuhan negara tak terbatas](troubleshooting-rt-stateleaks.md) | 
| heapMemoryUtilization> ambang | Maksimum | Ini memberikan indikasi yang baik tentang pemanfaatan sumber daya aplikasi secara keseluruhan dan dapat digunakan untuk penskalaan proaktif kecuali aplikasi terikat. I/O heapMemoryUtilizationUkuran maksimum yang diharapkan selama kondisi normal, dengan nilai yang disarankan 90 persen. | Anda dapat menggunakan metrik ini untuk memantau pemanfaatan memori maksimum pengelola tugas di seluruh aplikasi. Jika aplikasi mencapai ambang ini, Anda perlu menyediakan lebih banyak sumber daya. Anda melakukan ini dengan mengaktifkan penskalaan otomatis atau meningkatkan paralelisme aplikasi. Untuk informasi lebih lanjut tentang meningkatkan sumber daya, lihat[Menerapkan penskalaan aplikasi](how-scaling.md). | 
| cpuUtilization> ambang | Maksimum | Ini memberikan indikasi yang baik tentang pemanfaatan sumber daya aplikasi secara keseluruhan dan dapat digunakan untuk penskalaan proaktif kecuali aplikasi terikat. I/O cpuUtilizationUkuran maksimum yang diharapkan selama kondisi normal, dengan nilai yang disarankan 80 persen. | Anda dapat menggunakan metrik ini untuk memantau pemanfaatan CPU maksimum pengelola tugas di seluruh aplikasi. Jika aplikasi mencapai ambang batas ini, Anda perlu menyediakan lebih banyak sumber daya Anda melakukan ini dengan mengaktifkan penskalaan otomatis atau meningkatkan paralelisme aplikasi. Untuk informasi lebih lanjut tentang meningkatkan sumber daya, lihat[Menerapkan penskalaan aplikasi](how-scaling.md). | 
| threadsCount> ambang | Maksimum | threadsCountUkuran maksimum yang diharapkan selama kondisi normal. | Anda dapat menggunakan metrik ini untuk melihat kebocoran utas di pengelola tugas di seluruh aplikasi. Jika metrik ini mencapai ambang batas ini, periksa kode aplikasi Anda untuk utas yang dibuat tanpa ditutup. | 
| (oldGarbageCollectionTime \$1 100)/60\$1000 over 1 min period')> ambang | Maksimum | oldGarbageCollectionTimeDurasi maksimum yang diharapkan. Kami merekomendasikan untuk menetapkan ambang batas sehingga waktu pengumpulan sampah tipikal adalah 60 persen dari ambang batas yang ditentukan, tetapi ambang batas yang benar untuk aplikasi Anda akan bervariasi. | Jika metrik ini terus meningkat, ini dapat menunjukkan bahwa ada kebocoran memori di pengelola tugas di seluruh aplikasi. | 
| RATE(oldGarbageCollectionCount) > ambang | Maksimum | Maksimum yang diharapkan oldGarbageCollectionCount dalam kondisi normal. Ambang batas yang benar untuk aplikasi Anda akan bervariasi. | Jika metrik ini terus meningkat, ini dapat menunjukkan bahwa ada kebocoran memori di pengelola tugas di seluruh aplikasi. | 
| Operator.currentOutputWatermark - Operator.currentInputWatermark > ambang | Minimum | Peningkatan watermark minimum yang diharapkan dalam kondisi normal. Ambang batas yang benar untuk aplikasi Anda akan bervariasi. | Jika metrik ini terus meningkat, ini dapat menunjukkan bahwa aplikasi sedang memproses peristiwa yang semakin lama, atau bahwa subtugas hulu belum mengirim tanda air dalam waktu yang semakin lama. | 

# Menulis pesan khusus ke CloudWatch Log
<a name="cloudwatch-logs-writing"></a>

Anda dapat menulis pesan khusus ke Layanan Terkelola untuk log aplikasi Apache Flink. CloudWatch Anda melakukannya menggunakan pustaka [https://logging.apache.org/log4j/](https://logging.apache.org/log4j/) Apache atau pustaka [https://www.slf4j.org/](https://www.slf4j.org/).

**Topics**
+ [Menulis ke CloudWatch log menggunakan Log4J](#cloudwatch-logs-writing-log4j)
+ [Menulis ke CloudWatch log menggunakan SLF4 J](#cloudwatch-logs-writing-slf4j)

## Menulis ke CloudWatch log menggunakan Log4J
<a name="cloudwatch-logs-writing-log4j"></a>

1. Tambahkan dependensi berikut ke file `pom.xml` aplikasi Anda:

   ```
   <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
       <version>2.6.1</version>
   </dependency>
   <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
       <version>2.6.1</version>
   </dependency>
   ```

1. Sertakan objek dari pustaka:

   ```
   import org.apache.logging.log4j.Logger;
   ```

1. Beri contoh objek `Logger`, yang meneruskan di kelas aplikasi Anda:

   ```
   private static final Logger log = LogManager.getLogger.getLogger(YourApplicationClass.class);
   ```

1. Tulis ke log menggunakan `log.info`. Sejumlah besar pesan ditulis ke log aplikasi. Untuk membuat pesan kustom Anda lebih mudah difilter, gunakan tingkat log aplikasi `INFO`.

   ```
   log.info("This message will be written to the application's CloudWatch log");
   ```

Aplikasi ini menulis catatan ke log dengan pesan yang serupa dengan berikut ini:

```
{
  "locationInformation": "com.amazonaws.services.managed-flink.StreamingJob.main(StreamingJob.java:95)", 
  "logger": "com.amazonaws.services.managed-flink.StreamingJob", 
  "message": "This message will be written to the application's CloudWatch log", 
  "threadName": "Flink-DispatcherRestEndpoint-thread-2", 
  "applicationARN": "arn:aws:kinesisanalyticsus-east-1:123456789012:application/test", 
  "applicationVersionId": "1", "messageSchemaVersion": "1", 
  "messageType": "INFO" 
}
```

## Menulis ke CloudWatch log menggunakan SLF4 J
<a name="cloudwatch-logs-writing-slf4j"></a>

1. Tambahkan dependensi berikut ke file `pom.xml` aplikasi Anda:

   ```
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.7</version>
       <scope>runtime</scope>
   </dependency>
   ```

1. Sertakan objek dari pustaka:

   ```
   import org.slf4j.Logger;
   import org.slf4j.LoggerFactory;
   ```

1. Beri contoh objek `Logger`, yang meneruskan di kelas aplikasi Anda:

   ```
   private static final Logger log = LoggerFactory.getLogger(YourApplicationClass.class);
   ```

1. Tulis ke log menggunakan `log.info`. Sejumlah besar pesan ditulis ke log aplikasi. Untuk membuat pesan kustom Anda lebih mudah difilter, gunakan tingkat log aplikasi `INFO`.

   ```
   log.info("This message will be written to the application's CloudWatch log");
   ```

Aplikasi ini menulis catatan ke log dengan pesan yang serupa dengan berikut ini:

```
{
  "locationInformation": "com.amazonaws.services.managed-flink.StreamingJob.main(StreamingJob.java:95)", 
  "logger": "com.amazonaws.services.managed-flink.StreamingJob", 
  "message": "This message will be written to the application's CloudWatch log", 
  "threadName": "Flink-DispatcherRestEndpoint-thread-2", 
  "applicationARN": "arn:aws:kinesisanalyticsus-east-1:123456789012:application/test", 
  "applicationVersionId": "1", "messageSchemaVersion": "1", 
  "messageType": "INFO" 
}
```

# Log Managed Service untuk panggilan Apache Flink API dengan AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

Managed Service for Apache Flink terintegrasi dengan AWS CloudTrail, layanan yang menyediakan catatan tindakan yang diambil oleh pengguna, peran, atau AWS layanan di Managed Service untuk Apache Flink. CloudTrail menangkap semua panggilan API untuk Managed Service untuk Apache Flink sebagai event. Panggilan yang diambil termasuk panggilan dari Layanan Terkelola untuk konsol Apache Flink dan panggilan kode ke Layanan Terkelola untuk operasi API Apache Flink. Jika Anda membuat jejak, Anda dapat mengaktifkan pengiriman CloudTrail acara secara terus menerus ke bucket Amazon S3, termasuk peristiwa untuk Layanan Terkelola untuk Apache Flink. Jika Anda tidak mengonfigurasi jejak, Anda masih dapat melihat peristiwa terbaru di CloudTrail konsol dalam **Riwayat acara**. Dengan menggunakan informasi yang dikumpulkan oleh CloudTrail, Anda dapat menentukan permintaan yang dibuat untuk Layanan Terkelola untuk Apache Flink, alamat IP dari mana permintaan dibuat, siapa yang membuat permintaan, kapan dibuat, dan detail tambahan. 

Untuk mempelajari selengkapnya CloudTrail, lihat [Panduan AWS CloudTrail Pengguna](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/).

## Layanan Terkelola untuk informasi Apache Flink di CloudTrail
<a name="service-name-info-in-cloudtrail"></a>

CloudTrail diaktifkan di AWS akun Anda saat Anda membuat akun. Ketika aktivitas terjadi di Layanan Terkelola untuk Apache Flink, aktivitas tersebut direkam dalam suatu CloudTrail peristiwa bersama dengan peristiwa AWS layanan lainnya dalam riwayat **Acara**. Anda dapat melihat, mencari, dan mengunduh acara terbaru di AWS akun Anda. Untuk informasi selengkapnya, lihat [Melihat Acara dengan Riwayat CloudTrail Acara](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html). 

Untuk catatan peristiwa yang sedang berlangsung di AWS akun Anda, termasuk acara untuk Layanan Terkelola untuk Apache Flink, buat jejak. *Jejak* memungkinkan CloudTrail untuk mengirimkan file log ke bucket Amazon S3. Secara default, saat Anda membuat jejak di konsol, jejak tersebut berlaku untuk semua AWS Wilayah. Jejak mencatat peristiwa dari semua Wilayah di AWS partisi dan mengirimkan file log ke bucket Amazon S3 yang Anda tentukan. Selain itu, Anda dapat mengonfigurasi AWS layanan lain untuk menganalisis lebih lanjut dan menindaklanjuti data peristiwa yang dikumpulkan dalam CloudTrail log. Untuk informasi selengkapnya, lihat berikut: 
+ [Gambaran Umum untuk Membuat Jejak](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail Layanan dan Integrasi yang Didukung](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [Mengkonfigurasi Notifikasi Amazon SNS untuk CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/getting_notifications_top_level.html)
+ [Menerima File CloudTrail Log dari Beberapa Wilayah](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) dan [Menerima File CloudTrail Log dari Beberapa Akun](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

Semua Layanan Terkelola untuk tindakan Apache Flink dicatat oleh CloudTrail dan didokumentasikan dalam referensi API [Managed Service for Apache Flink](/managed-flink/latest/apiv2/Welcome.html). Misalnya, panggilan ke `[CreateApplication](/managed-flink/latest/apiv2/API_CreateApplication.html)` dan ` [UpdateApplication](/managed-flink/latest/apiv2/API_UpdateApplication.html)` tindakan menghasilkan entri dalam file CloudTrail log. 

Setiap entri peristiwa atau log berisi informasi tentang entitas yang membuat permintaan tersebut. Informasi identitas membantu Anda menentukan hal berikut ini: 
+ Apakah permintaan itu dibuat dengan kredenal pengguna root atau AWS Identity and Access Management (IAM).
+ Apakah permintaan tersebut dibuat dengan kredensial keamanan sementara untuk satu peran atau pengguna gabungan.
+ Apakah permintaan itu dibuat oleh AWS layanan lain.

Untuk informasi lain, lihat [Elemen userIdentity CloudTrail ](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html).

## Memahami Layanan Terkelola untuk entri file log Apache Flink
<a name="understanding-service-name-entries"></a>

Trail adalah konfigurasi yang memungkinkan pengiriman peristiwa sebagai file log ke bucket Amazon S3 yang Anda tentukan. CloudTrail file log berisi satu atau lebih entri log. Peristiwa mewakili permintaan tunggal dari sumber manapun dan mencakup informasi tentang tindakan yang diminta, tanggal dan waktu tindakan, parameter permintaan, dan sebagainya. CloudTrail file log bukanlah jejak tumpukan yang diurutkan dari panggilan API publik, sehingga file tersebut tidak muncul dalam urutan tertentu. 

Contoh berikut menunjukkan entri CloudTrail log yang menunjukkan [AddApplicationCloudWatchLoggingOption](/managed-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)dan [DescribeApplication](/managed-flink/latest/apiv2/API_DescribeApplication.html)tindakan.

```
{
    "Records": [
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2019-03-07T01:19:47Z",
            "eventSource": "kinesisanlaytics.amazonaws.com",
            "eventName": "AddApplicationCloudWatchLoggingOption",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "applicationName": "cloudtrail-test",
                "currentApplicationVersionId": 1,
                "cloudWatchLoggingOption": {
                    "logStreamARN": "arn:aws:logs:us-east-1:012345678910:log-group:cloudtrail-test:log-stream:flink-cloudwatch"
                }
            },
            "responseElements": {
                "cloudWatchLoggingOptionDescriptions": [
                    {
                        "cloudWatchLoggingOptionId": "2.1",
                        "logStreamARN": "arn:aws:logs:us-east-1:012345678910:log-group:cloudtrail-test:log-stream:flink-cloudwatch"
                    }
                ],
                "applicationVersionId": 2,
                "applicationARN": "arn:aws:kinesisanalyticsus-east-1:012345678910:application/cloudtrail-test"
            },
            "requestID": "18dfb315-4077-11e9-afd3-67f7af21e34f",
            "eventID": "d3c9e467-db1d-4cab-a628-c21258385124",
            "eventType": "AwsApiCall",
            "apiVersion": "2018-05-23",
            "recipientAccountId": "012345678910"
        },
        {
            "eventVersion": "1.05",
            "userIdentity": {
                "type": "IAMUser",
                "principalId": "EX_PRINCIPAL_ID",
                "arn": "arn:aws:iam::012345678910:user/Alice",
                "accountId": "012345678910",
                "accessKeyId": "EXAMPLE_KEY_ID",
                "userName": "Alice"
            },
            "eventTime": "2019-03-12T02:40:48Z",
            "eventSource": "kinesisanlaytics.amazonaws.com",
            "eventName": "DescribeApplication",
            "awsRegion": "us-east-1",
            "sourceIPAddress": "127.0.0.1",
            "userAgent": "aws-sdk-java/unknown-version Linux/x.xx",
            "requestParameters": {
                "applicationName": "sample-app"
            },
            "responseElements": null,
            "requestID": "3e82dc3e-4470-11e9-9d01-e789c4e9a3ca",
            "eventID": "90ffe8e4-9e47-48c9-84e1-4f2d427d98a5",
            "eventType": "AwsApiCall",
            "apiVersion": "2018-05-23",
            "recipientAccountId": "012345678910"
        }
    ]
}
```