Компиляция без "-L / usr / local / lib" дает ошибку "не удается подключиться к сокету" при попытке использовать jaeger openracing в C ++ - PullRequest
0 голосов
/ 02 августа 2020

Я пробую OpenTracing Jaeger и имею следующий файл test.cpp:

#include <opentracing/tracer.h>
#include <jaegertracing/Tracer.h>
#include <yaml-cpp/yaml.h>
#include <iostream>

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

int main(int argc, char* argv[]){
  setUpTracer(argv[1]);
  std::cout<<"Hello\n";
  return 0;
}

И считаю, что config.yml будет:

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

Теперь, если я компилирую test.cpp с помощью g++ test.cpp -lopentracing -ljaegertracing -lyaml-cpp и запуска ./a.out config.yml, я получаю

ERROR: cannot connect to socket: Cannot connect socket to remote address { scheme="http", host="127.0.0.1", port=5778, path="/sampling", query="" }

Хотя, если я компилирую с g++ test.cpp -L /usr/local/lib -lopentracing -ljaegertracing -lyaml-cpp, я получаю хорошее

INFO: Initializing logging reporter
Hello

Содержимое моего /usr/local/lib это:

cmake                               libopentracing.so.1.6.0    libthriftqt.so
libjaegertracing.a                  libthrift-0.11.0.so        libthrift.so
libjaegertracing.so                 libthrift.a                libthriftz-0.11.0.so
libjaegertracing.so.0               libthrift_c_glib.a         libthriftz.a
libjaegertracing.so.0.6.0           libthrift_c_glib.la        libthriftz.la
libopentracing.a                    libthrift_c_glib.so        libthriftz.so
libopentracing_mocktracer.a         libthrift_c_glib.so.0      libyaml-cpp.a
libopentracing_mocktracer.so        libthrift_c_glib.so.0.0.0  pkgconfig
libopentracing_mocktracer.so.1      libthrift.la               python2.7
libopentracing_mocktracer.so.1.6.0  libthriftqt-0.11.0.so      python3.6
libopentracing.so                   libthriftqt.a
libopentracing.so.1                 libthriftqt.la

Я использую Jaeger в сочетании с большим проектом, включающим ROS, и получаю ту же ошибку, даже если я add_compile_options(-L /usr/local/lib) для CMakeLists.txt соответствующего пакета; Итак, я хотел лучше понять, какова точная причина вышеуказанной ошибки, поэтому, надеюсь, это поможет мне исправить ошибку, связанную с ROS.

Спасибо!

1 Ответ

0 голосов
/ 02 августа 2020

Вам не хватает конфигурации адреса Jaeger. Поскольку вы его не предоставили, он пытается подключиться к протоколу по умолчанию, который является протоколом TCP, 127.0.0.1 и портом 5778. Подробные сведения см. В разделе конфигурации здесь .

...