

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

# 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)
```