Tracer des applications C++
Remarque : C++ ne fournit pas d'intégrations pour l'instrumentation automatique, mais il est utilisé par le proxy tracing tel que
Envoy et
Nginx.
Exigences de compatibilité
Le SDK C++ nécessite une chaîne d’outils C++17 pour la compilation. Pour obtenir une liste complète des exigences de compatibilité du SDK Datadog et de la prise en charge de l’architecture des processeurs, consultez la page Compatibility Requirements.
Mise en route
Avant de commencer, assurez-vous d’avoir déjà installé et configuré l’Agent.
Instrumentez votre application
Voici un exemple d’application pouvant être utilisée pour les tests dd-trace-cpp.
Cette application crée une instance de traceur avec les paramètres par défaut et génère une trace avec deux spans, qui est reportée sous le nom de service 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 est un script CMake multiplateforme qui ajoute des fonctionnalités de gestion des dépendances à CMake.
# In a CMakeLists.txt
CPMAddPackage("gh:DataDog/dd-trace-cpp#1.0.0")
# Add `tracer_example` target
add_executable(tracer_example tracer_example.cpp)
# Statically link against `dd-trace-cpp`
# NOTE: To dynamically link against `dd-trace-cpp` use the `dd_trace::shared` target
target_link_libraries(tracer_example dd_trace::static)
Compilez l’exemple en utilisant les commandes suivantes :
cmake -B build -DCMAKE_BUILD_TYPE=Release .
cmake --build build --target tracer_example -j
./build/tracer_example
DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type":"datadog::tracing::ThreadedEventScheduler" ... }}}
Pour intégrer la bibliothèque dd-trace-cpp à votre projet C++ en utilisant CMake, suivez ces étapes :
include(FetchContent)
FetchContent_Declare(
dd-trace-cpp
GIT_REPOSITORY https://github.com/DataDog/dd-trace-cpp
GIT_TAG v1.0.0
GIT_SHALLOW ON
GIT_PROGRESS ON
)
FetchContent_MakeAvailable(dd-trace-cpp)
# Add `tracer_example` target
add_executable(tracer_example tracer_example.cpp)
# Statically link against `dd-trace-cpp`
# NOTE: To dynamically link against `dd-trace-cpp` use the `dd_trace_cpp_shared` target
target_link_libraries(tracer_example dd_trace::static)
Compilez l’exemple en utilisant les commandes suivantes :
cmake -B build -DCMAKE_BUILD_TYPE=Release .
cmake --build build --target tracer_example -j
./build/tracer_example
DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type":"datadog::tracing::ThreadedEventScheduler" ... }}}
Pour télécharger et installer manuellement la bibliothèque dd-trace-cpp, exécutez le script bash suivant :
# Requires the "jq" command, which can be installed via
# the package manager:
# - 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
# Gets the latest release version number from 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)"
# Download and install dd-trace-cpp library.
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
# Download and install the correct version of dd-trace-cpp.
# Configure the project, build it, and install it.
cmake -B build .
cmake --build build -j
cmake --install build
Par défaut, cmake --install place la bibliothèque partagée et les en-têtes publics dans les répertoires système appropriés (par exemple, /usr/local/[...]).
Pour les installer dans un emplacement spécifique, utilisez cmake --install build --prefix <INSTALL_DIR> à la place.
Liaison dynamique
Établissez la liaison avec libdd-trace-cpp.so et assurez-vous que la bibliothèque partagée se trouve dans LD_LIBRARY_PATH.
clang -std=c++17 -o tracer_example tracer_example.cpp -ldd-trace-cpp
LD_LIBRARY_PATH=/usr/local/lib/ ./tracer_example
DATADOG TRACER CONFIGURATION - {"collector":{"config":{"event_scheduler":{"type":"datadog::tracing::ThreadedEventScheduler" ... }}}
Configuration
Si nécessaire, configurez le SDK pour envoyer les données de télémétrie de performance de l’application selon vos besoins, y compris la mise en place du marquage de service unifié (Unified Service Tagging) : Consultez Library Configuration pour plus de détails.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: