Jaeger Tracing не работает с yaml- cpp версия 0.6.x - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь оснастить свою программу трассировкой jaeger (c ++).

Я смог просмотреть свои трассы, когда компилировал программу с yaml- cpp версии 0.5.3, но когда я изменил версию yaml- cpp на 0.6.x, я не могу просмотреть свои следы. Не знаю, почему это происходит.

JaegerProgram Исходный код;

#include <iostream>
#include<memory>
#include <yaml-cpp/yaml.h>
#include<jaegertracing/Tracer.h>
#include<chrono>

using namespace std;
// using namespace literals::chrono_literals;

void init(const char *FilePath)
{
    auto yaml = YAML::LoadFile(FilePath);
    auto config = jaegertracing::Config::parse(yaml);
    auto tracer=jaegertracing::Tracer::make(
        "example-service-2",
        config,
        jaegertracing::logging::consoleLogger()
    );
    opentracing::Tracer::InitGlobal(
        static_pointer_cast<opentracing::Tracer>(tracer)
    );
}

void ChildSpan(const unique_ptr<opentracing::Span>& parentSpan){
    this_thread::sleep_for(chrono::milliseconds(2));
    auto childSpan = opentracing::Tracer::Global()->StartSpan("Span2",{opentracing::ChildOf(&parentSpan->context())});
}

void FollowsSpan(const unique_ptr<opentracing::Span>& followFromspan){
    this_thread::sleep_for(chrono::milliseconds(3));
    auto followSpan = opentracing::Tracer::Global()->StartSpan("Span3",{opentracing::FollowsFrom(&followFromspan->context())});
}

void ParentSpan(){
    auto span = opentracing::Tracer::Global()->StartSpan("Span1");
    ChildSpan(span);
    FollowsSpan(span);
    this_thread::sleep_for(chrono::milliseconds(4));
}

int main()
{
    init("./config.yaml");
    ParentSpan();
    cout<<"Hello World"<<endl;
    opentracing::Tracer::Global()->Close();
    return 0;
}

команда компиляции - g++ -std=c++1z test.cpp -L /usr/local/lib/libyaml-cpp.a -ljaegertracing -lyaml-cpp

файл Yaml

disabled: false
reporter:
    logSpans: true
sampler:
  type: const
  param: 1

ОС: Ubuntu 18.04 jaegerTracing: версия главной ветки

ОБНОВЛЕНИЕ

после небольшого копания я обнаружил некоторый факт: когда я анализирую вышеупомянутый конфигурационный файл, пытаюсь напечатать результат, я получаю то же значение, что и в конфигурации файл, но когда я анализирую тот же файл, используя yaml-cpp-0.6.x, sampler.type показывает «remote» и sampler.param как «0.001», а когда я вручную изменяю это изменение, эти значения становятся такими же, как в config.yaml, он запускается показывая следы. При синтаксическом анализе файла yaml присутствует ошибка, поскольку я ясно вижу, что различные значения загружаются в качестве конфигурации.

...