Configuración de APM con C++

Información general

Esta guía amplía la documentación de APM con C++ para proporcionar instrucciones paso a paso sobre cómo configurar una aplicación C++ con APM sencilla en tu VM para solucionar problemas.

Configuración de tu caja

Entorno básico

En primer lugar, rota la nueva caja ubuntu/jammy64 de Vagrant y ssh en ella con:

vagrant init ubuntu/jammy64
vagrant up
vagrant ssh

A continuación, instala el Agent siguiendo las instrucciones de la interfaz de usuario.

Preparación para C++

Instala g++ y cmake con:

sudo apt-get update
sudo apt-get -y install g++ cmake

Descarga e instala la biblioteca dd-trace-cpp con:

wget https://github.com/DataDog/dd-trace-cpp/archive/v0.2.0.tar.gz -O dd-trace-cpp.tar.gz

Si recibes un mensaje de tasa limitada de GitHub, espera unos minutos y vuelve a ejecutar el comando.

Una vez descargado el archivo tar, descomprímelo:

tar zxvf dd-trace-cpp.tar.gz -C ./dd-trace-cpp/ --strip-components=1

Por último, crea e instala la biblioteca:

cd dd-trace-cpp
cmake -B build .
cmake --build build -j
cmake --install build

Crear una aplicación sencilla

Crea un nuevo archivo llamado tracer_example.cpp y rellénalo con el siguiente código:

#include <datadog/tracer.h>
#include <iostream>
#include <string>

int main(int argc, char* argv[]) {
  datadog::tracing::TracerConfig tracer_config;
  tracer_config.service = "compiled-in example";

  const auto validated_config = dd::finalize_config(tracer_options);
  if (!validated_config) {
    std::cerr << validated_config.error() << '\n';
    return 1;
  }

  dd::Tracer tracer{*validated_config};

  // Crea algunos tramos.
  {
    datadog::tracing::SpanConfig options;
    options.name = "A";
    options.tags.emplace("tag", "123");
    auto span_a = tracer.create_span(options);

    auto span_b = span_a.create_child();
    span_b.set_name("B");
    span_b.set_tag("tag", "value");
  }

  return 0;
}

Esto crea un rastreador que genera dos tramos, un tramo primario span_a y un tramo secundario span_b , y los etiqueta.

A continuación, compila y vincula contra libdd_trace_cpp con:

g++ -std=c++17 -o tracer_example tracer_example.cpp -ldd_trace_cpp

Por último, ejecuta la aplicación con:

LD_LIBRARY_PATH=/usr/local/lib/ ./tracer_example

Envío de trazas

Ahora que ya existe una aplicación, puedes empezar a enviar trazas y ver en acción el Trace Agent.

En primer lugar, supervisa el log del Trace Agent con:

tail -f /var/log/datadog/trace-agent.log

A continuación, abre una nueva pestaña y ejecuta el ejemplo un par de veces:

LD_LIBRARY_PATH=/usr/local/lib/ ./tracer_example

En la pestaña Trace Agent, verás algo parecido a:

2019-08-09 20:02:26 UTC | TRACE | INFO | (pkg/trace/info/stats.go:108 in LogStats) | [lang:cpp lang_version:201402 tracer_version:0.2.0] -> traces received: 1, traces filtered: 0, traces amount: 363 bytes, events extracted: 0, events sampled: 0

A continuación, aparece el servicio en el Catálogo de servicios en Datadog.

Página de servicios de APM

Haz clic en el servicio para ver tus trazas.

Interfaz de usuario de trazas de APM

Leer más

Más enlaces, artículos y documentación útiles: