Rastreo de de aplicaciones C++
Nota: C++ no proporciona integraciones para la instrumentación automática, pero es utilizado por el rastreo de proxy como
Envoy y
Nginx.
Requisitos de compatibilidad
La biblioteca de rastreo de C++ requiere la cadena de herramientas C++17 para su compilación. Para obtener la lista completa de los requisitos de compatibilidad de la biblioteca de rastreo y de la arquitectura del procesador de Datadog, consulta la página de requisitos de compatibilidad.
Para empezar
Antes de empezar, asegúrate de haber [instalado y configurado el Agent][12].
Instrumentación de tu aplicación
La siguiente es una aplicación de ejemplo que puede utilizarse para probar dd-trace-cpp
.
Esta aplicación crea una instancia de trazador con parámetros predeterminados y genera una traza (trace) con dos tramos (spans), que se informa con el nombre de servicio my-service
.
// tracer_example.cpp
#include <datadog/span_config.h>
#include <datadog/tracer.h>
#include <datadog/tracer_config.h>
#include <iostream>
#include <string>
namespace dd = datadog::tracing;
int main() {
dd::TracerConfig config;
config.service = "my-service";
const auto validated_config = dd::finalize_config(config);
if (!validated_config) {
std::cerr << validated_config.error() << '\n';
return 1;
}
dd::Tracer tracer{*validated_config};
// Create some spans.
{
auto span_a = tracer.create_span();
span_a.set_name("A");
span_a.set_tag("tag", "123");
auto span_b = span_a.create_child();
span_b.set_name("B");
span_b.set_tag("tag", "value");
}
return 0;
}
CPM.cmake es un script CMake multiplataforma que añade capacidades de gestión de dependencias a CMake.
# En un CMakeLists.txt
CPMAddPackage("gh:DataDog/dd-trace-cpp#0.2.1")
# Agrega el destino `tracer_example`
add_executable(tracer_example tracer_example.cpp)
# Vincula estadísticamente con `dd-trace-cpp`
# NOTA: Para vincular estadísticamente con `dd-trace-cpp` utiliza el destino `dd_trace::shared`
target_link_libraries(tracer_example dd_trace::static)
Crea el ejemplo utilizando los siguientes comandos:
cmake -B build .
cmake --build build --target tracer_example -j
./build/tracer_example
DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type":"datadog::tracing::ThreadedEventScheduler" ... }}}
Para integrar la biblioteca dd-trace-cpp
en tu proyecto C++ utilizando CMake, sigue estos pasos:
include(FetchContent)
FetchContent_Declare(
dd-trace-cpp
GIT_REPOSITORY https://github.com/DataDog/dd-trace-cpp
GIT_TAG v0.2.0
GIT_SHALLOW ON
GIT_PROGRESS ON
)
FetchContent_MakeAvailable(dd-trace-cpp)
# Agrega el destino `tracer_example`
add_executable(tracer_example tracer_example.cpp)
# Vincula estadísticamente con `dd-trace-cpp`
# NOTA: Para vincular estadísticamente con `dd-trace-cpp` utiliza el destino `dd_trace_cpp_shared`
target_link_libraries(tracer_example dd_trace::static)
Crea el ejemplo utilizando los siguientes comandos:
cmake -B build .
cmake --build build --target tracer_example -j
./build/tracer_example
DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type":"datadog::tracing::ThreadedEventScheduler" ... }}}
Para descargar e instalar manualmente la biblioteca dd-trace-cpp
, ejecuta el siguiente script bash:
# Requiere el comando "jq", que puede instalarse a través de
# el gestor de paquetes:
# - APT: `apt install jq`
# - APK: `apk add jq`
# - YUM: `yum install jq`
if ! command -v jq >/dev/null 2>&1; then
>&2 echo "jq command not found. Install using the local package manager."
exit 1
fi
# Obtiene el número de versión del último lanzamiento desde GitHub.
get_latest_release() {
curl --silent "https://api.github.com/repos/$1/releases/latest" | jq --raw-output .tag_name
}
DD_TRACE_CPP_VERSION="$(get_latest_release DataDog/dd-trace-cpp)"
# Descarga e instala la biblioteca dd-trace-cpp.
wget https://github.com/DataDog/dd-trace-cpp/archive/${DD_TRACE_CPP_VERSION}.tar.gz -O dd-trace-cpp.tar.gz
mkdir dd-trace-cpp && tar zxvf dd-trace-cpp.tar.gz -C ./dd-trace-cpp/ --strip-components=1
cd dd-trace-cpp
# Descarga e instala la versión correcta de dd-trace-cpp.
# Configura el proyecto, créalo e instálalo.
cmake -B build .
cmake --build build -j
cmake --install build
Por defecto, cmake --install
coloca los encabezados compartidos públicos y de bibliotecas en los directorios apropiados del sistema (por ejemplo, /usr/local/[...]
).
Para instalarlos en una localización específica, utiliza cmake --install build --prefix <INSTALL_DIR>
.
Vinculación dinámica
Vincula a libdd_trace_cpp.so
, asegurándote de que la biblioteca compartids está en LD_LIBRARY_PATH
.
clang -std=c++17 -o tracer_example tracer_example.cpp -ldd_trace_cpp
./tracer_example
DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type":"datadog::tracing::ThreadedEventScheduler" ... }}}
Configuración
Si es necesario, configura la biblioteca de rastreo para que envíe datos de telemetría sobre el rendimiento de la aplicación, según sea necesario, incluida la configuración del etiquetado unificado de servicios. Para ver más detalles, consulta la configuración de bibliotecas.
Leer más
Más enlaces, artículos y documentación útiles: