Я добавил функцию открывания в свое веб-приложение и использую образ докера Jaeger all-in-one в качестве сборщика. Я запускаю докер в Windows 10 (hyper-v) и использую java-клиент Jaeger. Когда я тестирую веб-приложение локально на хост-машине, оно успешно отправляет трассировки в экземпляр докера сборщика Jaeger. Однако, когда я запускаю веб-приложение в другом контейнере докеров, в пользовательском интерфейсе Jaeger не регистрируется никаких следов.
Я безуспешно пробовал оба контейнера в одной сети докеров. Веб-приложение в контейнере докеров может без проблем обращаться к другим службам в докерах, например к базе данных и серверу ETCD.
Я думал, что у меня могут быть неправильные порты, но, учитывая тот факт, что он работает в среде хоста, я предполагаю, что они правильные и что это проблема конфигурации докера. Я также установил для переменной среды JAEGER_SAMPLER_TYPE значение const, а для JAEGER_SAMPLER_PARAM - значение 1, чтобы обеспечить регистрацию всех трассировок.
Изменить. Когда я смотрю на показатели, мне кажется, что jaeger получает интервалы. Каждый вызов, который я делаю в приложение, увеличивает этот счет на единицу.
jaeger_spans_received_total{debug="false",format="proto",svc="datastore",transport="grpc"} 35
jaeger_spans_saved_by_svc_total{debug="false",result="ok",svc="datastore"} 35
jaeger_traces_received_total{debug="false",format="proto",sampler_type="const",svc="datastore",transport="grpc"} 35
jaeger_traces_saved_by_svc_total{debug="false",result="ok",sampler_type="const",svc="datastore"} 35
Я также попробовал образец проекта Hotrod, предложенный Юрием Шкуро на подобная проблема у кого-то была. Точно такой же результат, как указано выше. Метрики показывают полученные интервалы, но в пользовательском интерфейсе ничего не отображается. Редактировать 2. Я сузил его до виртуальной машины с Windows 10 Hyper-V.
Любая помощь будет оценена по достоинству.
Спасибо
192.168.0.15 - хост-машина
# deployment of jaeger
docker run --name jaeger-collector -d -p 5775:5775/udp -p 6831:6831/udp -p 6832:6832/udp -p 5778:5778 -p 16686:16686 -p 14268:14268 --network mynetwork jaegertracing/all-in-one:latest
# deployment of app
docker run --add-host etcd-01:192.168.0.15 --name datastore -d -it --rm -p 8030:8080 --network mynetwork datastore:latest
Настройка Jaeger Tracer на Java
private static io.opentracing.Tracer getJaegerTracer() {
Configuration.SamplerConfiguration samplerConfig = Configuration.SamplerConfiguration.fromEnv().withType("const").withParam(1);
Configuration.SenderConfiguration senderConfig = Configuration.SenderConfiguration.fromEnv()
.withAgentHost("192.168.0.15")
.withAgentPort(6831);
Configuration.ReporterConfiguration reporterConfig = Configuration.ReporterConfiguration.fromEnv().withLogSpans(true).withSender(senderConfig);
Configuration config = new Configuration(DatastoreConstants.SERVICE_NAME).withSampler(samplerConfig).withReporter(reporterConfig);
return config.getTracer();
}