

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

# Mengirim log fungsi Lambda ke Log CloudWatch
<a name="monitoring-cloudwatchlogs"></a>

Secara default, Lambda secara otomatis menangkap log untuk semua pemanggilan fungsi dan mengirimkannya ke CloudWatch Log, asalkan peran eksekusi fungsi Anda memiliki izin yang diperlukan. Log ini, secara default, disimpan dalam grup lognamed /aws/lambda/*<function-name>*. Untuk meningkatkan debugging, Anda dapat menyisipkan pernyataan logging kustom ke dalam kode Anda, yang Lambda akan terintegrasi dengan mulus dengan Log. CloudWatch Jika diperlukan, Anda dapat mengonfigurasi fungsi Anda untuk mengirim log ke grup lain menggunakan konsol Lambda, AWS CLI, atau Lambda API. Lihat [Mengkonfigurasi grup CloudWatch log](monitoring-cloudwatchlogs-loggroups.md) untuk mempelajari selengkapnya.

Anda dapat melihat log untuk fungsi Lambda menggunakan konsol Lambda, konsol, AWS Command Line Interface (AWS CLI), atau API. CloudWatch CloudWatch Untuk informasi lebih lanjut, lihat ke[Melihat CloudWatch log untuk fungsi Lambda](monitoring-cloudwatchlogs-view.md).

**catatan**  
Mungkin diperlukan waktu 5 hingga 10 menit agar log muncul setelah pemanggilan fungsi.

## Izin IAM yang diperlukan
<a name="monitoring-cloudwatchlogs-prereqs"></a>

[Peran eksekusi](lambda-intro-execution-role.md) Anda memerlukan izin berikut untuk mengunggah log ke CloudWatch Log:
+ `logs:CreateLogGroup`
+ `logs:CreateLogStream`
+ `logs:PutLogEvents`

*Untuk mempelajari selengkapnya, lihat [Menggunakan kebijakan berbasis identitas (kebijakan IAM) untuk Log CloudWatch di Panduan Pengguna](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-identity-based-access-control-cwl.html) Amazon. CloudWatch *

Anda dapat menambahkan izin CloudWatch Log ini menggunakan kebijakan `AWSLambdaBasicExecutionRole` AWS terkelola yang disediakan oleh Lambda. Untuk menambahkan kebijakan ini ke peran Anda, jalankan perintah berikut:

```
aws iam attach-role-policy --role-name your-role --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
```

Untuk informasi selengkapnya, lihat [Bekerja dengan kebijakan AWS terkelola dalam peran eksekusi](permissions-managed-policies.md).

## Harga
<a name="monitoring-cloudwatchlogs-pricing"></a>

Tidak ada biaya tambahan untuk menggunakan log Lambda; namun, biaya CloudWatch Log standar berlaku. Untuk informasi lebih lanjut, lihat [ Harga CloudWatch ](https://aws.amazon.com/cloudwatch/pricing/).

# Mengkonfigurasi grup CloudWatch log
<a name="monitoring-cloudwatchlogs-loggroups"></a>

Secara default, CloudWatch secara otomatis membuat grup log bernama `/aws/lambda/<function name>` untuk fungsi Anda saat pertama kali dipanggil. Untuk mengonfigurasi fungsi Anda untuk mengirim log ke grup log yang ada, atau untuk membuat grup log baru untuk fungsi Anda, Anda dapat menggunakan konsol Lambda atau. AWS CLI Anda juga dapat mengonfigurasi grup log kustom menggunakan perintah API [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)dan [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)Lambda dan sumber daya AWS Serverless Application Model (AWS SAM) [AWS: :Serverless: :Function]().

Anda dapat mengonfigurasi beberapa fungsi Lambda untuk mengirim log ke grup log yang sama CloudWatch . Misalnya, Anda dapat menggunakan grup log tunggal untuk menyimpan log untuk semua fungsi Lambda yang membentuk aplikasi tertentu. Saat Anda menggunakan grup log kustom untuk fungsi Lambda, aliran log yang dibuat Lambda menyertakan nama fungsi dan versi fungsi. Ini memastikan bahwa pemetaan antara pesan log dan fungsi dipertahankan, bahkan jika Anda menggunakan grup log yang sama untuk beberapa fungsi.

Format penamaan aliran log untuk grup log kustom mengikuti konvensi ini:

```
YYYY/MM/DD/<function_name>[<function_version>][<execution_environment_GUID>]
```

Perhatikan bahwa saat mengonfigurasi grup log kustom, nama yang Anda pilih untuk grup log Anda harus mengikuti [aturan penamaan CloudWatch Log](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html). Selain itu, nama grup log kustom tidak boleh dimulai dengan string`aws/`. Jika Anda membuat grup log kustom dimulai dengan`aws/`, Lambda tidak akan dapat membuat grup log. Akibatnya, log fungsi Anda tidak akan dikirim ke CloudWatch.

**Untuk mengubah grup log fungsi (konsol)**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi.

1. Pada halaman konfigurasi fungsi, pilih **Alat pemantauan dan operasi**.

1. Di panel **konfigurasi Logging**, pilih **Edit**.

1. Di panel **grup Logging**, untuk **grup CloudWatch log**, pilih **Kustom**.

1. Di bawah **Grup log kustom**, masukkan nama grup CloudWatch log yang Anda inginkan untuk mengirim log ke fungsi Anda. Jika Anda memasukkan nama grup log yang ada, maka fungsi Anda akan menggunakan grup itu. Jika tidak ada grup log dengan nama yang Anda masukkan, maka Lambda akan membuat grup log baru untuk fungsi Anda dengan nama itu.

**Untuk mengubah grup log fungsi (AWS CLI)**
+ Untuk mengubah grup log dari fungsi yang ada, gunakan [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html)perintah.

  ```
  aws lambda update-function-configuration \
    --function-name myFunction \
    --logging-config LogGroup=myLogGroup
  ```

**Untuk menentukan grup log kustom saat Anda membuat fungsi (AWS CLI)**
+ Untuk menentukan grup log kustom saat Anda membuat fungsi Lambda baru menggunakan AWS CLI, gunakan opsi. `--logging-config` Contoh perintah berikut menciptakan fungsi Lambda Node.js yang mengirimkan log ke grup log bernama. `myLogGroup`

  ```
  aws lambda create-function \
    --function-name myFunction \
    --runtime nodejs24.x \
    --handler index.handler \
    --zip-file fileb://function.zip \
    --role arn:aws:iam::123456789012:role/LambdaRole \
    --logging-config LogGroup=myLogGroup
  ```

## Izin peran eksekusi
<a name="monitoring-cloudwatchlogs-configure-permissions"></a>

Agar fungsi Anda mengirim CloudWatch log ke Log, itu harus memiliki PutLogEvents izin [log:](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutLogEvents.html). Saat Anda mengonfigurasi grup log fungsi menggunakan konsol Lambda, Lambda akan menambahkan izin ini ke peran dalam kondisi berikut:
+ Tujuan layanan diatur ke CloudWatch Log
+ Peran eksekusi fungsi Anda tidak memiliki izin untuk mengunggah log ke CloudWatch Log (tujuan default)

**catatan**  
Lambda tidak menambahkan izin Put apa pun untuk tujuan log Amazon S3 atau Firehose.

Ketika Lambda menambahkan izin ini, ia memberikan izin fungsi untuk mengirim log ke grup log Log apa pun CloudWatch .

**Untuk mencegah Lambda memperbarui peran eksekusi fungsi secara otomatis dan mengeditnya secara manual, **perluas Izin dan hapus centang Tambahkan izin** yang diperlukan.**

Saat Anda mengonfigurasi grup log fungsi Anda menggunakan AWS CLI, Lambda tidak akan secara otomatis menambahkan izin. `logs:PutLogEvents` Tambahkan izin ke peran eksekusi fungsi Anda jika belum memilikinya. Izin ini termasuk dalam kebijakan [AWSLambdaBasicExecutionRole](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole$jsonEditor)terkelola.

## CloudWatch logging untuk Instans Terkelola Lambda
<a name="monitoring-cloudwatchlogs-lmi"></a>

Saat menggunakan [Instans Terkelola Lambda](lambda-managed-instances.md), ada pertimbangan tambahan untuk mengirim log ke Log: CloudWatch 

### Persyaratan jaringan VPC
<a name="monitoring-cloudwatchlogs-lmi-networking"></a>

Instans Terkelola Lambda berjalan pada instans milik pelanggan EC2 dalam VPC Anda. Untuk mengirim CloudWatch log ke Log dan jejak ke X-Ray, Anda harus memastikan bahwa ini dapat AWS APIs dirutekan dari VPC Anda. Anda memiliki beberapa pilihan:
+ **AWS PrivateLink (disarankan)**: Gunakan [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)untuk membuat titik akhir VPC untuk layanan Log CloudWatch dan X-Ray. Ini memungkinkan instans Anda untuk mengakses layanan ini secara pribadi tanpa memerlukan gateway internet atau gateway NAT. Untuk informasi selengkapnya, lihat [Menggunakan CloudWatch Log dengan titik akhir VPC antarmuka](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html).
+ **NAT Gateway**: Konfigurasikan gateway NAT untuk memungkinkan akses internet keluar dari subnet pribadi Anda.
+ **Internet Gateway**: Untuk subnet publik, pastikan VPC Anda memiliki gateway internet yang dikonfigurasi.

Jika CloudWatch Log atau APIs X-Ray tidak dapat dirutekan dari VPC Anda, log dan jejak fungsi Anda tidak akan dikirimkan.

### Pemanggilan bersamaan dan atribusi log
<a name="monitoring-cloudwatchlogs-lmi-concurrent"></a>

Lingkungan eksekusi Instans Terkelola Lambda dapat memproses beberapa pemanggilan secara bersamaan. Ketika beberapa pemanggilan berjalan secara bersamaan, entri lognya disisipkan dalam aliran log yang sama. Untuk memfilter dan menganalisis log secara efektif dari pemanggilan bersamaan, Anda harus memastikan setiap entri log menyertakan ID permintaan. AWS 

Kami merekomendasikan salah satu pendekatan berikut:
+ **Gunakan pencatat runtime Lambda default (disarankan)**: Pustaka logging default yang disediakan oleh runtime terkelola Lambda secara otomatis menyertakan ID permintaan di setiap entri log.
+ **Menerapkan logging JSON terstruktur**: Jika Anda membuat [runtime khusus](runtimes-custom.md) atau memerlukan pencatatan khusus, terapkan log berformat JSON yang menyertakan ID permintaan di setiap entri. Instans Terkelola Lambda hanya mendukung format log JSON. Sertakan `requestId` bidang di log JSON Anda untuk mengaktifkan pemfilteran berdasarkan pemanggilan:

  ```
  {
    "timestamp": "2025-01-15T10:30:00.000Z",
    "level": "INFO",
    "requestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "message": "Processing request"
  }
  ```

Dengan atribusi ID permintaan, Anda dapat memfilter entri CloudWatch log Log untuk pemanggilan tertentu menggunakan CloudWatch kueri Wawasan Log. Contoh:

```
fields @timestamp, @message
| filter requestId = "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
| sort @timestamp asc
```

Untuk informasi selengkapnya tentang persyaratan pencatatan Instans Terkelola Lambda, lihat. [Memahami lingkungan eksekusi Instans Terkelola Lambda](lambda-managed-instances-execution-environment.md)

# Melihat CloudWatch log untuk fungsi Lambda
<a name="monitoring-cloudwatchlogs-view"></a>

Anda dapat melihat CloudWatch log Amazon untuk fungsi Lambda menggunakan konsol Lambda, CloudWatch konsol, atau (). AWS Command Line Interface AWS CLI Ikuti petunjuk di bagian berikut untuk mengakses log fungsi Anda.

## Streaming log fungsi dengan CloudWatch Log Live Tail
<a name="monitoring-live-tail"></a>

Amazon CloudWatch Logs Live Tail membantu Anda memecahkan masalah fungsi dengan cepat dengan menampilkan daftar streaming peristiwa log baru langsung di konsol Lambda. Anda dapat melihat dan memfilter log yang dicerna dari fungsi Lambda Anda secara real time, membantu Anda mendeteksi dan menyelesaikan masalah dengan cepat.

**catatan**  
Sesi Live Tail dikenakan biaya berdasarkan waktu penggunaan sesi, per menit. Untuk informasi selengkapnya tentang harga, lihat [ CloudWatch Harga Amazon](https://aws.amazon.com/cloudwatch/pricing/).

### Membandingkan Live Tail dan --log-type Tail
<a name="live-tail-logtype"></a>

Ada beberapa perbedaan antara CloudWatch Logs Live Tail dan opsi [LogType: Tail](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html#lambda-Invoke-request-LogType) di Lambda API (`--log-type Tail`di AWS CLI):
+ `--log-type Tail`mengembalikan hanya 4 KB pertama dari log pemanggilan. Live Tail tidak membagikan batas ini, dan dapat menerima hingga 500 peristiwa log per detik.
+ `--log-type Tail`menangkap dan mengirim log dengan respons, yang dapat memengaruhi latensi respons fungsi. Live Tail tidak memengaruhi latensi respons fungsi.
+ `--log-type Tail`hanya mendukung pemanggilan sinkron. Live Tail berfungsi untuk pemanggilan sinkron dan asinkron.

**catatan**  
[Instans Terkelola Lambda](lambda-managed-instances.md) tidak mendukung opsi. `--log-type Tail` Gunakan CloudWatch Log Live Tail atau kueri CloudWatch Log secara langsung untuk melihat log untuk fungsi Instans Terkelola.

### Izin
<a name="live-tail-permissions"></a>

Izin berikut diperlukan untuk memulai dan menghentikan sesi CloudWatch Log Live Tail:
+ `logs:DescribeLogGroups`
+ `logs:StartLiveTail`
+ `logs:StopLiveTail`

### Mulai sesi Live Tail di konsol Lambda
<a name="live-tail-console"></a>

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih nama fungsi.

1. Pilih tab **Uji**.

1. Di panel **acara Uji**, pilih **CloudWatch Log Live Tail**.

1. Untuk **Pilih grup log**, grup log fungsi dipilih secara default. Anda dapat memilih hingga lima grup log sekaligus.

1. (Opsional) Untuk menampilkan hanya peristiwa log yang berisi kata-kata tertentu atau string lainnya, masukkan kata atau string di **Tambahkan pola filter** kotak. Bidang filter peka huruf besar/kecil. Anda dapat menyertakan beberapa istilah dan operator pola di bidang ini, termasuk ekspresi reguler (regex). Untuk informasi selengkapnya tentang sintaks pola, lihat [Filter sintaks pola](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html). di *Panduan Pengguna Amazon CloudWatch Logs*.

1. Pilih **Mulai**. Peristiwa log yang cocok mulai muncul di jendela.

1. Untuk menghentikan sesi Live Tail, pilih **Stop**.
**catatan**  
Sesi Live Tail otomatis berhenti setelah 15 menit tidak aktif atau saat sesi konsol Lambda habis waktu.

## Akses log fungsi menggunakan konsol
<a name="monitoring-cloudwatchlogs-console"></a>

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi.

1. Pilih tab **Pantau**.

1. Pilih **Lihat CloudWatch log** untuk membuka CloudWatch konsol.

1. Gulir ke bawah dan pilih **aliran Log** untuk pemanggilan fungsi yang ingin Anda lihat.  
![\[\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/log-stream.png)

Setiap instance dari fungsi Lambda memiliki aliran log khusus. Jika suatu fungsi meningkat, setiap instance bersamaan memiliki aliran lognya sendiri. Setiap kali lingkungan eksekusi baru dibuat sebagai respons terhadap pemanggilan, ini menghasilkan aliran log baru. Konvensi penamaan untuk aliran log adalah:

```
YYYY/MM/DD[Function version][Execution environment GUID]
```

Lingkungan eksekusi tunggal menulis ke aliran log yang sama selama masa pakainya. Aliran log berisi pesan dari lingkungan eksekusi itu dan juga output apa pun dari kode fungsi Lambda Anda. Setiap pesan diberi cap waktu, termasuk log kustom Anda. Bahkan jika fungsi Anda tidak mencatat output apa pun dari kode Anda, ada tiga pernyataan log minimal yang dihasilkan per pemanggilan (START, END dan REPORT):

![\[pemantauan observabilitas gambar 3\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/monitoring-observability-figure-3.png)


Log ini menunjukkan:
+  **RequestId**— ini adalah ID unik yang dihasilkan per permintaan. Jika fungsi Lambda mencoba ulang permintaan, ID ini tidak berubah dan muncul di log untuk setiap percobaan ulang berikutnya.
+  **Start/End** — bookmark ini satu pemanggilan, jadi setiap baris log di antara ini termasuk dalam doa yang sama.
+  **Durasi** — total waktu pemanggilan untuk fungsi handler, tidak termasuk kode. `INIT`
+  **Durasi Tagihan** - menerapkan logika pembulatan untuk tujuan penagihan.
+  **Ukuran Memori** — jumlah memori yang dialokasikan untuk fungsi.
+  **Max Memory Used** — jumlah maksimum memori yang digunakan selama pemanggilan.
+  **Init Duration** — waktu yang dibutuhkan untuk menjalankan `INIT` bagian kode, di luar handler utama.

## Akses log dengan AWS CLI
<a name="monitoring-cloudwatchlogs-cli"></a>

 AWS CLI Ini adalah alat sumber terbuka yang memungkinkan Anda berinteraksi dengan AWS layanan menggunakan perintah di shell baris perintah Anda. Untuk menyelesaikan langkah-langkah di bagian ini, Anda harus memiliki [AWS CLI versi 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).

Anda dapat menggunakan [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) untuk mengambil log untuk invokasi menggunakan opsi perintah `--log-type`. Respons berisi bidang `LogResult` yang memuat hingga 4 KB log berkode base64 dari invokasi.

**Example mengambil ID log**  
Contoh berikut menunjukkan cara mengambil *ID log* dari `LogResult` untuk fungsi bernama `my-function`.  

```
aws lambda invoke --function-name my-function out --log-type Tail
```
Anda akan melihat output berikut:  

```
{
    "StatusCode": 200,
    "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...",
    "ExecutedVersion": "$LATEST"
}
```

**Example mendekode log**  
Pada prompt perintah yang sama, gunakan utilitas `base64` untuk mendekodekan log. Contoh berikut menunjukkan cara mengambil log berkode base64 untuk `my-function`.  

```
aws lambda invoke --function-name my-function out --log-type Tail \
--query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode
```
**cli-binary-format**Opsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankan`aws configure set cli-binary-format raw-in-base64-out`. Untuk informasi selengkapnya, lihat [opsi baris perintah global yang AWS CLI didukung](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) di *Panduan AWS Command Line Interface Pengguna untuk Versi 2*.  
Anda akan melihat output berikut:  

```
START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST
"AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib",
END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8
REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8  Duration: 79.67 ms      Billed Duration: 80 ms         Memory Size: 128 MB     Max Memory Used: 73 MB
```
Utilitas `base64` tersedia di Linux, macOS, dan [Ubuntu pada Windows](https://docs.microsoft.com/en-us/windows/wsl/install-win10). Pengguna macOS mungkin harus menggunakan `base64 -D`.



**Example Skrip get-logs.sh**  
Pada prompt perintah yang sama, gunakan script berikut untuk mengunduh lima peristiwa log terakhir. Skrip menggunakan `sed` untuk menghapus kutipan dari file output, dan akan tidur selama 15 detik untuk memberikan waktu agar log tersedia. Output mencakup respons dari Lambda dan output dari perintah `get-log-events`.   
Salin konten dari contoh kode berikut dan simpan dalam direktori proyek Lambda Anda sebagai `get-logs.sh`.  
**cli-binary-format**Opsi ini diperlukan jika Anda menggunakan AWS CLI versi 2. Untuk menjadikan ini pengaturan default, jalankan`aws configure set cli-binary-format raw-in-base64-out`. Untuk informasi selengkapnya, lihat [opsi baris perintah global yang AWS CLI didukung](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) di *Panduan AWS Command Line Interface Pengguna untuk Versi 2*.  

```
#!/bin/bash
aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"key": "value"}' out
sed -i'' -e 's/"//g' out
sleep 15
aws logs get-log-events --log-group-name /aws/lambda/my-function --log-stream-name stream1 --limit 5
```

**Example macOS dan Linux (khusus)**  
Pada prompt perintah yang sama, pengguna macOS dan Linux mungkin perlu menjalankan perintah berikut untuk memastikan skrip dapat dijalankan.  

```
chmod -R 755 get-logs.sh
```

**Example mengambil lima log acara terakhir**  
Pada prompt perintah yang sama, gunakan skrip berikut untuk mendapatkan lima log acara terakhir.  

```
./get-logs.sh
```
Anda akan melihat output berikut:  

```
{
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"
}
{
    "events": [
        {
            "timestamp": 1559763003171,
            "message": "START RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf Version: $LATEST\n",
            "ingestionTime": 1559763003309
        },
        {
            "timestamp": 1559763003173,
            "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tENVIRONMENT VARIABLES\r{\r  \"AWS_LAMBDA_FUNCTION_VERSION\": \"$LATEST\",\r ...",
            "ingestionTime": 1559763018353
        },
        {
            "timestamp": 1559763003173,
            "message": "2019-06-05T19:30:03.173Z\t4ce9340a-b765-490f-ad8a-02ab3415e2bf\tINFO\tEVENT\r{\r  \"key\": \"value\"\r}\n",
            "ingestionTime": 1559763018353
        },
        {
            "timestamp": 1559763003218,
            "message": "END RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\n",
            "ingestionTime": 1559763018353
        },
        {
            "timestamp": 1559763003218,
            "message": "REPORT RequestId: 4ce9340a-b765-490f-ad8a-02ab3415e2bf\tDuration: 26.73 ms\tBilled Duration: 27 ms \tMemory Size: 128 MB\tMax Memory Used: 75 MB\t\n",
            "ingestionTime": 1559763018353
        }
    ],
    "nextForwardToken": "f/34783877304859518393868359594929986069206639495374241795",
    "nextBackwardToken": "b/34783877303811383369537420289090800615709599058929582080"
}
```

## Mengurai log dan logging terstruktur
<a name="querying-logs"></a>

Dengan Wawasan CloudWatch Log, Anda dapat mencari dan menganalisis data log menggunakan [sintaks kueri](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html) khusus. Ini melakukan kueri pada beberapa grup log dan menyediakan pemfilteran yang kuat menggunakan pencocokan pola [ekspresi [glob](https://en.wikipedia.org/wiki/Glob_(programming)) dan reguler](https://en.wikipedia.org/wiki/Regular_expression).

Anda dapat memanfaatkan kemampuan ini dengan menerapkan logging terstruktur di fungsi Lambda Anda. Pencatatan terstruktur mengatur log Anda ke dalam format yang telah ditentukan sebelumnya, sehingga lebih mudah untuk melakukan kueri. Menggunakan level log merupakan langkah pertama yang penting dalam menghasilkan log ramah filter yang memisahkan pesan informasi dari peringatan atau kesalahan. Misalnya, perhatikan kode Node.js berikut:

```
exports.handler = async (event) => {
    console.log("console.log - Application is fine")
    console.info("console.info - This is the same as console.log")
    console.warn("console.warn - Application provides a warning")
    console.error("console.error - An error occurred")
}
```

File CloudWatch log yang dihasilkan berisi bidang terpisah yang menentukan tingkat log:

![\[pemantauan observabilitas angka 10\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/monitoring-observability-figure-10.png)


Kueri Wawasan CloudWatch Log kemudian dapat memfilter pada tingkat log. Misalnya, untuk menanyakan kesalahan saja, Anda dapat menggunakan kueri berikut:

```
fields @timestamp, @message
| filter @message like /ERROR/
| sort @timestamp desc
```

### Pencatatan terstruktur JSON
<a name="querying-logs-json"></a>

JSON umumnya digunakan untuk menyediakan struktur untuk log aplikasi. Dalam contoh berikut, log telah dikonversi ke JSON untuk menghasilkan tiga nilai yang berbeda:

![\[pemantauan observabilitas angka 11\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/monitoring-observability-figure-11.png)


Fitur Wawasan CloudWatch Log secara otomatis menemukan nilai dalam keluaran JSON dan mem-parsing pesan sebagai bidang, tanpa perlu glob kustom atau ekspresi reguler. Dengan menggunakan log terstruktur JSON, kueri berikut menemukan pemanggilan di mana file yang diunggah lebih besar dari 1 MB, waktu unggah lebih dari 1 detik, dan pemanggilan bukanlah awal yang dingin:

```
fields @message
| filter @message like /INFO/
| filter uploadedBytes > 1000000
| filter uploadTimeMS > 1000
| filter invocation != 1
```

Kueri ini mungkin menghasilkan hasil sebagai berikut:

![\[pemantauan observabilitas angka 12\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/monitoring-observability-figure-12.png)


Bidang yang ditemukan di JSON secara otomatis diisi di menu *bidang Ditemukan* di sisi kanan. Bidang standar yang dipancarkan oleh layanan Lambda diawali dengan '@', dan Anda dapat melakukan kueri pada bidang ini dengan cara yang sama. Log Lambda selalu menyertakan bidang @timestamp, @logStream, @message, @requestId, @duration, @billedDuration,, @, @maxMemoryUsed,. @type @memorySize Jika X-Ray diaktifkan untuk suatu fungsi, log juga menyertakan @ xrayTraceId dan @xraySegmentId.

Saat sumber AWS peristiwa seperti Amazon S3, Amazon SQS, atau EventBridge Amazon memanggil fungsi Anda, seluruh acara disediakan ke fungsi sebagai input objek JSON. Dengan mencatat peristiwa ini di baris pertama fungsi, Anda kemudian dapat melakukan kueri pada salah satu bidang bersarang menggunakan Wawasan CloudWatch Log.

### Pertanyaan Wawasan Berguna
<a name="useful-logs-queries"></a>

Tabel berikut menunjukkan contoh kueri Wawasan yang dapat berguna untuk memantau fungsi Lambda.


| Deskripsi | Contoh sintaks kueri | 
| --- | --- | 
|  100 kesalahan terakhir  |  

```
 fields Timestamp, LogLevel, Message
 \| filter LogLevel == "ERR"
 \| sort @timestamp desc
 \| limit 100
```  | 
|  100 pemanggilan dengan tagihan tertinggi  |  

```
filter @type = "REPORT"
\| fields @requestId, @billedDuration
\| sort by @billedDuration desc
\| limit 100
```  | 
|  Persentase dingin dimulai dalam total pemanggilan  |  

```
filter @type = "REPORT"
\| stats sum(strcontains(@message, "Init Duration"))/count(*) * 100 as
  coldStartPct, avg(@duration)
  by bin(5m)
```  | 
|  Laporan persentil durasi Lambda  |  

```
filter @type = "REPORT"
\| stats
    avg(@billedDuration) as Average,
    percentile(@billedDuration, 99) as NinetyNinth,
    percentile(@billedDuration, 95) as NinetyFifth,
    percentile(@billedDuration, 90) as Ninetieth
    by bin(30m)
```  | 
|  Laporan persentil penggunaan memori Lambda  |  

```
filter @type="REPORT"
\| stats avg(@maxMemoryUsed/1024/1024) as mean_MemoryUsed,
    min(@maxMemoryUsed/1024/1024) as min_MemoryUsed,
    max(@maxMemoryUsed/1024/1024) as max_MemoryUsed,
    percentile(@maxMemoryUsed/1024/1024, 95) as Percentile95
```  | 
|  Pemanggilan menggunakan 100% memori yang ditetapkan  |  

```
filter @type = "REPORT" and @maxMemoryUsed=@memorySize
\| stats
    count_distinct(@requestId)
    by bin(30m)
```  | 
|  Memori rata-rata yang digunakan di seluruh pemanggilan  |  

```
avgMemoryUsedPERC,
    avg(@billedDuration) as avgDurationMS
    by bin(5m)
```  | 
|  Visualisasi statistik memori  |  

```
filter @type = "REPORT"
\| stats
    max(@maxMemoryUsed / 1024 / 1024) as maxMemMB,
    avg(@maxMemoryUsed / 1024 / 1024) as avgMemMB,
    min(@maxMemoryUsed / 1024 / 1024) as minMemMB,
    (avg(@maxMemoryUsed / 1024 / 1024) / max(@memorySize / 1024 / 1024)) * 100 as avgMemUsedPct,
    avg(@billedDuration) as avgDurationMS
    by bin(30m)
```  | 
|  Doa tempat Lambda keluar  |  

```
filter @message like /Process exited/
\| stats count() by bin(30m)
```  | 
|  Doa yang habis waktunya  |  

```
filter @message like /Task timed out/
\| stats count() by bin(30m)
```  | 
|  Laporan latensi  |  

```
filter @type = "REPORT"
\| stats avg(@duration), max(@duration), min(@duration)
  by bin(5m)
```  | 
|  Memori yang disediakan secara berlebihan  |  

```
filter @type = "REPORT"
\| stats max(@memorySize / 1024 / 1024) as provisonedMemMB,
        min(@maxMemoryUsed / 1024 / 1024) as smallestMemReqMB,
        avg(@maxMemoryUsed / 1024 / 1024) as avgMemUsedMB,
        max(@maxMemoryUsed / 1024 / 1024) as maxMemUsedMB,
        provisonedMemMB - maxMemUsedMB as overProvisionedMB
```  | 

## Visualisasi log dan dasbor
<a name="monitoring-logs-visualization"></a>

Untuk kueri Wawasan CloudWatch Log apa pun, Anda dapat mengekspor hasilnya ke format penurunan harga atau CSV. Dalam beberapa kasus, mungkin lebih berguna untuk membuat [visualisasi dari kueri](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_Insights-Visualizing-Log-Data.html), asalkan setidaknya ada satu fungsi agregasi. `stats`Fungsi ini memungkinkan Anda untuk menentukan agregasi dan pengelompokan.

Contoh *LogInsightsJSON* sebelumnya difilter pada ukuran upload dan waktu upload dan mengecualikan pemanggilan pertama. Ini menghasilkan tabel data. Untuk memantau sistem produksi, mungkin lebih berguna untuk memvisualisasikan ukuran file minimum, maksimum, dan rata-rata untuk menemukan outlier. Untuk melakukan ini, terapkan fungsi statistik dengan agregat yang diperlukan, dan kelompokkan pada nilai waktu seperti setiap menit:

Misalnya, pertimbangkan kueri berikut. Ini adalah contoh kueri yang sama dari [Pencatatan terstruktur JSON](#querying-logs-json) bagian, tetapi dengan fungsi agregasi tambahan:

```
fields @message
| filter @message like /INFO/
| filter uploadedBytes > 1000000
| filter uploadTimeMS > 1000
| filter invocation != 1
| stats min(uploadedBytes), avg(uploadedBytes), max(uploadedBytes) by bin (1m)
```

Kami menyertakan agregat ini karena mungkin lebih berguna untuk memvisualisasikan ukuran file minimum, maksimum, dan rata-rata untuk menemukan outlier. Anda dapat melihat hasilnya di tab **Visualisasi**:

![\[pemantauan observabilitas gambar 14\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/monitoring-observability-figure-14.png)


Setelah Anda selesai membangun visualisasi, Anda dapat menambahkan grafik ke dasbor secara opsional. CloudWatch Untuk melakukan ini, pilih **Tambahkan ke dasbor** di atas visualisasi. Ini menambahkan kueri sebagai widget dan memungkinkan Anda memilih interval penyegaran otomatis, sehingga lebih mudah untuk terus memantau hasilnya:

![\[pemantauan observabilitas angka 15\]](http://docs.aws.amazon.com/id_id/lambda/latest/dg/images/monitoring-observability-figure-15.png)
