Я пытаюсь оснастить свою программу трассировкой 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 присутствует ошибка, поскольку я ясно вижу, что различные значения загружаются в качестве конфигурации.