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ía | Biblioteca | Versión mínima del rastreador | Versión de rastreador recomendada |
---|
Kafka | confluent-kafka-go | 1.56.1 | 1.66.0 o posterior |
Kafka | Sarama | 1.56.1 | 1.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:
- Sigue la guía Empezando con la orquestación para compilar o ejecutar tu servicio utilizando la Orquestación.
- 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:
- 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:
- Importa la biblioteca go
ddkafka
import (
ddkafka "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/kafka.v2"
)
- 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:
- Extraer el contexto de las cabeceras
ctx = datastreams.ExtractFromBase64Carrier(ctx, ddsarama.NewConsumerMessageCarrier(message))
- 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
- Asegúrate de que tu mensaje es compatible con la interfaz TextMapWriter.
- 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
- Asegúrate de que tu mensaje es compatible con la interfaz TextMapReader.
- 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")