Añada anotaciones y metadatos a los segmentos con X-Ray SDK para Java - AWS X-Ray

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Añada anotaciones y metadatos a los segmentos con X-Ray SDK para Java

Puede registrar información adicional acerca de las solicitudes, el entorno o su aplicación con anotaciones y metadatos. Puede añadir anotaciones y metadatos a los segmentos que SDK crea el X-Ray o a los subsegmentos personalizados que cree.

Las anotaciones son pares de clave-valor con valores de cadena, numéricos o booleanos. Las anotaciones se indexan para su uso con expresiones de filtro. Utilice las anotaciones para registrar los datos que desee utilizar para agrupar las trazas en la consola o al llamar a. GetTraceSummariesAPI

Los metadatos son pares de clave-valor con valores de cualquier tipo, por ejemplo objetos y listas, pero que no se indexan para utilizarlos con expresiones de filtro. Utilice los metadatos para registrar datos adicionales que desee almacenar en el rastro, pero que no necesite usar para hacer búsquedas.

Además de anotaciones y metadatos, también puede registrar cadenas de ID de usuario en los segmentos. IDsLos usuarios se graban en un campo independiente en los segmentos y se indexan para usarlos en la búsqueda.

Grabación de anotaciones con X-Ray SDK para Java

Utilice anotaciones para registrar información sobre segmentos o subsegmentos que desee indexar para las búsquedas.

Requisitos de anotación
  • Teclas: la clave de una anotación de X-Ray puede tener hasta 500 caracteres alfanuméricos. No puede utilizar espacios o símbolos que no sean puntos o puntos (.)

  • Valores: el valor de una anotación de X-Ray puede tener hasta 1000 caracteres Unicode.

  • Número de anotaciones: puede utilizar hasta 50 anotaciones por traza.

Para registrar anotaciones
  1. Obtenga una referencia al segmento o subsegmento actual desde AWSXRay.

    import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.entities.Segment; ... Segment document = AWSXRay.getCurrentSegment();

    o

    import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.entities.Subsegment; ... Subsegment document = AWSXRay.getCurrentSubsegment();
  2. Llame a putAnnotation con una clave de cadena y un valor booleano, numérico o de cadena.

    document.putAnnotation("mykey", "my value");

    El siguiente ejemplo muestra cómo llamar putAnnotation con una clave de cadena que incluye un punto y un valor booleano, numérico o de cadena.

    document.putAnnotation("testkey.test", "my value");

SDKRegistra las anotaciones como pares clave-valor en un annotations objeto del documento de segmento. Si llama dos veces a putAnnotation con la misma clave, se sobrescriben los valores previamente registrados en ese segmento o subsegmento.

Para encontrar rastros que tengan anotaciones con valores específicos, utilice la palabra clave annotation[key] en una expresión de filtro.

ejemplo src/main/java/scorekeep/GameModel.java: anotaciones y metadatos
import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.entities.Segment; import com.amazonaws.xray.entities.Subsegment; ... public void saveGame(Game game) throws SessionNotFoundException { // wrap in subsegment Subsegment subsegment = AWSXRay.beginSubsegment("## GameModel.saveGame"); try { // check session String sessionId = game.getSession(); if (sessionModel.loadSession(sessionId) == null ) { throw new SessionNotFoundException(sessionId); } Segment segment = AWSXRay.getCurrentSegment(); subsegment.putMetadata("resources", "game", game); segment.putAnnotation("gameid", game.getId()); mapper.save(game); } catch (Exception e) { subsegment.addException(e); throw e; } finally { AWSXRay.endSubsegment(); } }

Grabación de metadatos con X-Ray SDK para Java

Utilice los metadatos para registrar información sobre segmentos o subsegmentos que no necesite indexar para las búsquedas. Los valores de los metadatos pueden ser cadenas, números, valores booleanos o cualquier objeto que se pueda serializar en un JSON objeto o matriz.

Para registrar metadatos
  1. Obtenga una referencia al segmento o subsegmento actual desde AWSXRay.

    import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.entities.Segment; ... Segment document = AWSXRay.getCurrentSegment();

    o

    import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.entities.Subsegment; ... Subsegment document = AWSXRay.getCurrentSubsegment();
  2. Llame a putMetadata con un espacio de nombres de cadena, una clave de cadena y un valor booleano, numérico, de cadena o de objeto.

    document.putMetadata("my namespace", "my key", "my value");

    o

    Llame a putMetadata con solo una clave y un valor.

    document.putMetadata("my key", "my value");

Si no especificas un espacio de nombres, los utiliza. SDK default Si llama dos veces a putMetadata con la misma clave, se sobrescriben los valores previamente registrados en ese segmento o subsegmento.

ejemplo src/main/java/scorekeep/GameModel.java: anotaciones y metadatos
import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.entities.Segment; import com.amazonaws.xray.entities.Subsegment; ... public void saveGame(Game game) throws SessionNotFoundException { // wrap in subsegment Subsegment subsegment = AWSXRay.beginSubsegment("## GameModel.saveGame"); try { // check session String sessionId = game.getSession(); if (sessionModel.loadSession(sessionId) == null ) { throw new SessionNotFoundException(sessionId); } Segment segment = AWSXRay.getCurrentSegment(); subsegment.putMetadata("resources", "game", game); segment.putAnnotation("gameid", game.getId()); mapper.save(game); } catch (Exception e) { subsegment.addException(e); throw e; } finally { AWSXRay.endSubsegment(); } }

Grabación del usuario IDs con X-Ray SDK para Java

Registre IDs el usuario en los segmentos de solicitud para identificar al usuario que envió la solicitud.

Para registrar al usuario IDs
  1. Obtenga una referencia al segmento actual desde AWSXRay.

    import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.entities.Segment; ... Segment document = AWSXRay.getCurrentSegment();
  2. Llame a setUser con un ID de cadena del usuario que envió la solicitud.

    document.setUser("U12345");

Puede llamar a setUser en sus controladores para registrar el ID de usuario en cuanto la aplicación empiece a procesar la solicitud. Si solo va a utilizar el segmento para establecer el ID de usuario, puede encadenar las llamadas en una sola línea.

ejemplo src/main/java/scorekeep/ .java: ID MoveController de usuario
import com.amazonaws.xray.AWSXRay; ... @RequestMapping(value="/{userId}", method=RequestMethod.POST) public Move newMove(@PathVariable String sessionId, @PathVariable String gameId, @PathVariable String userId, @RequestBody String move) throws SessionNotFoundException, GameNotFoundException, StateNotFoundException, RulesException { AWSXRay.getCurrentSegment().setUser(userId); return moveFactory.newMove(sessionId, gameId, userId, move); }

Para buscar rastros de un ID de usuario, utilice la palabra clave user en una expresión de filtro.