

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

# Pantau WebSocket APIs di API Gateway
<a name="websocket-api-monitor"></a>

Anda dapat menggunakan CloudWatch metrik dan CloudWatch Log untuk memantau WebSocket APIs. Dengan menggabungkan log dan metrik, Anda dapat mencatat kesalahan dan memantau kinerja API Anda.

**catatan**  
API Gateway mungkin tidak menghasilkan log dan metrik dalam kasus berikut:  
413 Kesalahan Permintaan Entitas Terlalu Besar
Berlebihan 429 Terlalu Banyak Kesalahan Permintaan
400 error seri dari permintaan yang dikirim ke domain kustom yang tidak memiliki pemetaan API
500 kesalahan seri yang disebabkan oleh kegagalan internal

**Topics**
+ [Pantau eksekusi WebSocket API dengan CloudWatch metrik](apigateway-websocket-api-logging.md)
+ [Konfigurasikan logging untuk WebSocket APIs di API Gateway](websocket-api-logging.md)

# Pantau eksekusi WebSocket API dengan CloudWatch metrik
<a name="apigateway-websocket-api-logging"></a>

Anda dapat menggunakan CloudWatch metrik [Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) untuk memantau WebSocket APIs. Konfigurasinya mirip dengan yang digunakan untuk REST APIs. Untuk informasi selengkapnya, lihat [Pantau eksekusi REST API dengan CloudWatch metrik Amazon](monitoring-cloudwatch.md).

Metrik berikut didukung untuk WebSocket APIs:


| Metrik | Deskripsi | 
| --- | --- | 
| ConnectCount | Jumlah pesan yang dikirim ke integrasi \$1connect rute. | 
| MessageCount | Jumlah pesan yang dikirim ke WebSocket API, baik dari atau ke klien. | 
| IntegrationError | Jumlah permintaan yang mengembalikan respons 4XX/5XX dari integrasi. | 
| ClientError | Jumlah permintaan yang memiliki respons 4XX yang dikembalikan oleh API Gateway sebelum integrasi dipanggil. | 
| ExecutionError | Kesalahan yang terjadi saat memanggil integrasi. | 
| IntegrationLatency | Perbedaan waktu antara API Gateway mengirimkan permintaan ke integrasi dan API Gateway menerima respons dari integrasi. Ditekan untuk panggilan balik dan integrasi tiruan. | 

Anda dapat menggunakan dimensi dalam tabel berikut untuk memfilter metrik API Gateway.


