Nachverfolgen von Aufrufen nachgelagerter HTTP-Web-Services mit dem X-Ray SDK for Java - AWS X-Ray

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Nachverfolgen von Aufrufen nachgelagerter HTTP-Web-Services mit dem X-Ray SDK for Java

Wenn Ihre Anwendung Microservices oder öffentliche HTTP-APIs aufruft, können Sie das X-Ray SDK for Java verwenden, um die Version vonHttpClientum diese Aufrufe zu instrumentieren und die API der Service-Grafik als nachgelagerten Service hinzuzufügen.

Das X-Ray SDK for Java beinhaltetDefaultHttpClientundHttpClientBuilderKlassen, die anstelle des Apache verwendet werden können HttpComponentsEntsprechungen zu instrumentieren.

  • com.amazonaws.xray.proxies.apache.http.DefaultHttpClient - org.apache.http.impl.client.DefaultHttpClient

  • com.amazonaws.xray.proxies.apache.http.HttpClientBuilder - org.apache.http.impl.client.HttpClientBuilder

Diese Bibliotheken befinden sich im aws-xray-recorder-sdk-apache-http-Untermodul.

Sie können Ihre vorhandenen Importanweisungen mit der X-Ray ersetzen, um alle Clients zu instrumentieren, oder Sie können beim Initialisieren eines Clients den vollständigen Namen verwenden, um spezifische Clients zu instrumentieren.

Beispiel HttpClientBuilder

import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.util.EntityUtils; import com.amazonaws.xray.proxies.apache.http.HttpClientBuilder; ... public String randomName() throws IOException { CloseableHttpClient httpclient = HttpClientBuilder.create().build(); HttpGet httpGet = new HttpGet("http://names.example.com/api/"); CloseableHttpResponse response = httpclient.execute(httpGet); try { HttpEntity entity = response.getEntity(); InputStream inputStream = entity.getContent(); ObjectMapper mapper = new ObjectMapper(); Map<String, String> jsonMap = mapper.readValue(inputStream, Map.class); String name = jsonMap.get("name"); EntityUtils.consume(entity); return name; } finally { response.close(); } }

Wenn Sie einen Aufruf einer nachgelagerten Web-API instrumentieren, erfasst das X-Ray SDK for Java ein Untersegment mit Informationen über die HTTP-Anforderung und Antwort. X-Ray verwendet das Untersegment, um ein abgeleitetes Segment für die entfernte API zu generieren.

Beispiel Untersegment für einen nachgelagerten HTTP-Aufruf

{ "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 } } }

Beispiel Abgeleitetes Segment für einen nachgelagerten HTTP-Anruf

{ "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 }