

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

# Gunakan API X-Ray
<a name="xray-api"></a>

Jika X-Ray SDK tidak mendukung bahasa pemrograman Anda, Anda dapat menggunakan X-Ray APIs secara langsung atau AWS Command Line Interface (AWS CLI) untuk memanggil perintah X-Ray API. Gunakan panduan berikut untuk memilih cara Anda berinteraksi dengan API:
+ Gunakan sintaks AWS CLI untuk lebih sederhana menggunakan perintah yang telah diformat sebelumnya atau dengan opsi di dalam permintaan Anda.
+ Gunakan X-Ray API secara langsung untuk fleksibilitas maksimum dan kustomisasi untuk permintaan yang Anda buat ke X-Ray.

Jika Anda menggunakan [X-Ray API](https://docs.aws.amazon.com/xray/latest/api/Welcome.html) secara langsung alih-alih AWS CLI, Anda harus membuat parameter permintaan Anda dalam format data yang benar dan mungkin juga harus mengonfigurasi otentikasi dan penanganan kesalahan.

Diagram berikut menunjukkan panduan untuk memilih cara berinteraksi dengan X-Ray API:

![\[X-Ray menampilkan informasi rinci tentang permintaan aplikasi.\]](http://docs.aws.amazon.com/id_id/xray/latest/devguide/images/api-vs-cli.png)


Gunakan X-Ray API untuk mengirim data jejak langsung ke X-Ray. X-Ray API mendukung semua fungsi yang tersedia di X-Ray SDK termasuk tindakan umum berikut:
+ [PutTraceSegments](https://docs.aws.amazon.com/xray/latest/api/API_PutTraceSegments.html)— Mengunggah dokumen segmen ke X-Ray. 
+ [BatchGetTraces](https://docs.aws.amazon.com/xray/latest/api/API_BatchGetTraces.html)— Mengambil daftar jejak dalam daftar jejak IDs. Setiap jejak yang diambil adalah kumpulan dokumen segmen dari satu permintaan.
+ [GetTraceSummaries](https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSummaries.html)— Mengambil IDs dan anotasi untuk jejak. Anda dapat menentukan a `FilterExpression` untuk mengambil subset ringkasan jejak.
+ [GetTraceGraph](https://docs.aws.amazon.com/xray/latest/api/API_GetTraceGraph.html)— Mengambil grafik layanan untuk ID jejak tertentu.
+ [GetServiceGraph](https://docs.aws.amazon.com/xray/latest/api/API_GetServiceGraph.html)— Mengambil a JSON dokumen diformat yang menjelaskan layanan yang memproses permintaan masuk dan memanggil permintaan hilir.

Anda juga dapat menggunakan AWS Command Line Interface (AWS CLI) di dalam kode aplikasi Anda untuk berinteraksi secara terprogram dengan X-Ray. AWS CLI Mendukung semua fungsi yang tersedia di X-Ray SDK termasuk yang lain Layanan AWS. Fungsi-fungsi berikut adalah versi operasi API yang terdaftar sebelumnya dengan format yang lebih sederhana:
+ [put-trace-segments](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/xray/put-trace-segments.html)— Mengunggah dokumen segmen ke X-Ray.
+ [batch-get-traces](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/xray/batch-get-traces.html)— Mengambil daftar jejak dalam daftar jejak IDs. Setiap jejak yang diambil adalah kumpulan dokumen segmen dari satu permintaan.
+ [get-trace-summaries](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/xray/get-trace-summaries.html)— Mengambil IDs dan anotasi untuk jejak. Anda dapat menentukan a `FilterExpression` untuk mengambil subset ringkasan jejak.
+ [get-trace-graph](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/xray/get-trace-graph.html)— Mengambil grafik layanan untuk ID jejak tertentu.
+ [get-service-graph](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/xray/get-service-graph.html)— Mengambil dokumen yang `JSON` diformat yang menjelaskan layanan yang memproses permintaan masuk dan memanggil permintaan hilir.

Untuk memulai, Anda harus menginstal [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)untuk sistem operasi Anda. AWS mendukung Linux, macOS and Windows sistem operasi. Untuk informasi selengkapnya tentang daftar perintah X-Ray, lihat [panduan Referensi AWS CLI Perintah untuk X-Ray](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/xray/index.html).

**Topics**
+ [Menggunakan AWS X-Ray API dengan AWS CLI](xray-api-tutorial.md)
+ [Mengirim data jejak ke AWS X-Ray](xray-api-sendingdata.md)
+ [Mendapatkan data dari AWS X-Ray](xray-api-gettingdata.md)
+ [Mengkonfigurasi pengaturan sampling, grup, dan enkripsi dengan API AWS X-Ray](xray-api-configuration.md)
+ [Penggunaan aturan pengambilan sampel dengan API X-Ray](xray-api-sampling.md)
+ [AWS X-Ray dokumen segmen](xray-api-segmentdocuments.md)

# Menggunakan AWS X-Ray API dengan AWS CLI
<a name="xray-api-tutorial"></a>

 AWS CLI memungkinkan Anda mengakses layanan X-Ray secara langsung dan menggunakan yang sama dengan APIs yang digunakan konsol X-Ray untuk mengambil grafik layanan dan data jejak mentah. Aplikasi sampel mencakup skrip yang menunjukkan cara menggunakannya APIs dengan AWS CLI.

## Prasyarat
<a name="xray-api-tutorial-prerequisites"></a>

Tutorial ini menggunakan aplikasi sampel Scorekeep dan termasuk skrip untuk menghasilkan data pelacakan dan peta layanan. Ikuti instruksi di [Memulai tutorial](xray-gettingstarted.md) untuk meluncurkan aplikasi.

Tutorial ini menggunakan AWS CLI untuk menunjukkan penggunaan dasar X-Ray API. AWS CLI, [tersedia untuk Windows, Linux, dan OS-X](https://docs.aws.amazon.com/cli/latest/userguide/installing.html), menyediakan akses baris perintah ke publik untuk semua. APIs Layanan AWS

**catatan**  
Anda harus memverifikasi bahwa Anda AWS CLI dikonfigurasi ke Wilayah yang sama tempat aplikasi sampel Scorekeep Anda dibuat.

Skrip disertakan untuk menguji aplikasi sampel menggunakan `cURL` untuk mengirim lalu lintas ke API dan `jq` untuk mengurai output. Anda dapat mengunduh `jq` eksekusi dari [stedolan.github.io](https://stedolan.github.io/jq/), dan `curl` eksekusi dari [https://curl.haxx.se/download.html](https://curl.haxx.se/download.html). Sebagian besar instalasi Linux dan OS X mencakup cURL.

## Hasilkan data pelacakan
<a name="xray-api-tutorial-generatedata"></a>

Aplikasi web terus menghasilkan lalu lintas ke API setiap beberapa detik saat game sedang berlangsung, tetapi hanya menghasilkan satu tipe permintaan. Gunakan skrip `test-api.sh` untuk menjalankan skenario end to end dan menghasilkan data pelacakan yang lebih beragam saat Anda menguji API.

**Untuk menggunakan skrip `test-api.sh`**

1. Buka [Konsol Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk).

1. Navigasikan ke [konsol manajemen](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-console.html) untuk lingkungan Anda.

1. Salin **URL** lingkungan dari header halaman.

1. Buka `bin/test-api.sh` dan ganti nilai untuk API dengan URL lingkungan Anda.

   ```
   #!/bin/bash
   API=scorekeep.9hbtbm23t2.us-west-2.elasticbeanstalk.com/api
   ```

1. Jalankan skrip untuk menghasilkan lalu lintas ke API.

   ```
   ~/debugger-tutorial$ ./bin/test-api.sh
   Creating users,
   session,
   game,
   configuring game,
   playing game,
   ending game,
   game complete.
   {"id":"MTBP8BAS","session":"HUF6IT64","name":"tic-tac-toe-test","users":["QFF3HBGM","KL6JR98D"],"rules":"102","startTime":1476314241,"endTime":1476314245,"states":["JQVLEOM2","D67QLPIC","VF9BM9NC","OEAA6GK9","2A705O73","1U2LFTLJ","HUKIDD70","BAN1C8FI","G3UDJTUF","AB70HVEV"],"moves":["BS8F8LQ","4MTTSPKP","463OETES","SVEBCL3N","N7CQ1GHP","O84ONEPD","EG4BPROQ","V4BLIDJ3","9RL3NPMV"]}
   ```

## Gunakan API X-Ray
<a name="xray-api-tutorial-useapi"></a>

 AWS CLI menyediakan perintah untuk semua tindakan API yang disediakan X-Ray, termasuk [https://docs.aws.amazon.com/xray/latest/api/API_GetServiceGraph.html](https://docs.aws.amazon.com/xray/latest/api/API_GetServiceGraph.html)dan. [https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSummaries.html](https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSummaries.html) Lihat [AWS X-Ray Referensi API](https://docs.aws.amazon.com/xray/latest/api/Welcome.html) untuk informasi selengkapnya tentang semua tindakan yang didukung dan tipe data yang mereka gunakan.

**Example bin/service-graph.sh**  

```
EPOCH=$(date +%s)
aws xray get-service-graph --start-time $(($EPOCH-600)) --end-time $EPOCH
```
Skrip mengambil grafik layanan selama 10 menit terakhir.  

```
~/eb-java-scorekeep$ ./bin/service-graph.sh | less
{
    "StartTime": 1479068648.0,
    "Services": [
        {
            "StartTime": 1479068648.0,
            "ReferenceId": 0,
            "State": "unknown",
            "EndTime": 1479068651.0,
            "Type": "client",
            "Edges": [
                {
                    "StartTime": 1479068648.0,
                    "ReferenceId": 1,
                    "SummaryStatistics": {
                        "ErrorStatistics": {
                            "ThrottleCount": 0,
                            "TotalCount": 0,
                            "OtherCount": 0
                        },
                        "FaultStatistics": {
                            "TotalCount": 0,
                            "OtherCount": 0
                        },
                        "TotalCount": 2,
                        "OkCount": 2,
                        "TotalResponseTime": 0.054000139236450195
                    },
                    "EndTime": 1479068651.0,
                    "Aliases": []
                }
            ]
        },
        {
            "StartTime": 1479068648.0,
            "Names": [
                "scorekeep.elasticbeanstalk.com"
            ],
            "ReferenceId": 1,
            "State": "active",
            "EndTime": 1479068651.0,
            "Root": true,
            "Name": "scorekeep.elasticbeanstalk.com",
...
```

**Example bin/trace-urls.sh**  

```
EPOCH=$(date +%s)
aws xray get-trace-summaries --start-time $(($EPOCH-120)) --end-time $(($EPOCH-60)) --query 'TraceSummaries[*].Http.HttpURL'
```
Script mengambil jejak yang URLs dihasilkan antara satu dan dua menit yang lalu.  

```
~/eb-java-scorekeep$ ./bin/trace-urls.sh
[
    "http://scorekeep.elasticbeanstalk.com/api/game/6Q0UE1DG/5FGLM9U3/endtime/1479069438",
    "http://scorekeep.elasticbeanstalk.com/api/session/KH4341QH",
    "http://scorekeep.elasticbeanstalk.com/api/game/GLQBJ3K5/153AHDIA",
    "http://scorekeep.elasticbeanstalk.com/api/game/VPDL672J/G2V41HM6/endtime/1479069466"
]
```

**Example bin/full-traces.sh**  

```
EPOCH=$(date +%s)
TRACEIDS=$(aws xray get-trace-summaries --start-time $(($EPOCH-120)) --end-time $(($EPOCH-60)) --query 'TraceSummaries[*].Id' --output text)
aws xray batch-get-traces --trace-ids $TRACEIDS --query 'Traces[*]'
```
Skrip mengambil pelacakan penuh yang dihasilkan antara satu dan dua menit yang lalu.  

```
~/eb-java-scorekeep$ ./bin/full-traces.sh | less
[
    {
        "Segments": [
            {
                "Id": "3f212bc237bafd5d",
                "Document": "{\"id\":\"3f212bc237bafd5d\",\"name\":\"DynamoDB\",\"trace_id\":\"1-5828d9f2-a90669393f4343211bc1cf75\",\"start_time\":1.479072242459E9,\"end_time\":1.479072242477E9,\"parent_id\":\"72a08dcf87991ca9\",\"http\":{\"response\":{\"content_length\":60,\"status\":200}},\"inferred\":true,\"aws\":{\"consistent_read\":false,\"table_name\":\"scorekeep-session-xray\",\"operation\":\"GetItem\",\"request_id\":\"QAKE0S8DD0LJM245KAOPMA746BVV4KQNSO5AEMVJF66Q9ASUAAJG\",\"resource_names\":[\"scorekeep-session-xray\"]},\"origin\":\"AWS::DynamoDB::Table\"}"
            },
            {
                "Id": "309e355f1148347f",
                "Document": "{\"id\":\"309e355f1148347f\",\"name\":\"DynamoDB\",\"trace_id\":\"1-5828d9f2-a90669393f4343211bc1cf75\",\"start_time\":1.479072242477E9,\"end_time\":1.479072242494E9,\"parent_id\":\"37f14ef837f00022\",\"http\":{\"response\":{\"content_length\":606,\"status\":200}},\"inferred\":true,\"aws\":{\"table_name\":\"scorekeep-game-xray\",\"operation\":\"UpdateItem\",\"request_id\":\"388GEROC4PCA6D59ED3CTI5EEJVV4KQNSO5AEMVJF66Q9ASUAAJG\",\"resource_names\":[\"scorekeep-game-xray\"]},\"origin\":\"AWS::DynamoDB::Table\"}"
            }
        ],
        "Id": "1-5828d9f2-a90669393f4343211bc1cf75",
        "Duration": 0.05099987983703613
    }
...
```

## Pembersihan
<a name="xray-api-tutorial-cleanup"></a>

Hentikan lingkungan Elastic Beanstalk Anda untuk mematikan instans EC2 Amazon, tabel DynamoDB, dan sumber daya lainnya.

**Untuk mengakhiri lingkungan Elastic Beanstalk**

1. Buka [Konsol Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk).

1. Navigasikan ke [konsol manajemen](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-console.html) untuk lingkungan Anda.

1. Pilih **Tindakan**.

1. Pilih **Akhiri Lingkungan**.

1. Pilih **Akhiri**.

Data pelacakan dihapus secara otomatis dari X-Ray setelah 30 hari.

# Mengirim data jejak ke AWS X-Ray
<a name="xray-api-sendingdata"></a>

Anda dapat mengirim data pelacakan ke X-Ray dalam bentuk dokumen segmen. Sebuah dokumen segmen adalah string berformat JSON yang berisi informasi tentang pekerjaan yang dilakukan aplikasi Anda dalam pelayanan permintaan. Aplikasi Anda dapat mencatat data tentang pekerjaan yang dilakukannya sendiri di segmen, atau pekerjaan yang menggunakan layanan hilir dan sumber daya di subsegment.

Segmen mencatat informasi tentang pekerjaan yang dilakukan aplikasi Anda. Segmen, minimal, mencatat waktu yang dihabiskan untuk tugas, nama, dan dua IDs. ID pelacakan melacak permintaan saat perjalanan antara layanan. ID segmen melacak pekerjaan yang dilakukan untuk permintaan oleh satu layanan.

**Example Segmen lengkap minimal**  

```
{
  "name" : "Scorekeep",
  "id" : "70de5b6f19ff9a0a",
  "start_time" : 1.478293361271E9,
  "trace_id" : "1-581cf771-a006649127e371903a2de979",
  "end_time" : 1.478293361449E9
}
```

Ketika permintaan diterima, Anda dapat mengirim segmen yang sedang berlangsung sebagai placeholder sampai permintaan selesai.

**Example Segmen yang sedang berlangsung**  

```
{
  "name" : "Scorekeep",
  "id" : "70de5b6f19ff9a0b",
  "start_time" : 1.478293361271E9,
  "trace_id" : "1-581cf771-a006649127e371903a2de979",
  “in_progress”: true
}
```

Anda dapat mengirim segmen ke X-Ray secara langsung, dengan [`PutTraceSegments`](#xray-api-segments), atau [melalui daemon X-Ray](#xray-api-daemon).

Sebagian besar aplikasi memanggil layanan lain atau mengakses sumber daya dengan AWS SDK. Mencatat informasi tentang panggilan hilir di *subsegmen*. X-Ray menggunakan subsegmen untuk mengidentifikasi layanan hilir yang tidak mengirim segmen dan membuat entri untuk mereka di grafik layanan.

Sebuah subsegmen dapat ditanamkan dalam dokumen segmen penuh, atau dikirim secara terpisah. Kirim subsegmen secara terpisah untuk melacak panggilan hilir secara asinkron untuk permintaan yang berlangsung lama, atau untuk menghindari melebihi ukuran dokumen segmen maksimum (64 kB).

**Example Subsegmen**  
Subsegmen memiliki `type` dari `subsegment` dan `parent_id` yang mengidentifikasi segmen induk.  

```
{
  "name" : "www2.example.com",
  "id" : "70de5b6f19ff9a0c",
  "start_time" : 1.478293361271E9,
  "trace_id" : "1-581cf771-a006649127e371903a2de979"
  “end_time” : 1.478293361449E9,
  “type” : “subsegment”,
  “parent_id” : “70de5b6f19ff9a0b”
}
```

Untuk informasi selengkapnya tentang bidang dan nilai yang dapat Anda sertakan dalam segmen dan subsegmen, lihat [AWS X-Ray dokumen segmen](xray-api-segmentdocuments.md).

**Topics**
+ [Menghasilkan jejak IDs](#xray-api-traceids)
+ [Menggunakan PutTraceSegments](#xray-api-segments)
+ [Mengirim dokumen segmen ke daemon X-Ray](#xray-api-daemon)

## Menghasilkan jejak IDs
<a name="xray-api-traceids"></a>

Untuk mengirim data ke X-Ray, Anda harus menghasilkan ID jejak unik untuk setiap permintaan.

**Format ID jejak X-Ray**

`trace_id`X-Ray terdiri dari tiga angka yang dipisahkan oleh tanda hubung. Contohnya, `1-58406520-a006649127e371903a2de979`. Hal ini mencakup:
+ Nomor versi, yaitu`1`.
+ Waktu permintaan asli dalam waktu epoch Unix menggunakan **8 digit heksadesimal**.

  Misalnya, 10:00 AM 1 Desember 2016 PST dalam waktu epoch adalah `1480615200` detik atau `58406520` dalam digit heksadesimal.
+ Pengidentifikasi 96-bit yang unik secara global untuk jejak dalam **24** digit heksadesimal.

**catatan**  
X-Ray sekarang mendukung jejak IDs yang dibuat menggunakan OpenTelemetry dan kerangka kerja lain yang sesuai dengan spesifikasi [W3C Trace](https://www.w3.org/TR/trace-context/) Context. ID jejak W3C harus diformat dalam format X-Ray Trace ID saat mengirim ke X-Ray. Misalnya, ID jejak W3C `4efaaf4d1e8720b39541901950019ee5` harus diformat seperti `1-4efaaf4d-1e8720b39541901950019ee5` saat mengirim ke X-Ray. Jejak X-Ray IDs menyertakan cap waktu permintaan asli dalam waktu epoch Unix, tetapi ini tidak diperlukan saat mengirim jejak IDs W3C dalam format X-Ray. 

Anda dapat menulis skrip untuk menghasilkan jejak X-Ray IDs untuk pengujian. Berikut ini adalah dua contoh.

**Python**

```
import time
import os
import binascii

START_TIME = time.time()
HEX=hex(int(START_TIME))[2:]
TRACE_ID="1-{}-{}".format(HEX, binascii.hexlify(os.urandom(12)).decode('utf-8'))
```

**Bash**

```
START_TIME=$(date +%s)
HEX_TIME=$(printf '%x\n' $START_TIME)
GUID=$(dd if=/dev/random bs=12 count=1 2>/dev/null | od -An -tx1 | tr -d ' \t\n')
TRACE_ID="1-$HEX_TIME-$GUID"
```

Lihat contoh aplikasi Scorekeep untuk skrip yang membuat jejak IDs dan mengirim segmen ke daemon X-Ray.
+ Python – [https://github.com/awslabs/eb-java-scorekeep/blob/xray/bin/xray_start.py](https://github.com/awslabs/eb-java-scorekeep/blob/xray/bin/xray_start.py)
+ Bash – [https://github.com/awslabs/eb-java-scorekeep/blob/xray/bin/xray_start.sh](https://github.com/awslabs/eb-java-scorekeep/blob/xray/bin/xray_start.sh)

## Menggunakan PutTraceSegments
<a name="xray-api-segments"></a>

Anda dapat mengunggah dokumen segmen dengan API [https://docs.aws.amazon.com/xray/latest/api/API_PutTraceSegments.html](https://docs.aws.amazon.com/xray/latest/api/API_PutTraceSegments.html). API memiliki parameter tunggal , `TraceSegmentDocuments`, yang mengambil daftar dokumen segmen JSON.

Dengan AWS CLI, gunakan perintah `aws xray put-trace-segments` untuk mengirim dokumen segmen langsung ke X-Ray.

```
$ DOC='{"trace_id": "1-5960082b-ab52431b496add878434aa25", "id": "6226467e3f845502", "start_time": 1498082657.37518, "end_time": 1498082695.4042, "name": "test.elasticbeanstalk.com"}'
$ aws xray put-trace-segments --trace-segment-documents "$DOC"
{
    "UnprocessedTraceSegments": []
}
```

**catatan**  
Windows Command Processor dan Windows PowerShell memiliki persyaratan yang berbeda untuk mengutip dan melarikan diri dari kutipan dalam string JSON. Lihat [Mengutip String](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#quoting-strings) di Panduan Pengguna AWS CLI untuk detail.

Output mencantumkan segmen yang gagal diproses. Misalnya, jika tanggal di ID pelacakan terlalu lama di masa lalu, Anda melihat kesalahan seperti berikut ini.

```
{
    "UnprocessedTraceSegments": [
        {
            "ErrorCode": "InvalidTraceId",
            "Message": "Invalid segment. ErrorCode: InvalidTraceId",
            "Id": "6226467e3f845502"
        }
    ]
}
```

Anda dapat melewati beberapa dokumen segmen pada saat yang sama, dipisahkan oleh spasi.

```
$ aws xray put-trace-segments --trace-segment-documents "$DOC1" "$DOC2"
```

## Mengirim dokumen segmen ke daemon X-Ray
<a name="xray-api-daemon"></a>

Daripada mengirim dokumen segmen ke API X-Ray, Anda dapat mengirim segmen dan subsegmen ke daemon X-Ray, yang akan menyangga dokumen tersebut dan mengunggahnya ke API X-Ray dalam batch. X-Ray SDK mengirimkan dokumen segmen ke daemon untuk menghindari panggilan ke AWS secara langsung.

**catatan**  
Lihat [Menjalankan daemon X-Ray secara lokal](xray-daemon-local.md) sebagai petunjuk tentang menjalankan daemon.

Kirim segmen di JSON melalui UDP port 2000, diawali dengan header daemon, `{"format": "json", "version": 1}\n`

```
{"format": "json", "version": 1}\n{"trace_id": "1-5759e988-bd862e3fe1be46a994272793", "id": "defdfd9912dc5a56", "start_time": 1461096053.37518, "end_time": 1461096053.4042, "name": "test.elasticbeanstalk.com"}
```

Di Linux, Anda dapat mengirim dokumen segmen ke daemon dari terminal Bash. Simpan header dan segmen dokumen ke file teks dan alirkan ke `/dev/udp` dengan `cat`.

```
$ cat segment.txt > /dev/udp/127.0.0.1/2000
```

**Example segment.txt**  

```
{"format": "json", "version": 1}
{"trace_id": "1-594aed87-ad72e26896b3f9d3a27054bb", "id": "6226467e3f845502", "start_time": 1498082657.37518, "end_time": 1498082695.4042, "name": "test.elasticbeanstalk.com"}
```

Periksa [log daemon](xray-daemon.md#xray-daemon-logging) untuk memverifikasi bahwa segmen tersebut telah dikirim ke X-Ray.

```
2017-07-07T01:57:24Z [Debug] processor: sending partial batch
2017-07-07T01:57:24Z [Debug] processor: segment batch size: 1. capacity: 50
2017-07-07T01:57:24Z [Info] Successfully sent batch of 1 segments (0.020 seconds)
```

# Mendapatkan data dari AWS X-Ray
<a name="xray-api-gettingdata"></a>

AWS X-Ray memproses data jejak yang Anda kirim untuk menghasilkan jejak lengkap, ringkasan jejak, dan grafik layanan di JSON. Anda dapat mengambil data yang dihasilkan langsung dari API dengan AWS CLI.

**Topics**
+ [Mengambil grafik layanan](#xray-api-servicegraph)
+ [Mengambil grafik layanan berdasarkan grup](#xray-api-servicegraphgroup)
+ [Mengambil pelacakan](#xray-api-traces)
+ [Mengambil dan menyempurnakan analitik akar masalah](#xray-api-analytics)

## Mengambil grafik layanan
<a name="xray-api-servicegraph"></a>

Anda dapat menggunakan [https://docs.aws.amazon.com/xray/latest/api/API_GetServiceGraph.html](https://docs.aws.amazon.com/xray/latest/api/API_GetServiceGraph.html) API untuk mengambil grafik layanan JSON. API memerlukan waktu mulai dan waktu berakhir, yang dapat Anda hitung dari terminal Linux dengan perintah `date`.

```
$ date +%s
1499394617
```

`date +%s` mencetak tanggal dalam hitungan detik. Gunakan angka ini sebagai waktu berakhir dan kurangi waktu darinya untuk mendapatkan waktu mulai.

**Example Skrip untuk mengambil grafik layanan selama 10 menit terakhir**  

```
EPOCH=$(date +%s)
aws xray get-service-graph --start-time $(($EPOCH-600)) --end-time $EPOCH
```

Contoh berikut menunjukkan grafik layanan dengan 4 node, termasuk node klien, EC2 instance, tabel DynamoDB, dan topik Amazon SNS.

**Example GetServiceGraph keluaran**  

```
{
    "Services": [
        {
            "ReferenceId": 0,
            "Name": "xray-sample.elasticbeanstalk.com",
            "Names": [
                "xray-sample.elasticbeanstalk.com"
            ],
            "Type": "client",
            "State": "unknown",
            "StartTime": 1528317567.0,
            "EndTime": 1528317589.0,
            "Edges": [
                {
                    "ReferenceId": 2,
                    "StartTime": 1528317567.0,
                    "EndTime": 1528317589.0,
                    "SummaryStatistics": {
                        "OkCount": 3,
                        "ErrorStatistics": {
                            "ThrottleCount": 0,
                            "OtherCount": 1,
                            "TotalCount": 1
                        },
                        "FaultStatistics": {
                            "OtherCount": 0,
                            "TotalCount": 0
                        },
                        "TotalCount": 4,
                        "TotalResponseTime": 0.273
                    },
                    "ResponseTimeHistogram": [
                        {
                            "Value": 0.005,
                            "Count": 1
                        },
                        {
                            "Value": 0.015,
                            "Count": 1
                        },
                        {
                            "Value": 0.157,
                            "Count": 1
                        },
                        {
                            "Value": 0.096,
                            "Count": 1
                        }
                    ],
                    "Aliases": []
                }
            ]
        },
        {
            "ReferenceId": 1,
            "Name": "awseb-e-dixzws4s9p-stack-StartupSignupsTable-4IMSMHAYX2BA",
            "Names": [
                "awseb-e-dixzws4s9p-stack-StartupSignupsTable-4IMSMHAYX2BA"
            ],
            "Type": "AWS::DynamoDB::Table",
            "State": "unknown",
            "StartTime": 1528317583.0,
            "EndTime": 1528317589.0,
            "Edges": [],
            "SummaryStatistics": {
                "OkCount": 2,
                "ErrorStatistics": {
                    "ThrottleCount": 0,
                    "OtherCount": 0,
                    "TotalCount": 0
                },
                "FaultStatistics": {
                    "OtherCount": 0,
                    "TotalCount": 0
                },
                "TotalCount": 2,
                "TotalResponseTime": 0.12
            },
            "DurationHistogram": [
                {
                    "Value": 0.076,
                    "Count": 1
                },
                {
                    "Value": 0.044,
                    "Count": 1
                }
            ],
            "ResponseTimeHistogram": [
                {
                    "Value": 0.076,
                    "Count": 1
                },
                {
                    "Value": 0.044,
                    "Count": 1
                }
            ]
        },
        {
            "ReferenceId": 2,
            "Name": "xray-sample.elasticbeanstalk.com",
            "Names": [
                "xray-sample.elasticbeanstalk.com"
            ],
            "Root": true,
            "Type": "AWS::EC2::Instance",
            "State": "active",
            "StartTime": 1528317567.0,
            "EndTime": 1528317589.0,
            "Edges": [
                {
                    "ReferenceId": 1,
                    "StartTime": 1528317567.0,
                    "EndTime": 1528317589.0,
                    "SummaryStatistics": {
                        "OkCount": 2,
                        "ErrorStatistics": {
                            "ThrottleCount": 0,
                            "OtherCount": 0,
                            "TotalCount": 0
                        },
                        "FaultStatistics": {
                            "OtherCount": 0,
                            "TotalCount": 0
                        },
                        "TotalCount": 2,
                        "TotalResponseTime": 0.12
                    },
                    "ResponseTimeHistogram": [
                        {
                            "Value": 0.076,
                            "Count": 1
                        },
                        {
                            "Value": 0.044,
                            "Count": 1
                        }
                    ],
                    "Aliases": []
                },
                {
                    "ReferenceId": 3,
                    "StartTime": 1528317567.0,
                    "EndTime": 1528317589.0,
                    "SummaryStatistics": {
                        "OkCount": 2,
                        "ErrorStatistics": {
                            "ThrottleCount": 0,
                            "OtherCount": 0,
                            "TotalCount": 0
                        },
                        "FaultStatistics": {
                            "OtherCount": 0,
                            "TotalCount": 0
                        },
                        "TotalCount": 2,
                        "TotalResponseTime": 0.125
                    },
                    "ResponseTimeHistogram": [
                        {
                            "Value": 0.049,
                            "Count": 1
                        },
                        {
                            "Value": 0.076,
                            "Count": 1
                        }
                    ],
                    "Aliases": []
                }
            ],
            "SummaryStatistics": {
                "OkCount": 3,
                "ErrorStatistics": {
                    "ThrottleCount": 0,
                    "OtherCount": 1,
                    "TotalCount": 1
                },
                "FaultStatistics": {
                    "OtherCount": 0,
                    "TotalCount": 0
                },
                "TotalCount": 4,
                "TotalResponseTime": 0.273
            },
            "DurationHistogram": [
                {
                    "Value": 0.005,
                    "Count": 1
                },
                {
                    "Value": 0.015,
                    "Count": 1
                },
                {
                    "Value": 0.157,
                    "Count": 1
                },
                {
                    "Value": 0.096,
                    "Count": 1
                }
            ],
            "ResponseTimeHistogram": [
                {
                    "Value": 0.005,
                    "Count": 1
                },
                {
                    "Value": 0.015,
                    "Count": 1
                },
                {
                    "Value": 0.157,
                    "Count": 1
                },
                {
                    "Value": 0.096,
                    "Count": 1
                }
            ]
        },
        {
            "ReferenceId": 3,
            "Name": "SNS",
            "Names": [
                "SNS"
            ],
            "Type": "AWS::SNS",
            "State": "unknown",
            "StartTime": 1528317583.0,
            "EndTime": 1528317589.0,
            "Edges": [],
            "SummaryStatistics": {
                "OkCount": 2,
                "ErrorStatistics": {
                    "ThrottleCount": 0,
                    "OtherCount": 0,
                    "TotalCount": 0
                },
                "FaultStatistics": {
                    "OtherCount": 0,
                    "TotalCount": 0
                },
                "TotalCount": 2,
                "TotalResponseTime": 0.125
            },
            "DurationHistogram": [
                {
                    "Value": 0.049,
                    "Count": 1
                },
                {
                    "Value": 0.076,
                    "Count": 1
                }
            ],
            "ResponseTimeHistogram": [
                {
                    "Value": 0.049,
                    "Count": 1
                },
                {
                    "Value": 0.076,
                    "Count": 1
                }
            ]
        }
    ]
}
```

## Mengambil grafik layanan berdasarkan grup
<a name="xray-api-servicegraphgroup"></a>

Untuk memanggil grafik layanan berdasarkan konten grup, sertakan `groupName` atau `groupARN`. Contoh berikut menunjukkan panggilan grafik layanan ke grup bernama Example1.

**Example Skrip untuk mengambil grafik layanan berdasarkan nama untuk grup Example1**  

```
aws xray get-service-graph --group-name "Example1"
```

## Mengambil pelacakan
<a name="xray-api-traces"></a>

Anda dapat menggunakan API [https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSummaries.html](https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSummaries.html) untuk mendapatkan daftar ringkasan pelacakan. Ringkasan jejak mencakup informasi yang dapat Anda gunakan untuk mengidentifikasi jejak yang ingin Anda unduh secara lengkap, termasuk anotasi, informasi permintaan dan respons, dan. IDs

Ada dua bendera `TimeRangeType` tersedia ketika memanggil `aws xray get-trace-summaries`:
+ **TraceId**— `GetTraceSummaries` Pencarian default menggunakan waktu traceID dan mengembalikan jejak yang dimulai dalam rentang yang dihitung. `[start_time, end_time)` Rentang stempel waktu ini dihitung berdasarkan pengkodean stempel waktu di dalam TraceId, atau dapat didefinisikan secara manual.
+ **Waktu peristiwa** – Untuk mencari peristiwa yang terjadi dari waktu ke waktu, AWS X-Ray mengizinkan pencarian pelacakan menggunakan stempel waktu peristiwa. Waktu peristiwa mengembalikan pelacakan yang aktif selama jangkauan `[start_time, end_time)`, terlepas dari kapan penelusuran dimulai.

Gunakan perintah `aws xray get-trace-summaries` untuk mendapatkan daftar ringkasan pelacakan. Perintah berikut mendapatkan daftar ringkasan jejak dari antara 1 dan 2 menit di masa lalu menggunakan waktu default TraceId.

**Example Skrip untuk mendapatkan ringkasan pelacakan**  

```
EPOCH=$(date +%s)
aws xray get-trace-summaries --start-time $(($EPOCH-120)) --end-time $(($EPOCH-60))
```

**Example GetTraceSummaries keluaran**  

```
{
    "TraceSummaries": [
        {
            "HasError": false,
            "Http": {
                "HttpStatus": 200,
                "ClientIp": "205.255.255.183",
                "HttpURL": "http://scorekeep.elasticbeanstalk.com/api/session",
                "UserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
                "HttpMethod": "POST"
            },
            "Users": [],
            "HasFault": false,
            "Annotations": {},
            "ResponseTime": 0.084,
            "Duration": 0.084,
            "Id": "1-59602606-a43a1ac52fc7ee0eea12a82c",
            "HasThrottle": false
        },
        {
            "HasError": false,
            "Http": {
                "HttpStatus": 200,
                "ClientIp": "205.255.255.183",
                "HttpURL": "http://scorekeep.elasticbeanstalk.com/api/user",
                "UserAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36",
                "HttpMethod": "POST"
            },
            "Users": [
                {
                    "UserName": "5M388M1E"
                }
            ],
            "HasFault": false,
            "Annotations": {
                "UserID": [
                    {
                        "AnnotationValue": {
                            "StringValue": "5M388M1E"
                        }
                    }
                ],
                "Name": [
                    {
                        "AnnotationValue": {
                            "StringValue": "Ola"
                        }
                    }
                ]
            },
            "ResponseTime": 3.232,
            "Duration": 3.232,
            "Id": "1-59602603-23fc5b688855d396af79b496",
            "HasThrottle": false
        }
    ],
    "ApproximateTime": 1499473304.0,
    "TracesProcessedCount": 2
}
```

Gunakan ID pelacakan dari output untuk mengambil pelacakan penuh dengan API [https://docs.aws.amazon.com/xray/latest/api/API_BatchGetTraces.html](https://docs.aws.amazon.com/xray/latest/api/API_BatchGetTraces.html).

**Example BatchGetTraces perintah**  

```
$ aws xray batch-get-traces --trace-ids 1-596025b4-7170afe49f7aa708b1dd4a6b
```

**Example BatchGetTraces keluaran**  

```
{
    "Traces": [
        {
            "Duration": 3.232,
            "Segments": [
                {
                    "Document": "{\"id\":\"1fb07842d944e714\",\"name\":\"random-name\",\"start_time\":1.499473411677E9,\"end_time\":1.499473414572E9,\"parent_id\":\"0c544c1b1bbff948\",\"http\":{\"response\":{\"status\":200}},\"aws\":{\"request_id\":\"ac086670-6373-11e7-a174-f31b3397f190\"},\"trace_id\":\"1-59602603-23fc5b688855d396af79b496\",\"origin\":\"AWS::Lambda\",\"resource_arn\":\"arn:aws:lambda:us-west-2:123456789012:function:random-name\"}",
                    "Id": "1fb07842d944e714"
                },
                {
                    "Document": "{\"id\":\"194fcc8747581230\",\"name\":\"Scorekeep\",\"start_time\":1.499473411562E9,\"end_time\":1.499473414794E9,\"http\":{\"request\":{\"url\":\"http://scorekeep.elasticbeanstalk.com/api/user\",\"method\":\"POST\",\"user_agent\":\"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36\",\"client_ip\":\"205.251.233.183\"},\"response\":{\"status\":200}},\"aws\":{\"elastic_beanstalk\":{\"version_label\":\"app-abb9-170708_002045\",\"deployment_id\":406,\"environment_name\":\"scorekeep-dev\"},\"ec2\":{\"availability_zone\":\"us-west-2c\",\"instance_id\":\"i-0cd9e448944061b4a\"},\"xray\":{\"sdk_version\":\"1.1.2\",\"sdk\":\"X-Ray for Java\"}},\"service\":{},\"trace_id\":\"1-59602603-23fc5b688855d396af79b496\",\"user\":\"5M388M1E\",\"origin\":\"AWS::ElasticBeanstalk::Environment\",\"subsegments\":[{\"id\":\"0c544c1b1bbff948\",\"name\":\"Lambda\",\"start_time\":1.499473411629E9,\"end_time\":1.499473414572E9,\"http\":{\"response\":{\"status\":200,\"content_length\":14}},\"aws\":{\"log_type\":\"None\",\"status_code\":200,\"function_name\":\"random-name\",\"invocation_type\":\"RequestResponse\",\"operation\":\"Invoke\",\"request_id\":\"ac086670-6373-11e7-a174-f31b3397f190\",\"resource_names\":[\"random-name\"]},\"namespace\":\"aws\"},{\"id\":\"071684f2e555e571\",\"name\":\"## UserModel.saveUser\",\"start_time\":1.499473414581E9,\"end_time\":1.499473414769E9,\"metadata\":{\"debug\":{\"test\":\"Metadata string from UserModel.saveUser\"}},\"subsegments\":[{\"id\":\"4cd3f10b76c624b4\",\"name\":\"DynamoDB\",\"start_time\":1.49947341469E9,\"end_time\":1.499473414769E9,\"http\":{\"response\":{\"status\":200,\"content_length\":57}},\"aws\":{\"table_name\":\"scorekeep-user\",\"operation\":\"UpdateItem\",\"request_id\":\"MFQ8CGJ3JTDDVVVASUAAJGQ6NJ82F738BOB4KQNSO5AEMVJF66Q9\",\"resource_names\":[\"scorekeep-user\"]},\"namespace\":\"aws\"}]}]}",
                    "Id": "194fcc8747581230"
                },
                {
                    "Document": "{\"id\":\"00f91aa01f4984fd\",\"name\":\"random-name\",\"start_time\":1.49947341283E9,\"end_time\":1.49947341457E9,\"parent_id\":\"1fb07842d944e714\",\"aws\":{\"function_arn\":\"arn:aws:lambda:us-west-2:123456789012:function:random-name\",\"resource_names\":[\"random-name\"],\"account_id\":\"123456789012\"},\"trace_id\":\"1-59602603-23fc5b688855d396af79b496\",\"origin\":\"AWS::Lambda::Function\",\"subsegments\":[{\"id\":\"e6d2fe619f827804\",\"name\":\"annotations\",\"start_time\":1.499473413012E9,\"end_time\":1.499473413069E9,\"annotations\":{\"UserID\":\"5M388M1E\",\"Name\":\"Ola\"}},{\"id\":\"b29b548af4d54a0f\",\"name\":\"SNS\",\"start_time\":1.499473413112E9,\"end_time\":1.499473414071E9,\"http\":{\"response\":{\"status\":200}},\"aws\":{\"operation\":\"Publish\",\"region\":\"us-west-2\",\"request_id\":\"a2137970-f6fc-5029-83e8-28aadeb99198\",\"retries\":0,\"topic_arn\":\"arn:aws:sns:us-west-2:123456789012:awseb-e-ruag3jyweb-stack-NotificationTopic-6B829NT9V5O9\"},\"namespace\":\"aws\"},{\"id\":\"2279c0030c955e52\",\"name\":\"Initialization\",\"start_time\":1.499473412064E9,\"end_time\":1.499473412819E9,\"aws\":{\"function_arn\":\"arn:aws:lambda:us-west-2:123456789012:function:random-name\"}}]}",
                    "Id": "00f91aa01f4984fd"
                },
                {
                    "Document": "{\"id\":\"17ba309b32c7fbaf\",\"name\":\"DynamoDB\",\"start_time\":1.49947341469E9,\"end_time\":1.499473414769E9,\"parent_id\":\"4cd3f10b76c624b4\",\"inferred\":true,\"http\":{\"response\":{\"status\":200,\"content_length\":57}},\"aws\":{\"table_name\":\"scorekeep-user\",\"operation\":\"UpdateItem\",\"request_id\":\"MFQ8CGJ3JTDDVVVASUAAJGQ6NJ82F738BOB4KQNSO5AEMVJF66Q9\",\"resource_names\":[\"scorekeep-user\"]},\"trace_id\":\"1-59602603-23fc5b688855d396af79b496\",\"origin\":\"AWS::DynamoDB::Table\"}",
                    "Id": "17ba309b32c7fbaf"
                },
                {
                    "Document": "{\"id\":\"1ee3c4a523f89ca5\",\"name\":\"SNS\",\"start_time\":1.499473413112E9,\"end_time\":1.499473414071E9,\"parent_id\":\"b29b548af4d54a0f\",\"inferred\":true,\"http\":{\"response\":{\"status\":200}},\"aws\":{\"operation\":\"Publish\",\"region\":\"us-west-2\",\"request_id\":\"a2137970-f6fc-5029-83e8-28aadeb99198\",\"retries\":0,\"topic_arn\":\"arn:aws:sns:us-west-2:123456789012:awseb-e-ruag3jyweb-stack-NotificationTopic-6B829NT9V5O9\"},\"trace_id\":\"1-59602603-23fc5b688855d396af79b496\",\"origin\":\"AWS::SNS\"}",
                    "Id": "1ee3c4a523f89ca5"
                }
            ],
            "Id": "1-59602603-23fc5b688855d396af79b496"
        }
    ],
    "UnprocessedTraceIds": []
}
```

Pelacakan lengkap mencakup dokumen untuk setiap segmen, dikompilasi dari semua dokumen segmen yang diterima dengan ID pelacakan yang sama. Dokumen-dokumen ini tidak mewakili data karena dikirim ke X-Ray oleh aplikasi Anda. Sebaliknya, data-data tersebut mewakili dokumen yang diproses dihasilkan oleh layanan X-Ray. X-Ray membuat dokumen pelacakan lengkap dengan mengompilasi dokumen segmen yang dikirim oleh aplikasi Anda, dan menghapus data yang tidak sesuai dengan [ skema dokumen segmen ](xray-api-segmentdocuments.md).

X-Ray juga membuat *segmen yang disimpulkan* untuk panggilan hilir ke layanan yang tidak mengirim segmen itu sendiri. Misalnya, saat Anda memanggil DynamoDB dengan klien berinstrumen, X-Ray SDK mencatat subsegmen dengan detail tentang panggilan dari sudut pandangnya. Namun, DynamoDB tidak mengirim segmen yang sesuai. X-Ray menggunakan informasi di subsegmen untuk membuat segmen yang disimpulkan untuk mewakili sumber daya DynamoDB di peta jejak, dan menambahkannya ke dokumen jejak.

Untuk mendapatkan beberapa jejak dari API, Anda memerlukan daftar jejak IDs, yang dapat Anda ekstrak dari output `get-trace-summaries` dengan [AWS CLI kueri](https://docs.aws.amazon.com/cli/latest/userguide/controlling-output.html#controlling-output-filter). Alihkan ulang daftar ke input `batch-get-traces` untuk mendapatkan pelacakan penuh untuk jangka waktu tertentu.

**Example Skrip untuk mendapatkan pelacakan penuh selama satu menit**  

```
EPOCH=$(date +%s)
TRACEIDS=$(aws xray get-trace-summaries --start-time $(($EPOCH-120)) --end-time $(($EPOCH-60)) --query 'TraceSummaries[*].Id' --output text)
aws xray batch-get-traces --trace-ids $TRACEIDS --query 'Traces[*]'
```

## Mengambil dan menyempurnakan analitik akar masalah
<a name="xray-api-analytics"></a>

Setelah membuat ringkasan jejak dengan [GetTraceSummaries API](https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSummaries.html), ringkasan jejak sebagian dapat digunakan kembali dalam format JSON mereka untuk membuat ekspresi filter yang disempurnakan berdasarkan akar penyebab. Lihat contoh di bawah untuk panduan langkah-langkah penyempurnaan. 

**Example Contoh GetTraceSummaries keluaran - bagian akar penyebab waktu respons**  

```
{
  "Services": [
    {
      "Name": "GetWeatherData",
      "Names": ["GetWeatherData"],
      "AccountId": 123456789012,
      "Type": null,
      "Inferred": false,
      "EntityPath": [
        {
          "Name": "GetWeatherData",
          "Coverage": 1.0,
          'Remote": false
        },
        {
          "Name": "get_temperature",
          "Coverage": 0.8,
          "Remote": false
        }
      ]
    },
    {
      "Name": "GetTemperature",
      "Names": ["GetTemperature"],
      "AccountId": 123456789012,
      "Type": null,
      "Inferred": false,
      "EntityPath": [
        {
          "Name": "GetTemperature",
          "Coverage": 0.7,
          "Remote": false
        }
      ]
    }
  ] 
}
```

Dengan mengedit dan menghilangkan output di atas, JSON ini dapat menjadi filter untuk entitas akar masalah yang cocok. Untuk setiap bidang yang ada di JSON, setiap kandidat yang cocok harus sama persis, atau pelacakan tidak akan dikembalikan. Bidang yang dihapus menjadi nilai wildcard, format yang kompatibel dengan struktur kueri ekspresi filter. 

**Example Akar masalah waktu respons yang diformat ulang**  

```
{
  "Services": [
    {
      "Name": "GetWeatherData",
      "EntityPath": [
        {
          "Name": "GetWeatherData"
        },
        {
          "Name": "get_temperature"
        }
      ]
    },
    {
      "Name": "GetTemperature",
      "EntityPath": [
        {
          "Name": "GetTemperature"
        }
      ]
    }
  ]
}
```

JSON ini kemudian digunakan sebagai bagian dari ekspresi filter melalui panggilan ke `rootcause.json = #[{}]`. Mengacu kepada [ Filter Ekspresi ](xray-console-filters.md) bab untuk detail selengkapnya tentang kueri dengan ekspresi filter.

**Example Contoh filter JSON**  

```
rootcause.json = #[{ "Services": [ { "Name": "GetWeatherData", "EntityPath": [{ "Name": "GetWeatherData" }, { "Name": "get_temperature" } ] }, { "Name": "GetTemperature", "EntityPath": [ { "Name": "GetTemperature" } ] } ] }]
```

# Mengkonfigurasi pengaturan sampling, grup, dan enkripsi dengan API AWS X-Ray
<a name="xray-api-configuration"></a>

AWS X-Ray menyediakan APIs untuk mengonfigurasi [aturan pengambilan sampel, aturan](xray-console-sampling.md) grup, dan pengaturan [enkripsi](xray-console-encryption.md).

**Topics**
+ [Pengaturan Enkripsi](#xray-api-configuration-encryption)
+ [Aturan pengambilan sampel](#xray-api-configuration-sampling)
+ [Grup](#xray-api-configuration-groups)

## Pengaturan Enkripsi
<a name="xray-api-configuration-encryption"></a>

Gunakan [https://docs.aws.amazon.com/xray/latest/api/API_PutEncryptionConfig.html](https://docs.aws.amazon.com/xray/latest/api/API_PutEncryptionConfig.html)untuk menentukan kunci AWS Key Management Service (AWS KMS) yang akan digunakan untuk enkripsi. 

**catatan**  
X-Ray tidak mendukung tombol KMS asimetris.

```
$ aws xray put-encryption-config --type KMS --key-id alias/aws/xray
{
    "EncryptionConfig": {
        "KeyId": "arn:aws:kms:us-east-2:123456789012:key/c234g4e8-39e9-4gb0-84e2-b0ea215cbba5",
        "Status": "UPDATING",
        "Type": "KMS"
    }
}
```

Untuk ID kunci, Anda dapat menggunakan alias (seperti yang ditunjukkan dalam contoh), ID kunci, atau Amazon Resource Name (ARN).

Gunakan [https://docs.aws.amazon.com/xray/latest/api/API_GetEncryptionConfig.html](https://docs.aws.amazon.com/xray/latest/api/API_GetEncryptionConfig.html) untuk mendapatkan konfigurasi saat ini. Setelah X-Ray selesai menerapkan pengaturan Anda, status akan berubah dari `UPDATING` ke `ACTIVE`.

```
$ aws xray get-encryption-config
{
    "EncryptionConfig": {
        "KeyId": "arn:aws:kms:us-east-2:123456789012:key/c234g4e8-39e9-4gb0-84e2-b0ea215cbba5",
        "Status": "ACTIVE",
        "Type": "KMS"
    }
}
```

Untuk berhenti menggunakan kunci KMS dan menggunakan enkripsi default, atur jenis enkripsi ke`NONE`.

```
$ aws xray put-encryption-config --type NONE
{
    "EncryptionConfig": {
        "Status": "UPDATING",
        "Type": "NONE"
    }
}
```

## Aturan pengambilan sampel
<a name="xray-api-configuration-sampling"></a>

Anda dapat mengelola [aturan pengambilan sampel](xray-console-sampling.md) di akun Anda dengan X-Ray API. Untuk informasi selengkapnya tentang menambahkan dan mengelola tag, lihat[Menandai aturan dan grup pengambilan sampel X-Ray](xray-tagging.md).

Dapatkan semua aturan pengambilan sampel dengan [https://docs.aws.amazon.com/xray/latest/api/API_GetSamplingRules.html](https://docs.aws.amazon.com/xray/latest/api/API_GetSamplingRules.html).

```
$ aws xray get-sampling-rules
{
    "SamplingRuleRecords": [
        {
            "SamplingRule": {
                "RuleName": "Default",
                "RuleARN": "arn:aws:xray:us-east-2:123456789012:sampling-rule/Default",
                "ResourceARN": "*",
                "Priority": 10000,
                "FixedRate": 0.05,
                "ReservoirSize": 1,
                "ServiceName": "*",
                "ServiceType": "*",
                "Host": "*",
                "HTTPMethod": "*",
                "URLPath": "*",
                "Version": 1,
                "Attributes": {}
            },
            "CreatedAt": 0.0,
            "ModifiedAt": 1529959993.0
        }
    ]
}
```

Aturan default berlaku untuk semua permintaan yang tidak cocok dengan aturan lain. Ini adalah aturan prioritas terendah dan tidak dapat dihapus. Namun, Anda dapat mengubah tingkat dan ukuran reservoir dengan [https://docs.aws.amazon.com/xray/latest/api/API_UpdateSamplingRule.html](https://docs.aws.amazon.com/xray/latest/api/API_UpdateSamplingRule.html).

**Example Input API untuk [https://docs.aws.amazon.com/xray/latest/api/API_UpdateSamplingRule.html](https://docs.aws.amazon.com/xray/latest/api/API_UpdateSamplingRule.html) – 10000-default.json**  

```
{
    "SamplingRuleUpdate": {
        "RuleName": "Default",
        "FixedRate": 0.01,
        "ReservoirSize": 0
    }
}
```

Contoh berikut menggunakan file sebelumnya sebagai input untuk mengubah aturan default ke satu persen tanpa reservoir. Tanda adalah opsional. Jika Anda memilih untuk menambahkan tanda, kunci tanda diperlukan, dan nilai tanda adalah opsional. Untuk menghapus tag yang ada dari aturan pengambilan sampel, gunakan [UntagResource](https://docs.aws.amazon.com/xray/latest/api/API_UntagResource.html)

```
$ aws xray update-sampling-rule --cli-input-json file://1000-default.json --tags [{"Key": "key_name","Value": "value"},{"Key": "key_name","Value": "value"}]
{
    "SamplingRuleRecords": [
        {
            "SamplingRule": {
                "RuleName": "Default",
                "RuleARN": "arn:aws:xray:us-east-2:123456789012:sampling-rule/Default",
                "ResourceARN": "*",
                "Priority": 10000,
                "FixedRate": 0.01,
                "ReservoirSize": 0,
                "ServiceName": "*",
                "ServiceType": "*",
                "Host": "*",
                "HTTPMethod": "*",
                "URLPath": "*",
                "Version": 1,
                "Attributes": {}
            },
            "CreatedAt": 0.0,
            "ModifiedAt": 1529959993.0
        },
```

Buat aturan pengambilan sampel tambahan dengan [https://docs.aws.amazon.com/xray/latest/api/API_CreateSamplingRule.html](https://docs.aws.amazon.com/xray/latest/api/API_CreateSamplingRule.html). Bila Anda membuat aturan, sebagian besar bidang aturan diperlukan. Contoh berikut ini menampilkan pembuatan dua aturan. Aturan pertama ini menetapkan tingkat dasar untuk aplikasi sampel Scorekeep. Aturan tersebut cocok dengan semua permintaan yang dilayani oleh API yang tidak cocok dengan aturan prioritas yang lebih tinggi.

**Example Input API untuk [https://docs.aws.amazon.com/xray/latest/api/API_UpdateSamplingRule.html](https://docs.aws.amazon.com/xray/latest/api/API_UpdateSamplingRule.html) – 9000-base-scorekeep.json**  

```
{
    "SamplingRule": {
        "RuleName": "base-scorekeep",
        "ResourceARN": "*",
        "Priority": 9000,
        "FixedRate": 0.1,
        "ReservoirSize": 5,
        "ServiceName": "Scorekeep",
        "ServiceType": "*",
        "Host": "*",
        "HTTPMethod": "*",
        "URLPath": "*",
        "Version": 1
    }
}
```

Aturan kedua juga berlaku untuk Scorekeep, tetapi memiliki prioritas yang lebih tinggi dan lebih spesifik. Aturan ini menetapkan tingkat pengambilan sampel yang sangat rendah atas permintaan polling. Ini adalah permintaan GET yang dibuat oleh klien setiap beberapa detik untuk memeriksa perubahan pada status game.

**Example Input API untuk [https://docs.aws.amazon.com/xray/latest/api/API_UpdateSamplingRule.html](https://docs.aws.amazon.com/xray/latest/api/API_UpdateSamplingRule.html) – 5000-polling-scorekeep.json**  

```
{
    "SamplingRule": {
        "RuleName": "polling-scorekeep",
        "ResourceARN": "*",
        "Priority": 5000,
        "FixedRate": 0.003,
        "ReservoirSize": 0,
        "ServiceName": "Scorekeep",
        "ServiceType": "*",
        "Host": "*",
        "HTTPMethod": "GET",
        "URLPath": "/api/state/*",
        "Version": 1
    }
}
```

Tanda adalah opsional. Jika Anda memilih untuk menambahkan tanda, kunci tanda diperlukan, dan nilai tanda adalah opsional.

```
$ aws xray create-sampling-rule --cli-input-json file://5000-polling-scorekeep.json --tags [{"Key": "key_name","Value": "value"},{"Key": "key_name","Value": "value"}]
{
    "SamplingRuleRecord": {
        "SamplingRule": {
            "RuleName": "polling-scorekeep",
            "RuleARN": "arn:aws:xray:us-east-1:123456789012:sampling-rule/polling-scorekeep",
            "ResourceARN": "*",
            "Priority": 5000,
            "FixedRate": 0.003,
            "ReservoirSize": 0,
            "ServiceName": "Scorekeep",
            "ServiceType": "*",
            "Host": "*",
            "HTTPMethod": "GET",
            "URLPath": "/api/state/*",
            "Version": 1,
            "Attributes": {}
        },
        "CreatedAt": 1530574399.0,
        "ModifiedAt": 1530574399.0
    }
}
$ aws xray create-sampling-rule --cli-input-json file://9000-base-scorekeep.json
{
    "SamplingRuleRecord": {
        "SamplingRule": {
            "RuleName": "base-scorekeep",
            "RuleARN": "arn:aws:xray:us-east-1:123456789012:sampling-rule/base-scorekeep",
            "ResourceARN": "*",
            "Priority": 9000,
            "FixedRate": 0.1,
            "ReservoirSize": 5,
            "ServiceName": "Scorekeep",
            "ServiceType": "*",
            "Host": "*",
            "HTTPMethod": "*",
            "URLPath": "*",
            "Version": 1,
            "Attributes": {}
        },
        "CreatedAt": 1530574410.0,
        "ModifiedAt": 1530574410.0
    }
}
```

Untuk menghapus aturan pengambilan sampel, gunakan [https://docs.aws.amazon.com/xray/latest/api/API_DeleteSamplingRule.html](https://docs.aws.amazon.com/xray/latest/api/API_DeleteSamplingRule.html).

```
$ aws xray delete-sampling-rule --rule-name polling-scorekeep
{
    "SamplingRuleRecord": {
        "SamplingRule": {
            "RuleName": "polling-scorekeep",
            "RuleARN": "arn:aws:xray:us-east-1:123456789012:sampling-rule/polling-scorekeep",
            "ResourceARN": "*",
            "Priority": 5000,
            "FixedRate": 0.003,
            "ReservoirSize": 0,
            "ServiceName": "Scorekeep",
            "ServiceType": "*",
            "Host": "*",
            "HTTPMethod": "GET",
            "URLPath": "/api/state/*",
            "Version": 1,
            "Attributes": {}
        },
        "CreatedAt": 1530574399.0,
        "ModifiedAt": 1530574399.0
    }
}
```

## Grup
<a name="xray-api-configuration-groups"></a>

Anda dapat menggunakan API X-Ray untuk mengelola grup di akun Anda. Grup adalah kumpulan pelacakan yang ditentukan oleh ekspresi filter. Anda dapat menggunakan grup untuk menghasilkan grafik layanan tambahan dan menyediakan CloudWatch metrik Amazon. Lihat [Mendapatkan data dari AWS X-Ray](xray-api-gettingdata.md) untuk detail selengkapnya tentang bekerja dengan grafik dan metrik layanan melalui X-Ray API. Untuk informasi selengkapnya tentang grup, lihat [Mengkonfigurasi grup](xray-console-groups.md). Untuk informasi selengkapnya tentang menambahkan dan mengelola tag, lihat[Menandai aturan dan grup pengambilan sampel X-Ray](xray-tagging.md).

Buat grup dengan`CreateGroup`. Tanda adalah opsional. Jika Anda memilih untuk menambahkan tanda, kunci tanda diperlukan, dan nilai tanda adalah opsional.

```
$ aws xray create-group --group-name "TestGroup" --filter-expression "service(\"example.com\") {fault}" --tags [{"Key": "key_name","Value": "value"},{"Key": "key_name","Value": "value"}]
{
    "GroupName": "TestGroup",
    "GroupARN": "arn:aws:xray:us-east-2:123456789012:group/TestGroup/UniqueID",
    "FilterExpression": "service(\"example.com\") {fault OR error}"
}
```

Dapatkan semua grup yang ada dengan `GetGroups`.

```
$ aws xray get-groups
{
    "Groups": [
        {
            "GroupName": "TestGroup",
            "GroupARN": "arn:aws:xray:us-east-2:123456789012:group/TestGroup/UniqueID",
            "FilterExpression": "service(\"example.com\") {fault OR error}"
        },
		{
            "GroupName": "TestGroup2",
            "GroupARN": "arn:aws:xray:us-east-2:123456789012:group/TestGroup2/UniqueID",
            "FilterExpression": "responsetime > 2"
        }
    ],
	"NextToken": "tokenstring"
}
```

Perbarui grup dengan`UpdateGroup`. Tanda adalah opsional. Jika Anda memilih untuk menambahkan tanda, kunci tanda diperlukan, dan nilai tanda adalah opsional. Untuk menghapus tag yang ada dari grup, gunakan [UntagResource](https://docs.aws.amazon.com/xray/latest/api/API_UntagResource.html).

```
$ aws xray update-group --group-name "TestGroup" --group-arn "arn:aws:xray:us-east-2:123456789012:group/TestGroup/UniqueID" --filter-expression "service(\"example.com\") {fault OR error}" --tags [{"Key": "Stage","Value": "Prod"},{"Key": "Department","Value": "QA"}]
{
    "GroupName": "TestGroup",
    "GroupARN": "arn:aws:xray:us-east-2:123456789012:group/TestGroup/UniqueID",
    "FilterExpression": "service(\"example.com\") {fault OR error}"
}
```

Hapus grup dengan `DeleteGroup`.

```
$ aws xray delete-group --group-name "TestGroup" --group-arn "arn:aws:xray:us-east-2:123456789012:group/TestGroup/UniqueID" 
    {
    }
```

# Penggunaan aturan pengambilan sampel dengan API X-Ray
<a name="xray-api-sampling"></a>



 AWS X-Ray SDK menggunakan X-Ray API untuk mendapatkan aturan sampling, melaporkan hasil sampling, dan mendapatkan kuota. Anda dapat menggunakan ini APIs untuk mendapatkan pemahaman yang lebih baik tentang cara kerja aturan pengambilan sampel, atau untuk menerapkan pengambilan sampel dalam bahasa yang tidak didukung oleh X-Ray SDK.

Mulailah dengan mendapatkan semua aturan pengambilan sampel menggunakan [https://docs.aws.amazon.com/xray/latest/api/API_GetSamplingRules.html](https://docs.aws.amazon.com/xray/latest/api/API_GetSamplingRules.html).

```
$ aws xray get-sampling-rules
{
    "SamplingRuleRecords": [
        {
            "SamplingRule": {
                "RuleName": "Default",
                "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/Default",
                "ResourceARN": "*",
                "Priority": 10000,
                "FixedRate": 0.01,
                "ReservoirSize": 0,
                "ServiceName": "*",
                "ServiceType": "*",
                "Host": "*",
                "HTTPMethod": "*",
                "URLPath": "*",
                "Version": 1,
                "Attributes": {}
            },
            "CreatedAt": 0.0,
            "ModifiedAt": 1530558121.0
        },
        {
            "SamplingRule": {
                "RuleName": "base-scorekeep",
                "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/base-scorekeep",
                "ResourceARN": "*",
                "Priority": 9000,
                "FixedRate": 0.1,
                "ReservoirSize": 2,
                "ServiceName": "Scorekeep",
                "ServiceType": "*",
                "Host": "*",
                "HTTPMethod": "*",
                "URLPath": "*",
                "Version": 1,
                "Attributes": {}
            },
            "CreatedAt": 1530573954.0,
            "ModifiedAt": 1530920505.0
        },
        {
            "SamplingRule": {
                "RuleName": "polling-scorekeep",
                "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/polling-scorekeep",
                "ResourceARN": "*",
                "Priority": 5000,
                "FixedRate": 0.003,
                "ReservoirSize": 0,
                "ServiceName": "Scorekeep",
                "ServiceType": "*",
                "Host": "*",
                "HTTPMethod": "GET",
                "URLPath": "/api/state/*",
                "Version": 1,
                "Attributes": {}
            },
            "CreatedAt": 1530918163.0,
            "ModifiedAt": 1530918163.0
        }
    ]
}
```

Output termasuk aturan default dan aturan kustom. Lihat [Aturan pengambilan sampel](xray-api-configuration.md#xray-api-configuration-sampling) jika Anda belum membuat aturan pengambilan sampel.

Mengevaluasi aturan terhadap permintaan masuk dalam urutan menaik prioritas. Ketika aturan cocok, gunakan nilai tetap dan ukuran reservoir untuk membuat keputusan pengambilan sampel. Catat permintaan sampel dan abaikan (untuk tujuan pelacakan) permintaan tanpa sampel. Hentikan evaluasi aturan ketika keputusan pengambilan sampel dibuat.

Sebuah ukuran aturan reservoir adalah jumlah target pelacakan untuk mencatat per detik sebelum menerapkan nilai tetap. Reservoir berlaku di semua layanan secara kumulatif, sehingga Anda tidak dapat menggunakannya secara langsung. Namun, jika bukan nol, Anda dapat meminjam satu pelacakan per detik dari reservoir sampai X-Ray menetapkan kuota. Sebelum menerima kuota, catat permintaan pertama setiap detik, dan terapkan nilai tetap untuk permintaan tambahan. Nilai tetapnya merupakan angka desimal antara 0 dan 1,00 (100%).

Contoh berikut menunjukkan panggilan ke [https://docs.aws.amazon.com/xray/latest/api/API_GetSamplingTargets.html](https://docs.aws.amazon.com/xray/latest/api/API_GetSamplingTargets.html) dengan detail tentang keputusan pengambilan sampel yang dibuat selama 10 detik terakhir.

```
$ aws xray get-sampling-targets --sampling-statistics-documents '[
    {
        "RuleName": "base-scorekeep",
        "ClientID": "ABCDEF1234567890ABCDEF10",
        "Timestamp": "2018-07-07T00:20:06",
        "RequestCount": 110,
        "SampledCount": 20,
        "BorrowCount": 10
    },
    {
        "RuleName": "polling-scorekeep",
        "ClientID": "ABCDEF1234567890ABCDEF10",
        "Timestamp": "2018-07-07T00:20:06",
        "RequestCount": 10500,
        "SampledCount": 31,
        "BorrowCount": 0
    }
]'
{
    "SamplingTargetDocuments": [
        {
            "RuleName": "base-scorekeep",
            "FixedRate": 0.1,
            "ReservoirQuota": 2,
            "ReservoirQuotaTTL": 1530923107.0,
            "Interval": 10
        },
        {
            "RuleName": "polling-scorekeep",
            "FixedRate": 0.003,
            "ReservoirQuota": 0,
            "ReservoirQuotaTTL": 1530923107.0,
            "Interval": 10
        }
    ],
    "LastRuleModification": 1530920505.0,
    "UnprocessedStatistics": []
}
```

Respons dari X-Ray mencakup kuota untuk digunakan daripada meminjam dari reservoir. Dalam contoh ini, layanan meminjam 10 peristiwa dari reservoir selama lebih dari 10 detik, dan menerapkan nilai tetap 10 persen untuk 100 permintaan lainnya, mengakibatkan total 20 permintaan sampel. Kuota tersebut bagus selama lima menit (ditunjukkan dengan waktu untuk tayang) atau sampai kuota baru ditetapkan. X-Ray juga dapat menetapkan interval pelaporan yang lebih lama daripada default, meskipun tidak ada di sini.

**catatan**  
Respons dari X-Ray mungkin tidak termasuk kuota saat pertama kali Anda memanggilnya. Lanjutkan peminjaman dari reservoir sampai Anda diberi kuota.

Dua bidang lainnya dalam respons mungkin menunjukkan masalah dengan input. Periksa `LastRuleModification` untuk terakhir kali Anda menelepon [https://docs.aws.amazon.com/xray/latest/api/API_GetSamplingRules.html](https://docs.aws.amazon.com/xray/latest/api/API_GetSamplingRules.html). Jika lebih baru, dapatkan salinan aturan baru. `UnprocessedStatistics` dapat mencakup kesalahan yang menunjukkan bahwa aturan telah dihapus, dokumen statistik dalam input terlalu tua, atau izin mengalami kesalahan.

# AWS X-Ray dokumen segmen
<a name="xray-api-segmentdocuments"></a>

**Segmen penelusuran** adalah representasi JSON dari permintaan yang digunakan aplikasi Anda. Segmen pelacakan mencatat informasi tentang permintaan asli, informasi tentang pekerjaan yang dilakukan aplikasi Anda secara lokal, dan **subsegmen** dengan informasi tentang panggilan hilir yang dibuat aplikasi Anda ke AWS sumber daya, HTTP APIs, dan database SQL.

Sebuah **dokumen segmen** menyampaikan informasi tentang segmen ke X-Ray. Dokumen segmen dapat sebesar 64 kB dan berisi seluruh segmen dengan subsegment, fragmen segmen yang menunjukkan bahwa permintaan sedang berlangsung, atau subsegmen tunggal yang dikirim secara terpisah. Anda dapat mengirim dokumen segmen langsung ke X-Ray dengan menggunakan API [https://docs.aws.amazon.com/xray/latest/api/API_PutTraceSegments.html](https://docs.aws.amazon.com/xray/latest/api/API_PutTraceSegments.html).

X-Ray mengkompilasi dan memproses dokumen segmen untuk menghasilkan **ringkasan jejak** yang dapat dikueri dan **jejak lengkap** yang dapat Anda akses dengan menggunakan dan, masing-masing. [https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSummaries.html](https://docs.aws.amazon.com/xray/latest/api/API_GetTraceSummaries.html) APIs Selain segmen dan subsegmen yang Anda kirim ke X-Ray, layanan ini menggunakan informasi dalam subsegmen untuk menghasilkan **segmen yang disimpulkan** serta menambahkan segmen tersebut ke penelusuran penuh. Segmen yang disimpulkan mewakili layanan hilir dan sumber daya di peta jejak.

X-Ray menyediakan **Skema JSON** untuk dokumen segmen. Anda dapat mengunduh skema di sini: [xray-segmentdocument-schema-v1.0.0](samples/xray-segmentdocument-schema-v1.0.0.zip). Bidang dan objek yang tercantum dalam skema dijelaskan lebih detail pada bagian berikut.

Bagian dari bidang segmen diindeks oleh X-Ray untuk digunakan dengan ekspresi filter. Misalnya, jika Anda mengatur bidang `user` pada sebuah segmen ke pengenal unik, Anda dapat mencari segmen yang terkait dengan pengguna tertentu di konsol X-Ray atau menggunakan API `GetTraceSummaries`. Untuk informasi selengkapnya, lihat [Menggunakan ekspresi filter](xray-console-filters.md).

Saat Anda melengkapi aplikasi Anda dengan SDK X-Ray, SDK akan menghasilkan dokumen segmen untuk Anda. Alih-alih mengirim dokumen segmen secara langsung ke X-Ray, SDK mentransmisikannya melalui port UDP lokal kepada [Daemon X-Ray](xray-daemon.md). Untuk informasi selengkapnya, lihat [Mengirim dokumen segmen ke daemon X-Ray](xray-api-sendingdata.md#xray-api-daemon).

**Topics**
+ [Bidang segmen](#api-segmentdocuments-fields)
+ [Subsegmen](#api-segmentdocuments-subsegments)
+ [Data permintaan HTTP](#api-segmentdocuments-http)
+ [Anotasi](#api-segmentdocuments-annotations)
+ [Metadata](#api-segmentdocuments-metadata)
+ [AWS data sumber daya](#api-segmentdocuments-aws)
+ [Kesalahan dan pengecualian](#api-segmentdocuments-errors)
+ [Kueri SQL](#api-segmentdocuments-sql)

## Bidang segmen
<a name="api-segmentdocuments-fields"></a>

Segmen mencatat informasi pelacakan tentang permintaan yang digunakan aplikasi Anda. Minimal, segmen mencatat nama, ID, waktu mulai, penelusuran ID, dan waktu akhir permintaan.

**Example Segmen minimal yang lengkap**  

```
{
  "name" : "example.com",
  "id" : "70de5b6f19ff9a0a",
  "start_time" : 1.478293361271E9,
  "trace_id" : "1-581cf771-a006649127e371903a2de979",
  "end_time" : 1.478293361449E9
}
```

Bidang berikut diperlukan, atau secara kondisional diperlukan, untuk segmen.

**catatan**  
Nilai mesti menjadi string (hingga 250 karakter) kecuali dicatat sebaliknya.

**Bidang Segment yang Diperlukan**
+ `name` – Nama logis dari layanan yang menangani permintaan, hingga **200 karakter**. Misalnya, nama aplikasi atau nama domain Anda. Nama dapat berisi huruf Unicode, angka, dan spasi, serta simbol-simbol berikut: `_`, `.`, `:`, `/`, `%`, `&`, `#`, `=`, `+`, `\`, `-`, `@`
+ `id` – Pengenal 64-bit untuk segmen, unik di antara segmen dalam penelusuran yang sama, dalam **16 digit heksadesimal**.
+ `trace_id` – Pengenal unik yang menghubungkan semua segmen dan subsegmen yang berasal dari permintaan klien tunggal.

**Format ID jejak X-Ray**

  `trace_id`X-Ray terdiri dari tiga angka yang dipisahkan oleh tanda hubung. Contohnya, `1-58406520-a006649127e371903a2de979`. Hal ini mencakup:
  + Nomor versi, yaitu`1`.
  + Waktu permintaan asli dalam waktu epoch Unix menggunakan **8 digit heksadesimal**.

    Misalnya, 10:00 AM 1 Desember 2016 PST dalam waktu epoch adalah `1480615200` detik atau `58406520` dalam digit heksadesimal.
  + Pengidentifikasi 96-bit yang unik secara global untuk jejak dalam **24** digit heksadesimal.
**catatan**  
X-Ray sekarang mendukung jejak IDs yang dibuat menggunakan OpenTelemetry dan kerangka kerja lain yang sesuai dengan spesifikasi [W3C Trace](https://www.w3.org/TR/trace-context/) Context. ID jejak W3C harus diformat dalam format X-Ray Trace ID saat mengirim ke X-Ray. Misalnya, ID jejak W3C `4efaaf4d1e8720b39541901950019ee5` harus diformat seperti `1-4efaaf4d-1e8720b39541901950019ee5` saat mengirim ke X-Ray. Jejak X-Ray IDs menyertakan cap waktu permintaan asli dalam waktu epoch Unix, tetapi ini tidak diperlukan saat mengirim jejak IDs W3C dalam format X-Ray. 
**Keamanan ID Penelusuran**  
 IDs Jejak terlihat di [header respons](xray-concepts.md#xray-concepts-tracingheader). Hasilkan jejak IDs dengan algoritme acak yang aman untuk memastikan bahwa penyerang tidak dapat menghitung jejak masa depan IDs dan mengirim permintaan IDs ke aplikasi Anda.
+ `start_time` – **bilangan** yang merupakan waktu ketika segmen dibuat, di detik titik mengambang dalam jangka waktu zaman. Misalnya, `1480615200.010` atau `1.480615200010E9`. Gunakan tempat desimal sebanyak yang Anda butuhkan. Resolusi microsecond dianjurkan bila tersedia.
+ `end_time` – **angka** yang merupakan waktu segmen ditutup. Contohnya, `1480615200.090` atau `1.480615200090E9`. Tentukan salah satu dari `end_time` atau `in_progress`.
+ `in_progress` – **boolean**, atur ke `true` alih-alih menentukan sebuah `end_time` untuk mencatat bahwa segmen dimulai, tetapi tidak lengkap. Kirim segmen yang sedang berlangsung saat aplikasi Anda menerima permintaan yang akan memakan waktu lama untuk melayani, untuk melacak tanda terima permintaan. Ketika respons dikirim, mengirim segmen lengkap untuk menimpa segmen sedang berlangsung. Hanya mengirim satu segmen lengkap, dan satu atau nol segmen dalam proses, per permintaan.

**Nama Layanan**  
Segmen `name` mesti sesuai dengan nama domain atau nama logis dari layanan yang menghasilkan segmen. Walau bagaimanapun, ini tidak dipaksakan. Aplikasi apa pun yang memiliki izin untuk [https://docs.aws.amazon.com/xray/latest/api/API_PutTraceSegments.html](https://docs.aws.amazon.com/xray/latest/api/API_PutTraceSegments.html) dapat mengirim segmen dengan nama apa pun.

Bidang berikut opsional untuk segmen.

**Bidang Segmen Opsional**
+ `service` – Objek dengan informasi tentang aplikasi Anda.
  + `version` – String yang mengidentifikasi versi aplikasi Anda yang melayani permintaan.
+ `user` – Sebuah string yang mengidentifikasi pengguna yang mengirim permintaan.
+ `origin`— Jenis AWS sumber daya yang menjalankan aplikasi Anda.

**Nilai yang Didukung**
  + `AWS::EC2::Instance`— Sebuah EC2 contoh Amazon.
  + `AWS::ECS::Container` – Kontainer Amazon ECS.
  + `AWS::ElasticBeanstalk::Environment` – Lingkungan Elastic Beanstalk

  Ketika beberapa nilai yang berlaku untuk aplikasi Anda, gunakan salah satu yang paling spesifik. Misalnya, lingkungan Multicontainer Docker Elastic Beanstalk menjalankan aplikasi Anda di container Amazon ECS, yang pada gilirannya berjalan pada instance Amazon. EC2 Dalam hal ini Anda akan mengatur asal untuk `AWS::ElasticBeanstalk::Environment` karena lingkungan adalah induk dari dua sumber daya lainnya.
+ `parent_id` – ID subsegmen yang Anda tentukan jika permintaan berasal dari aplikasi yang diinstrumentasi. X-Ray SDK menambahkan ID subsegmen induk ke [Header pelacakan](xray-concepts.md#xray-concepts-tracingheader) untuk panggilan HTTP hilir. Dalam kasus subsegment yang di-nest, subsegmen dapat memiliki segmen atau subsegmen sebagai induknya. 
+ `http` – objek [`http`](#api-segmentdocuments-http) dengan informasi tentang permintaan HTTP asli.
+ `aws`— [`aws`](#api-segmentdocuments-aws)objek dengan informasi tentang AWS sumber daya tempat aplikasi Anda melayani permintaan.
+ `error`, `throttle`, `fault`, dan `cause` – bidang [kesalahan](#api-segmentdocuments-errors) yang menunjukkan kesalahan terjadi dan yang mencakup informasi tentang pengecualian yang menyebabkan kesalahan.
+ `annotations` – Objek [`annotations`](#api-segmentdocuments-annotations) dengan pasangan nilai kunci yang ingin Anda X-Ray untuk indeks pencarian.
+ `metadata` – Objek [`metadata`](#api-segmentdocuments-metadata) dengan data tambahan yang ingin Anda simpan di segmen.
+ `subsegments` – **susunan** objek [`subsegment`](#api-segmentdocuments-subsegments).

## Subsegmen
<a name="api-segmentdocuments-subsegments"></a>

Anda dapat membuat subsegmen untuk merekam panggilan Layanan AWS dan sumber daya yang Anda buat dengan AWS SDK, panggilan ke web HTTP internal atau eksternal APIs, atau kueri database SQL. Anda juga dapat membuat subsegment untuk debug atau anotasi blok kode dalam aplikasi Anda. Subsegmen dapat berisi subsegmen lain, sehingga subsegmen kustom yang mencatat metadata tentang panggilan fungsi internal dapat berisi subsegmen dan subsegmen kustom lainnya untuk panggilan hilir.

Sebuah subsegmen mencatat panggilan hilir dari sudut pandang layanan yang menyebutnya. X-Ray menggunakan subsegmen untuk mengidentifikasi layanan hilir yang tidak mengirim segmen dan membuat entri untuk mereka di grafik layanan.

Sebuah subsegmen dapat tertanam dalam dokumen segmen penuh atau dikirim secara independen. Kirim subsegment secara terpisah untuk asynchronously melacak panggilan hilir untuk permintaan berjalan lama, atau untuk menghindari melampaui ukuran dokumen segmen maksimum.

**Example Segmen dengan subsegmen tertanam**  
Subsegmen independen memiliki `type` dari `subsegment` dan `parent_id` yang mengidentifikasi segmen induk.  

```
{
  "trace_id"   : "1-5759e988-bd862e3fe1be46a994272793",
  "id"         : "defdfd9912dc5a56",
  "start_time" : 1461096053.37518,
  "end_time"   : 1461096053.4042,
  "name"       : "www.example.com",
  "http"       : {
    "request"  : {
      "url"        : "https://www.example.com/health",
      "method"     : "GET",
      "user_agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7",
      "client_ip"  : "11.0.3.111"
    },
    "response" : {
      "status"         : 200,
      "content_length" : 86
    }
  },
  "subsegments" : [
    {
      "id"         : "53995c3f42cd8ad8",
      "name"       : "api.example.com",
      "start_time" : 1461096053.37769,
      "end_time"   : 1461096053.40379,
      "namespace"  : "remote",
      "http"       : {
        "request"  : {
          "url"    : "https://api.example.com/health",
          "method" : "POST",
          "traced" : true
        },
        "response" : {
          "status"         : 200,
          "content_length" : 861
        }
      }
    }
  ]
}
```

Untuk permintaan yang berjalan lama, Anda dapat mengirim segmen yang sedang berlangsung untuk memberi tahu X-Ray bahwa permintaan telah diterima, lalu mengirim subsegmen secara terpisah untuk melacaknya sebelum menyelesaikan permintaan awal.

**Example Segmen yang sedang berlangsung**  

```
{
  "name" : "example.com",
  "id" : "70de5b6f19ff9a0b",
  "start_time" : 1.478293361271E9,
  "trace_id" : "1-581cf771-a006649127e371903a2de979",
  "in_progress": true
}
```

**Example Subsegmen independen**  
Subsegmen independen memiliki `type` dari `subsegment`, `trace_id`, dan `parent_id` yang mengidentifikasi segmen induk.  

```
{
  "name" : "api.example.com",
  "id" : "53995c3f42cd8ad8",
  "start_time" : 1.478293361271E9,
  "end_time" : 1.478293361449E9,
  "type" : "subsegment",
  "trace_id" : "1-581cf771-a006649127e371903a2de979"
  "parent_id" : "defdfd9912dc5a56",
  "namespace"  : "remote",
  "http"       : {
      "request"  : {
          "url"    : "https://api.example.com/health",
          "method" : "POST",
          "traced" : true
      },
      "response" : {
          "status"         : 200,
          "content_length" : 861
      }
  }
}
```

Ketika permintaan selesai, tutup segmen dengan mengirim ulangnya bersama `end_time`. Segmen lengkap menimpa segmen yang sedang berlangsung.

Anda juga dapat mengirim subsegment secara terpisah untuk permintaan selesai yang memicu alur kerja asinkron. Misalnya, web API dapat mengembalikan respons `OK 200` segera sebelum memulai pekerjaan yang diminta pengguna. Anda dapat mengirim segmen lengkap ke X-Ray segera setelah respons dikirim, diikuti oleh subsegmen untuk pekerjaan yang diselesaikan nanti. Seperti segmen, Anda juga dapat mengirim fragmen subsegmen untuk mencatat bahwa subsegmen telah dimulai, dan kemudian menimpa dengan subsegmen penuh setelah panggilan hilir selesai.

Bidang berikut diperlukan, atau kondisional diperlukan, untuk subsegment.

**catatan**  
Nilai adalah string hingga 250 karakter kecuali dicatat sebaliknya.

**Bidang Subsegmen yang Wajib**
+ `id` – Pengenal 64-bit untuk subsegmen, unik di antara segmen di penelusuran yang sama, dalam **16 digit heksadesimal**.
+ `name` – Nama logis dari subsegmen. Untuk panggilan hilir, nama subsegmen setelah sumber daya atau layanan yang disebut. Untuk subsegment kustom, nama subsegmen setelah kode yang instrumen (misalnya, nama fungsi).
+ `start_time` – **angka** yang merupakan waktu subsegment dibuat, di floating point detik dalam waktu zaman, akurat untuk milidetik. Misalnya, `1480615200.010` atau `1.480615200010E9`.
+ `end_time` – **angka** yang merupakan waktu segmen ditutup. Misalnya, `1480615200.090` atau `1.480615200090E9`. Tentukan sebuah `end_time` atau `in_progress`.
+ `in_progress` – **boolean** yang diatur ke `true` alih-alih menentukan sebuah `end_time` untuk mencatat bahwa segmen dimulai, tetapi tidak lengkap. Hanya kirim satu subsegmen lengkap, dan satu atau nol subsegmen dalam proses, per permintaan hilir.
+ `trace_id` – Penelusuran ID dari segmen induk subsegmen ini. Diperlukan hanya jika mengirim subsegmen secara terpisah.

**Format ID jejak X-Ray**

  `trace_id`X-Ray terdiri dari tiga angka yang dipisahkan oleh tanda hubung. Contohnya, `1-58406520-a006649127e371903a2de979`. Hal ini mencakup:
  + Nomor versi, yaitu`1`.
  + Waktu permintaan asli dalam waktu epoch Unix menggunakan **8 digit heksadesimal**.

    Misalnya, 10:00 AM 1 Desember 2016 PST dalam waktu epoch adalah `1480615200` detik atau `58406520` dalam digit heksadesimal.
  + Pengidentifikasi 96-bit yang unik secara global untuk jejak dalam **24** digit heksadesimal.
**catatan**  
X-Ray sekarang mendukung jejak IDs yang dibuat menggunakan OpenTelemetry dan kerangka kerja lain yang sesuai dengan spesifikasi [W3C Trace](https://www.w3.org/TR/trace-context/) Context. ID jejak W3C harus diformat dalam format X-Ray Trace ID saat mengirim ke X-Ray. Misalnya, ID jejak W3C `4efaaf4d1e8720b39541901950019ee5` harus diformat seperti `1-4efaaf4d-1e8720b39541901950019ee5` saat mengirim ke X-Ray. Jejak X-Ray IDs menyertakan cap waktu permintaan asli dalam waktu epoch Unix, tetapi ini tidak diperlukan saat mengirim jejak IDs W3C dalam format X-Ray. 
+ `parent_id` – Segmen ID dari segmen induk subsegmen ini. Diperlukan hanya jika mengirim subsegmen secara terpisah. Dalam kasus subsegment yang di-nest, subsegmen dapat memiliki segmen atau subsegmen sebagai induknya.
+ `type` – `subsegment`. Diperlukan hanya jika mengirim subsegmen secara terpisah.

Bidang berikut adalah opsional untuk subsegment.

**Kolom Subsegmen opsional**
+ `namespace` – `aws` untuk panggilan AWS SDK; `remote` untuk panggilan hilir lainnya.
+ `http` – objek [`http`](#api-segmentdocuments-http) dengan informasi tentang panggilan HTTP keluar.
+ `aws`— [`aws`](#api-segmentdocuments-aws)objek dengan informasi tentang AWS sumber daya hilir yang disebut aplikasi Anda.
+ `error`, `throttle`, `fault`, dan `cause` – bidang [kesalahan](#api-segmentdocuments-errors) yang menunjukkan kesalahan terjadi dan yang mencakup informasi tentang pengecualian yang menyebabkan kesalahan.
+ `annotations` – Objek [`annotations`](#api-segmentdocuments-annotations) dengan pasangan nilai kunci yang ingin Anda X-Ray untuk indeks pencarian.
+ `metadata` – Objek [`metadata`](#api-segmentdocuments-metadata) dengan data tambahan yang ingin Anda simpan di segmen.
+ `subsegments` – **susunan** objek [`subsegment`](#api-segmentdocuments-subsegments).
+ `precursor_ids`— **larik** subsegmen IDs yang mengidentifikasi subsegmen dengan induk yang sama yang diselesaikan sebelum subsegmen ini.

## Data permintaan HTTP
<a name="api-segmentdocuments-http"></a>

Gunakan blok HTTP untuk mencatat detail permintaan HTTP bahwa aplikasi Anda sediakan (dalam segmen) atau yang aplikasi Anda buat untuk HTTP API hilir (dalam subsegmen). Sebagian besar bidang dalam peta objek ini untuk informasi yang ditemukan dalam permintaan HTTP dan respon.

**`http`**

Semua kolom lain bersifat opsional.
+ `request` – Informasi tentang permintaan.
  + `method` – Metode permintaan Misalnya, `GET`.
  + `url` – URL lengkap dari permintaan, disusun dari protokol, hostname, dan path dari permintaan.
  + `user_agent` – String agen pengguna dari klien peminta.
  + `client_ip` – Alamat IP peminta. Dapat diambil dari paket IP `Source Address` atau, untuk permintaan yang diteruskan, dari header `X-Forwarded-For`.
  + `x_forwarded_for` – (hanya segmen)**boolean** menunjukkan bahwa `client_ip` dibaca dari header `X-Forwarded-For` dan tidak dapat diandalkan karena mungkin telah ditempa.
  + `traced` – (hanya subsegmen)**boolean**menunjukkan bahwa panggilan hilir adalah untuk layanan lain ditelusuri. Jika bidang ini diatur ke `true`, X-Ray menganggap penelusuran tersebut rusak hingga layanan hilir mengunggah segmen dengan `parent_id` yang cocok dengan `id` dari subsegmen yang berisi blok ini.
+ `response` – Informasi tentang respon.
  + `status`— **bilangan bulat** yang menunjukkan status HTTP dari respons.
  + `content_length`— **bilangan bulat** yang menunjukkan panjang badan respons dalam byte.

Ketika Anda instrumen panggilan ke api web hilir, mencatat subsegmen dengan informasi tentang permintaan HTTP dan respon. X-Ray menggunakan subsegmen untuk membuat segmen disimpulkan untuk API jarak jauh.

**Example Segmen untuk panggilan HTTP yang dilayani oleh aplikasi yang berjalan di Amazon EC2**  

```
{
  "id": "6b55dcc497934f1a",
  "start_time": 1484789387.126,
  "end_time": 1484789387.535,
  "trace_id": "1-5880168b-fd5158284b67678a3bb5a78c",
  "name": "www.example.com",
  "origin": "AWS::EC2::Instance",
  "aws": {
    "ec2": {
      "availability_zone": "us-west-2c",
      "instance_id": "i-0b5a4678fc325bg98"
    },
    "xray": {
        "sdk_version": "2.11.0 for Java"
    },
  },
  "http": {
    "request": {
      "method": "POST",
      "client_ip": "78.255.233.48",
      "url": "http://www.example.com/api/user",
      "user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0",
      "x_forwarded_for": true
    },
    "response": {
      "status": 200
    }
  }
```

**Example Subsegmen untuk panggilan HTTP downstream**  

```
{
  "id": "004f72be19cddc2a",
  "start_time": 1484786387.131,
  "end_time": 1484786387.501,
  "name": "names.example.com",
  "namespace": "remote",
  "http": {
    "request": {
      "method": "GET",
      "url": "https://names.example.com/"
    },
    "response": {
      "content_length": -1,
      "status": 200
    }
  }
}
```

**Example Segmen yang disimpulkan untuk panggilan HTTP downstream**  

```
{
  "id": "168416dc2ea97781",
  "name": "names.example.com",
  "trace_id": "1-62be1272-1b71c4274f39f122afa64eab",
  "start_time": 1484786387.131,
  "end_time": 1484786387.501,
  "parent_id": "004f72be19cddc2a",
  "http": {
    "request": {
      "method": "GET",
      "url": "https://names.example.com/"
    },
    "response": {
      "content_length": -1,
      "status": 200
    }
  },
  "inferred": true
}
```

## Anotasi
<a name="api-segmentdocuments-annotations"></a>

Segmen dan subsegmen dapat mencakup objek `annotations` yang berisi satu atau lebih bidang yang X-Ray indeks untuk digunakan dengan ekspresi filter. Fields dapat memiliki string, angka, atau nilai Boolean (tidak ada objek atau array). Indeks X-Ray hingga 50 anotasi per penelusuran.

**Example Segmen untuk panggilan HTTP dengan anotasi**  

```
{
  "id": "6b55dcc497932f1a",
  "start_time": 1484789187.126,
  "end_time": 1484789187.535,
  "trace_id": "1-5880168b-fd515828bs07678a3bb5a78c",
  "name": "www.example.com",
  "origin": "AWS::EC2::Instance",
  "aws": {
    "ec2": {
      "availability_zone": "us-west-2c",
      "instance_id": "i-0b5a4678fc325bg98"
    },
    "xray": {
        "sdk_version": "2.11.0 for Java"
    },
  },
  "annotations": {
    "customer_category" : 124,
    "zip_code" : 98101,
    "country" : "United States",
    "internal" : false
  },
  "http": {
    "request": {
      "method": "POST",
      "client_ip": "78.255.233.48",
      "url": "http://www.example.com/api/user",
      "user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0",
      "x_forwarded_for": true
    },
    "response": {
      "status": 200
    }
  }
```

Kunci harus alfanumerik agar bisa bekerja dengan filter. Garis bawah diperbolehkan. Simbol dan spasi lainnya tidak diperbolehkan.

## Metadata
<a name="api-segmentdocuments-metadata"></a>

Segmen dan subsegmen dapat mencakup objek `metadata` yang berisi satu atau lebih bidang dengan nilai-nilai dari tipe apa pun, termasuk objek dan array. X-Ray tidak mengindeks metadata, dan nilai dapat berupa ukuran apa pun, selama dokumen segmen tidak melebihi ukuran maksimum (64 kB). Anda dapat melihat metadata dalam dokumen segmen penuh dikembalikan oleh API [https://docs.aws.amazon.com/xray/latest/api/API_BatchGetTraces.html](https://docs.aws.amazon.com/xray/latest/api/API_BatchGetTraces.html). Kunci bidang (`debug`dalam contoh berikut) dimulai dengan `AWS.` dicadangkan untuk digunakan oleh AWS-provided SDKs dan klien.

**Example Subsegmen kustom dengan metadata**  

```
{
  "id": "0e58d2918e9038e8",
  "start_time": 1484789387.502,
  "end_time": 1484789387.534,
  "name": "## UserModel.saveUser",
  "metadata": {
    "debug": {
      "test": "Metadata string from UserModel.saveUser"
    }
  },
  "subsegments": [
    {
      "id": "0f910026178b71eb",
      "start_time": 1484789387.502,
      "end_time": 1484789387.534,
      "name": "DynamoDB",
      "namespace": "aws",
      "http": {
        "response": {
          "content_length": 58,
          "status": 200
        }
      },
      "aws": {
        "table_name": "scorekeep-user",
        "operation": "UpdateItem",
        "request_id": "3AIENM5J4ELQ3SPODHKBIRVIC3VV4KQNSO5AEMVJF66Q9ASUAAJG",
        "resource_names": [
          "scorekeep-user"
        ]
      }
    }
  ]
}
```

## AWS data sumber daya
<a name="api-segmentdocuments-aws"></a>

Untuk segmen, `aws` objek berisi informasi tentang sumber daya tempat aplikasi Anda berjalan. Beberapa bidang dapat berlaku untuk sumber daya tunggal. Misalnya, aplikasi yang berjalan di lingkungan Docker multicontainer di Elastic Beanstalk dapat memiliki informasi tentang instans Amazon, wadah EC2 Amazon ECS yang berjalan pada instance, dan lingkungan Elastic Beanstalk itu sendiri.

**`aws` (Segmen)**

Semua bidang bersifat opsional.
+ `account_id`— Jika aplikasi Anda mengirim segmen ke yang berbeda Akun AWS, catat ID akun yang menjalankan aplikasi Anda.
+ `cloudwatch_logs`— Array objek yang menggambarkan grup CloudWatch log tunggal.
  + `log_group`— Nama Grup CloudWatch Log.
  + `arn`— Grup CloudWatch Log ARN.
+ `ec2`— Informasi tentang EC2 contoh Amazon.
  + `instance_id`— ID instance dari EC2 instance.
  + `instance_size`- Jenis EC2 contoh.
  + `ami_id`— ID Gambar Mesin Amazon.
  + `availability_zone` - Availability Zone tempat instans berjalan.
+ `ecs` – Informasi tentang kontainer Amazon ECS.
  + `container`— Nama host wadah Anda.
  + `container_id`— ID kontainer lengkap wadah Anda.
  + `container_arn`— ARN dari instance kontainer Anda.
+ `eks`— Informasi tentang cluster Amazon EKS.
  + `pod`— Nama host pod EKS Anda.
  + `cluster_name`— Nama cluster EKS.
  + `container_id`— ID kontainer lengkap wadah Anda.
+ `elastic_beanstalk` – Informasi tentang lingkungan Elastic Beanstalk. Anda dapat menemukan informasi ini dalam sebuah file bernama `/var/elasticbeanstalk/xray/environment.conf` pada platform Elastic Beanstalk terbaru.
  + `environment_name` – Nama lingkungan.
  + `version_label`– Nama versi aplikasi yang saat ini digunakan untuk instans yang melayani permintaan.
  + `deployment_id`–**angka**yang menunjukkan ID dari deployment berhasil terakhir ke instans yang melayani permintaan.
+ `xray`— Metadata tentang jenis dan versi instrumentasi yang digunakan.
  + `auto_instrumentation`— Boolean menunjukkan apakah instrumentasi otomatis digunakan (misalnya, Agen Java).
  + `sdk_version`— Versi SDK atau agen yang digunakan.
  + `sdk`— Jenis SDK.

**Example AWS blokir dengan plugin**  

```
"aws":{
   "elastic_beanstalk":{
      "version_label":"app-5a56-170119_190650-stage-170119_190650",
      "deployment_id":32,
      "environment_name":"scorekeep"
   },
   "ec2":{
      "availability_zone":"us-west-2c",
      "instance_id":"i-075ad396f12bc325a",
      "ami_id":
   },
   "cloudwatch_logs":[
      {
         "log_group":"my-cw-log-group",
         "arn":"arn:aws:logs:us-west-2:012345678912:log-group:my-cw-log-group"
      }
   ],
   "xray":{
      "auto_instrumentation":false,
      "sdk":"X-Ray for Java",
      "sdk_version":"2.8.0"
   }
}
```

Untuk subsegmen, catat informasi tentang Layanan AWS dan sumber daya yang diakses aplikasi Anda. X-Ray menggunakan informasi ini untuk membuat segmen yang disimpulkan yang mewakili layanan hilir di peta layanan Anda.

**`aws` (Subsegmen)**

Semua bidang bersifat opsional.
+ `operation`— Nama tindakan API yang dipanggil terhadap sumber daya Layanan AWS atau.
+ `account_id`— Jika aplikasi Anda mengakses sumber daya di akun yang berbeda, atau mengirim segmen ke akun yang berbeda, catat ID akun yang memiliki AWS sumber daya yang diakses aplikasi Anda.
+ `region` – Jika sumber daya berada di wilayah yang berbeda dari aplikasi Anda, catat wilayahnya. Misalnya, `us-west-2`.
+ `request_id` – Pengenal unik untuk permintaan.
+ `queue_url` – Untuk operasi pada antrean Amazon SQS, URL antrean ini.
+ `table_name` – Untuk operasi pada tabel DynamoDB, nama tabel.

**Example Subsegmen untuk panggilan ke DynamoDB untuk menyimpan item**  

```
{
  "id": "24756640c0d0978a",
  "start_time": 1.480305974194E9,
  "end_time": 1.4803059742E9,
  "name": "DynamoDB",
  "namespace": "aws",
  "http": {
    "response": {
      "content_length": 60,
      "status": 200
    }
  },
  "aws": {
    "table_name": "scorekeep-user",
    "operation": "UpdateItem",
    "request_id": "UBQNSO5AEM8T4FDA4RQDEB94OVTDRVV4K4HIRGVJF66Q9ASUAAJG",
  }
}
```

## Kesalahan dan pengecualian
<a name="api-segmentdocuments-errors"></a>

Ketika terjadi kesalahan, Anda dapat mencatat detail tentang kesalahan dan pengecualian yang dihasilkan. Catatan kesalahan dalam segmen ketika aplikasi Anda kembali kesalahan ke pengguna, dan di subsegment ketika panggilan hilir kembali kesalahan.

**Tipe kesalahan**

Tetapkan satu atau beberapa bidang berikut ke`true`untuk menunjukkan bahwa kesalahan terjadi. Beberapa tipe dapat berlaku jika kesalahan berlipat ganda. Misalnya,`429 Too Many Requests`kesalahan dari panggilan hilir dapat menyebabkan aplikasi Anda kembali`500 Internal Server Error`, dalam hal ini ketiga tipe akan berlaku.
+ `error` – **boolean**menunjukkan bahwa kesalahan klien terjadi (kode status respons adalah 4XX klien Error).
+ `throttle`–**boolean**menunjukkan bahwa permintaan telah dicekik (kode status respon*429 Terlalu Banyak Permintaan*).
+ `fault` – **boolean**menunjukkan bahwa kesalahan server terjadi (kode status respons adalah 5XX Server Error).

Menunjukkan penyebab kesalahan dengan memasukkan**Penyebab**objek dalam segmen atau subsegmen.

**`cause`**

Penyebab bisa berupa**16 karakter**pengecualian ID atau objek dengan bidang-bidang berikut:
+ `working_directory`– Jalur lengkap direktori kerja ketika pengecualian terjadi.
+ `paths`–**Susunan**dari path ke pustaka atau modul yang digunakan ketika pengecualian terjadi.
+ `exceptions`–**Susunan**dari**pengecualian**objek.

Sertakan informasi rinci tentang kesalahan dalam satu atau lebih**pengecualian**objek.

**`exception`**

Semua bidang bersifat opsional.
+ `id` – Pengenal 64-bit untuk segmen, unik di antara segmen dalam penelusuran yang sama, dalam **16 digit heksadesimal**.
+ `message`– Pesan pengecualian.
+ `type` – Tipe pengecualian.
+ `remote`–**boolean**menunjukkan bahwa pengecualian disebabkan oleh kesalahan yang dikembalikan oleh layanan hilir.
+ `truncated` – **Integer** menunjukkan jumlah frame tumpukan yang dihilangkan dari `stack`.
+ `skipped`–**Integer**menunjukkan jumlah pengecualian yang dilewati antara pengecualian ini dan anaknya, yaitu pengecualian yang ditimbulkannya.
+ `cause`– Exception ID dari induk pengecualian ini, yaitu, pengecualian yang menyebabkan pengecualian ini.
+ `stack` – **Susunan** dari objek **stackFrame**.

Jika tersedia, catat informasi tentang tumpukan panggilan di objek **stackFrame**.

**`stackFrame`**

Semua kolom lain bersifat opsional.
+ `path`– Jalur relatif ke file.
+ `line`– Baris di file.
+ `label`– Fungsi atau nama metode.

## Kueri SQL
<a name="api-segmentdocuments-sql"></a>

Anda dapat membuat subsegmen untuk kueri bahwa aplikasi Anda membuat basis data SQL.

**`sql`**

Semua kolom lain bersifat opsional.
+ `connection_string` – Untuk SQL Server atau koneksi basis data lain yang tidak menggunakan string koneksi URL, mencatat string koneksi, tidak termasuk kata sandi.
+ `url`– Untuk koneksi database yang menggunakan string koneksi URL, catat URL, tidak termasuk password.
+ `sanitized_query` – Kueri basis data, dengan setiap pengguna diberikan nilai-nilai dihapus atau diganti dengan placeholder.
+ `database_type`– Nama mesin basis data.
+ `database_version` – nomor versi mesin basis data yang akan ditingkatkan.
+ `driver_version`– Nama dan nomor versi driver mesin basis data yang digunakan aplikasi Anda.
+ `user`– Nama pengguna basis data.
+ `preparation` – `call` jika kueri menggunakan `PreparedCall`; `statement` jika kueri menggunakan `PreparedStatement`.

**Example Subsegmen dengan Kueri SQL**  

```
{
  "id": "3fd8634e78ca9560",
  "start_time": 1484872218.696,
  "end_time": 1484872218.697,
  "name": "ebdb@aawijb5u25wdoy.cpamxznpdoq8.us-west-2.rds.amazonaws.com",
  "namespace": "remote",
  "sql" : {
    "url": "jdbc:postgresql://aawijb5u25wdoy.cpamxznpdoq8.us-west-2.rds.amazonaws.com:5432/ebdb",
    "preparation": "statement",
    "database_type": "PostgreSQL",
    "database_version": "9.5.4",
    "driver_version": "PostgreSQL 9.4.1211.jre7",
    "user" : "dbuser",
    "sanitized_query" : "SELECT  *  FROM  customers  WHERE  customer_id=?;"
  }
}
```