| Dimensi | Deskripsi | 
| --- | --- | 
| ApiId | Memfilter metrik API Gateway untuk API dengan ID API yang ditentukan. | 
| ApiId, Panggung | Memfilter metrik API Gateway untuk tahap API dengan ID API dan ID tahap yang ditentukan. | 
| ApiId, Metode, Sumber Daya, Panggung |  Memfilter metrik API Gateway untuk metode API dengan ID API, ID tahap, jalur sumber daya, dan ID rute yang ditentukan. API Gateway tidak akan mengirimkan metrik ini kecuali Anda telah mengaktifkan metrik terperinci secara eksplisit. CloudWatch Anda dapat melakukan ini dengan memanggil [UpdateStage](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-stages-stagename.html)aksi API Gateway V2 REST API untuk memperbarui `detailedMetricsEnabled` properti ke`true`. Atau, Anda dapat memanggil AWS CLI perintah [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-stage.html) untuk memperbarui properti ke. `DetailedMetricsEnabled` `true` Mengaktifkan metrik tersebut akan dikenakan biaya tambahan ke akun Anda. Untuk informasi harga, lihat [ CloudWatchHarga Amazon](https://aws.amazon.com/cloudwatch/pricing/).  | 

# Konfigurasikan logging untuk WebSocket APIs di API Gateway
<a name="websocket-api-logging"></a>

Anda dapat mengaktifkan logging untuk menulis log ke CloudWatch Log. Ada dua jenis log masuk API CloudWatch: logging eksekusi dan logging akses. Dalam pencatatan eksekusi, API Gateway mengelola CloudWatch Log. Prosesnya mencakup pembuatan grup log dan aliran log, dan pelaporan ke aliran log permintaan dan tanggapan pemanggil apa pun. 

Untuk meningkatkan postur keamanan Anda, kami sarankan Anda menggunakan pencatatan eksekusi di `INFO` tingkat `ERROR` atau. Anda mungkin perlu melakukan ini untuk mematuhi berbagai kerangka kerja kepatuhan. Untuk informasi selengkapnya, lihat [kontrol Amazon API Gateway](https://docs.aws.amazon.com/securityhub/latest/userguide/apigateway-controls.html) di *Panduan AWS Security Hub Pengguna*.

Dalam pencatatan akses, Anda, sebagai pengembang API, ingin mencatat siapa yang telah mengakses API Anda dan bagaimana pemanggil mengakses API. Anda dapat membuat grup log Anda sendiri atau memilih grup log yang sudah ada yang dapat dikelola oleh API Gateway. Untuk menentukan rincian akses, Anda memilih `$context` variabel (dinyatakan dalam format pilihan Anda) dan memilih grup log sebagai tujuan.

Untuk petunjuk tentang cara mengatur CloudWatch logging, lihat[Siapkan pencatatan CloudWatch API menggunakan konsol API Gateway](set-up-logging.md#set-up-access-logging-using-console).

Saat Anda menentukan **Format Log**, Anda dapat memilih variabel konteks mana yang akan dicatat. Variabel berikut didukung.


| Parameter | Deskripsi | 
| --- | --- | 
| \$1context.apiId |  API Gateway identifier ditetapkan ke API Anda.  | 
| \$1context.authorize.error | Pesan kesalahan otorisasi. | 
| \$1context.authorize.latency | Latensi otorisasi di ms. | 
| \$1context.authorize.status | Kode status dikembalikan dari upaya otorisasi. | 
| \$1context.authorizer.error | Pesan kesalahan dikembalikan dari otorisasi. | 
| \$1context.authorizer.integrationLatency | Latensi otorisasi Lambda di ms. | 
| \$1context.authorizer.integrationStatus | Kode status dikembalikan dari otorisasi Lambda. | 
| \$1context.authorizer.latency | Latensi otorisasi di ms. | 
| \$1context.authorizer.requestId | ID permintaan AWS titik akhir. | 
| \$1context.authorizer.status | Kode status dikembalikan dari otorisasi. | 
| \$1context.authorizer.principalId |  Identifikasi pengguna utama yang dikaitkan dengan token yang dikirim oleh klien dan dikembalikan dari fungsi Lambda otorisasi API Gateway Lambda. (Authorizer Lambda sebelumnya dikenal sebagai otorisasi khusus.)  | 
| \$1context.authorizer.property |  Nilai stringifikasi dari pasangan nilai kunci yang ditentukan dari `context` peta dikembalikan dari fungsi otorisasi API Gateway Lambda. Misalnya, jika otorisasi mengembalikan `context` peta berikut:  <pre>"context" : {<br />                            "key": "value",<br />                            "numKey": 1,<br />                            "boolKey": true<br />                            }</pre> memanggil `$context.authorizer.key` mengembalikan `"value"` string, memanggil `$context.authorizer.numKey` mengembalikan `"1"` string, dan memanggil `$context.authorizer.boolKey` mengembalikan `"true"` string.  | 
| \$1context.authenticate.error | Pesan kesalahan dikembalikan dari upaya otentikasi. | 
| \$1context.authenticate.latency | Latensi otentikasi di ms. | 
| \$1context.authenticate.status | Kode status dikembalikan dari upaya otentikasi. | 
| \$1context.connectedAt |  Waktu koneksi yang diformat [Epoch](https://en.wikipedia.org/wiki/Unix_time).  | 
| \$1context.connectionId |  ID unik untuk koneksi yang dapat digunakan untuk membuat callback ke klien.  | 
| \$1context.domainName |  Sebuah nama domain untuk WebSocket API. Ini dapat digunakan untuk membuat panggilan balik ke klien (bukan nilai hardcode).  | 
| \$1context.error.message |  String yang berisi pesan kesalahan API Gateway.  | 
| \$1context.error.messageString | Nilai yang dikutip dari\$1context.error.message, yaitu"\$1context.error.message". | 
| \$1context.error.responseType |  Jenis respons kesalahan.  | 
| \$1context.error.validationErrorString |  Sebuah string yang berisi pesan kesalahan validasi rinci.  | 
| \$1context.eventType |  Jenis acara:`CONNECT`,`MESSAGE`, atau`DISCONNECT`.  | 
| \$1context.extendedRequestId | Setara dengan\$1context.requestId. | 
| \$1context.identity.accountId |  ID AWS akun yang terkait dengan permintaan.  | 
| \$1context.identity.apiKey |  Kunci pemilik API yang terkait dengan permintaan API berkemampuan kunci.  | 
| \$1context.identity.apiKeyId | ID kunci API yang terkait dengan permintaan API berkemampuan kunci | 
| \$1context.identity.caller |  Pengenal utama penelepon yang menandatangani permintaan. Didukung untuk rute yang menggunakan otorisasi IAM.  | 
| \$1context.identity.cognitoAuthenticationProvider |  Daftar dipisahkan koma dari semua penyedia otentikasi Amazon Cognito yang digunakan oleh penelepon yang membuat permintaan. Hanya tersedia jika permintaan ditandatangani dengan kredenal Amazon Cognito.  Misalnya, untuk identitas dari kumpulan pengguna Amazon Cognito, `cognito-idp. region.amazonaws.com/user_pool_id,cognito-idp.region.amazonaws.com/user_pool_id:CognitoSignIn:token subject claim` *Untuk informasi tentang penyedia autentikasi Amazon Cognito yang tersedia, lihat [Menggunakan Identitas Federasi di Panduan Pengembang](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-identity.html) Amazon Cognito.* | 
| \$1context.identity.cognitoAuthenticationType |  Jenis otentikasi Amazon Cognito dari penelepon yang membuat permintaan. Hanya tersedia jika permintaan ditandatangani dengan kredenal Amazon Cognito. Nilai yang mungkin termasuk `authenticated` untuk identitas yang diautentikasi dan `unauthenticated` untuk identitas yang tidak diautentikasi. | 
| \$1context.identity.cognitoIdentityId |  ID identitas Amazon Cognito dari penelepon yang membuat permintaan. Hanya tersedia jika permintaan ditandatangani dengan kredenal Amazon Cognito.  | 
| \$1context.identity.cognitoIdentityPoolId |  ID kumpulan identitas Amazon Cognito dari penelepon yang membuat permintaan. Hanya tersedia jika permintaan ditandatangani dengan kredenal Amazon Cognito.  | 
| \$1context.identity.principalOrgId |  [ID AWS organisasi](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html). Didukung untuk rute yang menggunakan otorisasi IAM.  | 
| \$1context.identity.sourceIp |  Alamat IP sumber koneksi TCP membuat permintaan ke API Gateway.  | 
| \$1context.identity.user |  Pengidentifikasi utama pengguna yang akan diotorisasi terhadap akses sumber daya. Didukung untuk rute yang menggunakan otorisasi IAM.  | 
| \$1context.identity.userAgent |  Agen pengguna pemanggil API.  | 
| \$1context.identity.userArn |  Nama Sumber Daya Amazon (ARN) dari pengguna efektif yang diidentifikasi setelah otentikasi.  | 
| \$1context.integration.error | Pesan kesalahan dikembalikan dari integrasi. | 
| \$1context.integration.integrationStatus | Untuk integrasi proxy Lambda, kode status dikembalikan dari AWS Lambda, bukan dari kode fungsi Lambda backend. | 
| \$1context.integration.latency | Latensi integrasi dalam ms. Setara dengan\$1context.integrationLatency. | 
| \$1context.integration.requestId | ID permintaan AWS titik akhir. Setara dengan\$1context.awsEndpointRequestId. | 
| \$1context.integration.status | Kode status dikembalikan dari integrasi. Untuk integrasi proxy Lambda, ini adalah kode status yang dikembalikan oleh kode fungsi Lambda Anda. Setara dengan\$1context.integrationStatus. | 
| \$1context.integrationLatency | Latensi integrasi dalam ms, hanya tersedia untuk pencatatan akses. | 
| \$1context.messageId |  ID sisi server unik untuk pesan. Hanya tersedia ketika `$context.eventType` ada`MESSAGE`.  | 
| \$1context.requestId |  Sama seperti`$context.extendedRequestId`.  | 
| \$1context.requestTime | Waktu permintaan yang diformat [CLF](https://httpd.apache.org/docs/current/logs.html#common) (). dd/MMM/yyyy:HH:mm:ss \$1-hhmm | 
| \$1context.requestTimeEpoch | Waktu permintaan yang diformat [Epoch](https://en.wikipedia.org/wiki/Unix_time), dalam milidetik. | 
| \$1context.routeKey |  Kunci rute yang dipilih.  | 
| \$1context.stage |  Tahap penerapan panggilan API (misalnya, beta atau prod).  | 
| \$1context.status |  Status respon.  | 
| \$1context.waf.error | Pesan kesalahan dikembalikan dari AWS WAF. | 
| \$1context.waf.latency |  AWS WAF Latensi dalam ms. | 
| \$1context.waf.status | Kode status dikembalikan dari AWS WAF. | 

Contoh beberapa format log akses yang umum digunakan ditampilkan di konsol API Gateway dan dicantumkan sebagai berikut.
+ `CLF`([Format Log Umum](https://httpd.apache.org/docs/current/logs.html#common)):

  ```
  $context.identity.sourceIp $context.identity.caller \
  $context.identity.user [$context.requestTime] "$context.eventType $context.routeKey $context.connectionId" \
  $context.status $context.requestId
  ```

  Karakter kelanjutan (`\`) dimaksudkan sebagai alat bantu visual. Format log harus satu baris. Anda dapat menambahkan karakter baris baru (`\n`) di akhir format log untuk menyertakan baris baru di akhir setiap entri log.
+  `JSON`: 

  ```
  {
  "requestId":"$context.requestId", \
  "ip": "$context.identity.sourceIp", \
  "caller":"$context.identity.caller", \
  "user":"$context.identity.user", \
  "requestTime":"$context.requestTime", \
  "eventType":"$context.eventType", \
  "routeKey":"$context.routeKey", \
  "status":"$context.status", \
  "connectionId":"$context.connectionId"
  }
  ```

  Karakter kelanjutan (`\`) dimaksudkan sebagai alat bantu visual. Format log harus satu baris. Anda dapat menambahkan karakter baris baru (`\n`) di akhir format log untuk menyertakan baris baru di akhir setiap entri log.
+ `XML`: 

  ```
  <request id="$context.requestId"> \
   <ip>$context.identity.sourceIp</ip> \
   <caller>$context.identity.caller</caller> \
   <user>$context.identity.user</user> \
   <requestTime>$context.requestTime</requestTime> \
   <eventType>$context.eventType</eventType> \
   <routeKey>$context.routeKey</routeKey> \
   <status>$context.status</status> \
   <connectionId>$context.connectionId</connectionId> \
  </request>
  ```

  Karakter kelanjutan (`\`) dimaksudkan sebagai alat bantu visual. Format log harus satu baris. Anda dapat menambahkan karakter baris baru (`\n`) di akhir format log untuk menyertakan baris baru di akhir setiap entri log.
+ `CSV`(nilai yang dipisahkan koma):

  ```
  $context.identity.sourceIp,$context.identity.caller, \
  $context.identity.user,$context.requestTime,$context.eventType, \
  $context.routeKey,$context.connectionId,$context.status, \
  $context.requestId
  ```

  Karakter kelanjutan (`\`) dimaksudkan sebagai alat bantu visual. Format log harus satu baris. Anda dapat menambahkan karakter baris baru (`\n`) di akhir format log untuk menyertakan baris baru di akhir setiap entri log.