Adicione anotações e metadados aos segmentos com o X-Ray for Java SDK - AWS X-Ray

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Adicione anotações e metadados aos segmentos com o X-Ray for Java SDK

Você pode registrar informações adicionais sobre solicitações, o ambiente ou a aplicação com anotações e metadados. Você pode adicionar anotações e metadados aos segmentos que o X-Ray SDK cria ou aos subsegmentos personalizados que você cria.

Anotações são pares de chave-valor com valores boolianos, de string ou número. As anotações são indexadas para serem usadas com expressões de filtro. Use anotações para registrar dados que você deseja usar para agrupar rastreamentos no console ou ao chamar o. GetTraceSummariesAPI

Metadados são pares chave-valor que podem ter valores de qualquer tipo, incluindo objetos e listas, mas não são indexados para uso com expressões de filtro. Use metadados para registrar dados adicionais que você deseja armazenar no rastreamento e não precisa usar com a pesquisa.

Além de anotações e metadados, você também pode registrar strings de ID de usuário em segmentos. IDsOs usuários são registrados em um campo separado nos segmentos e são indexados para uso com a pesquisa.

Gravando anotações com o SDK X-Ray for Java

Use anotações para registrar informações em segmentos ou subsegmentos que você deseja indexar para pesquisa.

Requisitos de anotação
  • Teclas — A chave para uma anotação de X-Ray pode ter até 500 caracteres alfanuméricos. Você não pode usar espaços ou símbolos que não sejam um ponto ou ponto (.)

  • Valores — O valor de uma anotação X-Ray pode ter até 1.000 caracteres Unicode.

  • O número de anotações — Você pode usar até 50 anotações por rastreamento.

Como registrar anotações
  1. Obtenha uma referência para o segmento ou subsegmento atual no AWSXRay.

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

    ou

    import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.entities.Subsegment; ... Subsegment document = AWSXRay.getCurrentSubsegment();
  2. Chame putAnnotation com uma chave de string e um valor de número, string ou booleano.

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

    O exemplo a seguir mostra como chamar putAnnotation com uma chave String que inclui um ponto e um valor booleano, numérico ou string.

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

As anotações SDK registram como pares de valores-chave em um annotations objeto no documento do segmento. Chamar putAnnotation duas vezes com a mesma chave substitui os valores registrados anteriormente no mesmo segmento ou subsegmento.

Para encontrar rastreamentos que têm anotações com valores específicos, use a palavra-chave annotation[key] em uma expressão de filtro.

exemplo src/main/java/scorekeep/GameModel.java: anotações e metadados
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(); } }

Gravando metadados com o X-Ray SDK for Java

Use metadados para registrar informações em segmentos ou subsegmentos dos quais você não precisa indexados para pesquisa. Os valores de metadados podem ser cadeias de caracteres, números, booleanos ou qualquer objeto que possa ser serializado em um JSON objeto ou matriz.

Como registrar metadados
  1. Obtenha uma referência para o segmento ou subsegmento atual no AWSXRay.

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

    ou

    import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.entities.Subsegment; ... Subsegment document = AWSXRay.getCurrentSubsegment();
  2. Chame putMetadata com um namespace de string e uma chave de string e um valor booleano, de número, string ou objeto.

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

    ou

    Chame putMetadata com apenas uma chave e valor.

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

Se você não especificar um namespace, os SDK usos. default Chamar putMetadata duas vezes com a mesma chave substitui os valores registrados anteriormente no mesmo segmento ou subsegmento.

exemplo src/main/java/scorekeep/GameModel.java: anotações e metadados
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(); } }

Gravando usuário IDs com o X-Ray SDK for Java

Registre o usuário IDs nos segmentos da solicitação para identificar o usuário que enviou a solicitação.

Para gravar usuário IDs
  1. Obtenha uma referência para o segmento atual em AWSXRay.

    import com.amazonaws.xray.AWSXRay; import com.amazonaws.xray.entities.Segment; ... Segment document = AWSXRay.getCurrentSegment();
  2. Chame setUser com um ID de string do usuário que enviou a solicitação.

    document.setUser("U12345");

Você pode acionar setUser em seus controladores para registrar o ID de usuário assim que a aplicação começar a processar uma solicitação. Se pretende usar o segmento apenas para definir o ID de usuário, você pode vincular as chamadas em uma única linha.

exemplo src/main/java/scorekeep/ .java MoveController — ID do usuário
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 encontrar rastreamentos para um ID de usuário, use a user palavra-chave em uma expressão de filtragem.