Configurer l'APM en C++

Configurer l'APM en C++

Présentation

Ce guide vient compléter la documentation sur la configuration de l’APM en C++. Les instructions qui y sont détaillées vous permettent de configurer une application simple en C++ avec l’APM sur votre VM, afin de diagnostiquer vos éventuels problèmes.

Configuration de votre solution

Environnement de base

Commencez par lancer une nouvelle box Vagrant ubuntu/xenial64 et y exécuter la commande ssh :

vagrant init ubuntu/xenial64
vagrant up
vagrant ssh

Installez ensuite l’Agent avec les instructions de l’IU.

Préparation pour C++

Installez g++ et cmake :

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

Exécutez ces deux lignes de code conjointement afin d’obtenir la dernière version de C++ :

get_latest_release() {
  wget -qO- "https://api.github.com/repos/$1/releases/latest" |
    grep '"tag_name":' |
    sed -E 's/.*"([^"]+)".*/\1/';
}
DD_OPENTRACING_CPP_VERSION="$(get_latest_release DataDog/dd-opentracing-cpp)"

Si vous obtenez un message de Github indiquant que votre taux est limité, patientez quelques minutes avant de relancer la commande. Une fois la mise à jour terminée, assurez-vous de son bon fonctionnement en vérifiant votre version de C++ :

echo $DD_OPENTRACING_CPP_VERSION

Téléchargez et installez ensuite la bibliothèque dd-opentracing-cpp :

wget https://github.com/DataDog/dd-opentracing-cpp/archive/${DD_OPENTRACING_CPP_VERSION}.tar.gz -O dd-opentracing-cpp.tar.gz

Après avoir téléchargé le fichier tar, créez un nouveau répertoire et un fichier .build pour la bibliothèque :

mkdir -p dd-opentracing-cpp/.build

Dézippez-le :

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

La liste du contenu de votre bibliothèque s’affiche alors dans votre console :

dd-opentracing-cpp-1.0.1/test/integration/nginx/nginx.conf
dd-opentracing-cpp-1.0.1/test/integration/nginx/nginx_integration_test.sh

Accédez ensuite à votre répertoire .build :

cd dd-opentracing-cpp/.build

Enfin, installez les dépendances :

sudo ../scripts/install_dependencies.sh
cmake ..
make
sudo make install

Créer une application simple

Créez un fichier tracer_example.cpp et ajoutez-y ce qui suit :

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

int main(int argc, char* argv[]) {
  datadog::opentracing::TracerOptions tracer_options{"localhost", 8126, "compiled-in example"};
  auto tracer = datadog::opentracing::makeTracer(tracer_options);

  // Créer quelques spans.
  {
    auto span_a = tracer->StartSpan("A");
    span_a->SetTag("tag", 123);
    auto span_b = tracer->StartSpan("B", {opentracing::ChildOf(&span_a->context())});
    span_b->SetTag("tag", "value");
  }

  tracer->Close();
  return 0;
}

Ce code crée un traceur qui génère deux spans (une span parent span_a et une span enfant span_b) et leur applique des tags.

Liez ensuite libdd_opentracing et libopentracing :

g++ -std=c++14 -o tracer_example tracer_example.cpp -ldd_opentracing -lopentracing

Enfin, lancez l’application :

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

Envoyer des traces

Maintenant que votre application a été créée, vous pouvez commencer à envoyer des traces pour tester l’Agent de trace.

Commencez par suivre le log de l’Agent de traces :

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

Ouvrez ensuite un nouvel onglet et lancez l’exemple quelques fois :

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

Les données suivantes apparaissent alors sur l’onglet Trace Agent :

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

Le service s’affiche ensuite sur la page de vos services APM dans Datadog.

Cliquez sur le service pour afficher vos traces.

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles: