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

Requisitos previos

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

Note: This documentation uses v2 of the Go tracer, which Datadog recommends for all users. If you are using v1, see the migration guide to upgrade to v2.

Data Streams Monitoring no se ha modificado entre la v1 y la v2 del rastreador.

Bibliotecas compatibles

TecnologíaBibliotecaVersión mínima del rastreadorVersión recomendada del rastreador
Kafkaconfluent-kafka-go1.56.11.66.0 or later
KafkaSarama1.56.11.66.0 or later
Kafkakafka-go1.63.01.63.0 or later

Instalación

Monitoring Kafka Pipelines

Data Streams Monitoring uses message headers to propagate context through Kafka streams. If log.message.format.version is set in the Kafka broker configuration, it must be set to 0.11.0.0 or higher. Data Streams Monitoring is not supported for versions lower than this.

Monitoring RabbitMQ pipelines

The RabbitMQ integration can provide detailed monitoring and metrics of your RabbitMQ deployments. For full compatibility with Data Streams Monitoring, Datadog recommends configuring the integration as follows:

instances:
  - prometheus_plugin:
      url: http://<HOST>:15692
      unaggregated_endpoint: detailed?family=queue_coarse_metrics&family=queue_consumer_count&family=channel_exchange_metrics&family=channel_queue_exchange_metrics&family=node_coarse_metrics

This ensures that all RabbitMQ graphs populate, and that you see detailed metrics for individual exchanges as well as queues.

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 "github.com/DataDog/dd-trace-go/contrib/IBM/sarama/v2"
)

2. Wrap the producer with `ddsarama.WrapAsyncProducer`

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

// ADD THIS LINE
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 "github.com/DataDog/dd-trace-go/contrib/confluentinc/confluent-kafka-go/kafka.v2/v2"
)
  1. Envuelve la creación del productor con ddkafka.NewProducer y utiliza la configuraciónddkafka.WithDataStreams()
// CREATE PRODUCER WITH THIS 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))
    
  2. 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")

Conectores de monitorización

Conectores de Confluent Cloud

Data Streams Monitoring can automatically discover your Confluent Cloud connectors and visualize them within the context of your end-to-end streaming data pipeline.

Setup
  1. Install and configure the Datadog-Confluent Cloud integration.

  2. In Datadog, open the Confluent Cloud integration tile.

    The Confluent Cloud integration tile in Datadog, on the Configure tab. Under an Actions heading, a table titled '13 Resources autodiscovered' containing a list of resources and checkboxes for each resource.

    Under Actions, a list of resources populates with detected clusters and connectors. Datadog attempts to discover new connectors every time you view this integration tile.

  3. Select the resources you want to add.

  4. Click Add Resources.

  5. Navigate to Data Streams Monitoring to visualize the connectors and track connector status and throughput.

Referencias adicionales