Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Amazon SQS dan AWS X-Ray
AWS X-Ray terintegrasi dengan Amazon Simple Queue Service (Amazon SQS) untuk melacak pesan yang dilewatkan melalui antrian Amazon SQS. Jika layanan melacak permintaan dengan menggunakan X-Ray SDK, Amazon SQS dapat mengirim header pelacakan dan terus menyebarkan jejak asli dari pengirim ke konsumen dengan ID pelacakan yang konsisten. Kontinuitas pelacakan mengaktifkan pengguna untuk melacak, menganalisis, dan men-debug di seluruh layanan hilir.
AWS X-Ray mendukung pelacakan aplikasi berbasis peristiwa menggunakan Amazon SQS dan. AWS Lambda Gunakan CloudWatch konsol untuk melihat tampilan terhubung dari setiap permintaan saat diantri dengan Amazon SQS dan diproses oleh fungsi Lambda hilir. Jejak dari produsen pesan hulu secara otomatis ditautkan ke jejak dari node konsumen Lambda hilir, menciptakan tampilan aplikasi ujung ke ujung. Untuk informasi selengkapnya, lihat melacak aplikasi berbasis peristiwa.
Amazon SQS mendukung instrumentasi header pelacakan berikut:
-
Header HTTP Default — X-Ray SDK secara otomatis mengisi header jejak sebagai header HTTP saat Anda memanggil Amazon SQS melalui SDK. AWS Header pelacakan default dilakukan oleh
X-Amzn-Trace-Iddan sesuai dengan semua pesan yang disertakan dalam permintaanSendMessageatauSendMessageBatch. Untuk mempelajari selengkapnya tentang Header HTTP default, lihat Header penelusuran. -
AWSTraceHeaderAtribut Sistem —AWSTraceHeaderIni adalah atribut sistem pesan yang disediakan oleh Amazon SQS untuk membawa header X-Ray jejak dengan pesan dalam antrian.AWSTraceHeadertersedia untuk digunakan bahkan ketika instrumentasi otomatis melalui X-Ray SDK tidak, misalnya saat membuat SDK pelacakan untuk bahasa baru. Ketika kedua instrumentasi header ditetapkan, atribut sistem pesan membatalkan header pelacakan HTTP.
Ketika berjalan di Amazon EC2, Amazon SQS mendukung pengolahan satu pesan pada satu waktu. Ini berlaku saat berjalan di host lokal, dan saat menggunakan layanan kontainer, seperti, Amazon ECS AWS Fargate, atau. AWS App Mesh
Header pelacakan dikecualikan dari ukuran pesan Amazon SQS dan kuota atribut pesan. Mengaktifkan X-Ray pelacakan tidak akan melebihi kuota Amazon SQS Anda. Untuk mempelajari lebih lanjut tentang ku AWS ota, lihat Kuota Amazon SQS.
Kirim header pelacakan HTTP
Komponen pengirim di Amazon SQS dapat mengirim header pelacakan secara otomatis melalui panggilan SendMessageBatch atau SendMessage. Ketika klien AWS SDK diinstrumentasi, mereka dapat dilacak secara otomatis melalui semua bahasa yang didukung melalui X-Ray SDK. Sumber daya yang dilacak Layanan AWS dan yang Anda akses dalam layanan tersebut (misalnya, bucket Amazon S3 atau antrian Amazon SQS), muncul sebagai node hilir pada peta pelacakan di X-Ray konsol.
Untuk mempelajari cara melacak panggilan AWS SDK dengan bahasa pilihan Anda, lihat topik berikut di SDK yang didukung:
-
Java – Menelusuri panggilan AWS SDK dengan X-Ray SDK for Java
-
Node.js – Menelusuri panggilan AWS SDK dengan X-Ray SDK untuk Node.js
-
Python – Menelusuri panggilan AWS SDK dengan X-Ray SDK untuk Python
-
Ruby – Menelusuri panggilan AWS SDK dengan X-Ray SDK for Ruby
-
.NET – Menelusuri panggilan AWS SDK dengan X-Ray SDK untuk.NET
Mengambil header pelacakan dan memulihkan konteks pelacakan
Jika Anda menggunakan konsumen hilir Lambda, propagasi konteks jejak dilakukan secara otomatis. Untuk melanjutkan propagasi konteks dengan konsumen Amazon SQS lainnya, Anda harus secara manual mengarahkan serah tangan ke komponen penerima.
Ada tiga langkah utama untuk memulihkan konteks pelacakan:
-
Terima pesan dari antrean untuk atribut
AWSTraceHeaderdengan memanggil APIReceiveMessage. -
Mengambil header pelacakan dari atribut.
-
Memulihkan ID pelacakan dari header. Secara opsional, tambahkan lebih banyak metrik ke segmen.
Berikut ini adalah contoh implementasi yang ditulis dengan X-Ray SDK untuk Java.
contoh: Mengambil header pelacakan dan memulihkan konteks pelacakan
// Receive the message from the queue, specifying the "AWSTraceHeader" ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest() .withQueueUrl(QUEUE_URL) .withAttributeNames("AWSTraceHeader"); List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages(); if (!messages.isEmpty()) { Message message = messages.get(0); // Retrieve the trace header from the AWSTraceHeader message system attribute String traceHeaderStr = message.getAttributes().get("AWSTraceHeader"); if (traceHeaderStr != null) { TraceHeader traceHeader = TraceHeader.fromString(traceHeaderStr); // Recover the trace context from the trace header Segment segment = AWSXRay.getCurrentSegment(); segment.setTraceId(traceHeader.getRootTraceId()); segment.setParentId(traceHeader.getParentId()); segment.setSampled(traceHeader.getSampled().equals(TraceHeader.SampleDecision.SAMPLED)); } }