Configurar la monitorización de secuencias de datos para Go

Están disponibles los siguientes tipos de instrumentación:

Join an enablement webinar session

Explore y regístrese en las sesiones de Foundation Enablement. Descubra cómo Datadog Sintético Monitorización es una solución proactiva Monitorización que le permite crear pruebas de API, navegador y móvil sin código para simular automáticamente los flujos y las solicitudes de los usuarios a sus aplicaciones, puntos finales clave y capas red.

SIGN UP

Para empezar con Data Streams Monitoring, necesitas versiones recientes de las bibliotecas del Datadog Agent y de Data Streams Monitoring:

Bibliotecas compatibles

TecnologíaBibliotecaVersión mínima del rastreadorVersión de rastreador recomendada
Kafkaconfluent-kafka-go1.56.11.66.0 o posterior
KafkaSarama1.56.11.66.0 o posterior

Instalación

Instrumentación automática

La instrumentación automática utiliza la Orquestación para instalar dd-trace-go y es compatible tanto con Sarama como con bibliotecas Confluent Kafka.

Para instrumentar automáticamente tu servicio:

  1. Sigue la guía Empezando con la orquestación para compilar o ejecutar tu servicio utilizando la Orquestación.
  2. Configura la variable de entorno DD_DATA_STREAMS_ENABLED=true.

Instrumentación manual

Cliente de Sarama Kafka

Para instrumentar manualmente el cliente Sarama Kafka con la Monitorización de flujos de datos:

  1. Importa la biblioteca go ddsarama
import (
  ddsarama "gopkg.in/DataDog/dd-trace-go.v1/contrib/Shopify/sarama"
)

2. Envuelve el productor con `ddsarama.WrapAsyncProducer`

...
config := sarama.NewConfig()
producer, err := sarama.NewAsyncProducer([]string{bootStrapServers}, config)

// AÑADE ESTA LÍNEA
producer = ddsarama.WrapAsyncProducer(config, producer, ddsarama.WithDataStreams())
Cliente de Confluent Kafka

Para instrumentar manualmente Confluent Kafka con la Monitorización de flujos de datos:

  1. Importa la biblioteca go ddkafka
import (
  ddkafka "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/kafka.v2"
)
  1. Envuelve la creación del productor con ddkafka.NewProducer y utiliza la configuraciónddkafka.WithDataStreams()
// CREA EL PRODUCTOR CON ESTE WRAPPER
producer, err := ddkafka.NewProducer(&kafka.ConfigMap{
        "bootstrap.servers": bootStrapServers,
}, ddkafka.WithDataStreams())

Si un servicio consume datos de un punto y produce a otro punto, propaga el contexto entre los dos lugares utilizando la estructura de contexto de Go:

  1. Extraer el contexto de las cabeceras
ctx = datastreams.ExtractFromBase64Carrier(ctx, ddsarama.NewConsumerMessageCarrier(message))
  1. Inyectarlo en la cabecera antes de producir aguas abajo
    datastreams.InjectToBase64Carrier(ctx, ddsarama.NewProducerMessageCarrier(message))
    

Otras tecnologías o protocolos de colas

También puedes utilizar la instrumentación manual. Por ejemplo, puedes propagar el contexto a través de Kinesis.

Instrumentación de la llamada a producción
  1. Asegúrate de que tu mensaje es compatible con la interfaz TextMapWriter.
  2. Inserta el contexto en tu mensaje e instrumenta la llamada a producción llamando a:
ctx, ok := tracer.SetDataStreamsCheckpointWithParams(ctx, options.CheckpointParams{PayloadSize: getProducerMsgSize(msg)}, "direction:out", "type:kinesis", "topic:kinesis_arn")
si ok {
  datastreams.InjectToBase64Carrier(ctx, message)
}
Instrumentación de la llamada al consumo
  1. Asegúrate de que tu mensaje es compatible con la interfaz TextMapReader.
  2. Extrae el contexto de tu mensaje e instrumenta la llamada a consumir llamando a:
    ctx, ok := tracer.SetDataStreamsCheckpointWithParams(datastreams.ExtractFromBase64Carrier(context.Background(), message), options.CheckpointParams{PayloadSize: payloadSize}, "direction:in", "type:kinesis", "topic:kinesis_arn")