Отслеживание сервисов Spring Boot Micro с Jaeger, развернутым на AKS - PullRequest
0 голосов
/ 06 ноября 2018

Я настроил Jaeger в Azure Kubernetes Cluster в пространстве имен мониторинга, и я развернул свой контейнер, который оснащен клиентскими библиотеками jaeger в домене мониторинга. Служба запущена и работает, и я могу видеть следы с помощью исполнительного механизма, когда я указываю: / исполнительный механизм в браузере. Но тот же микросервис не заполняется в раскрывающемся списке служб в пользовательском интерфейсе Jaeger.

Ниже приведены файлы, которые я использую.

DemoOpentracingApplication.java

        @SpringBootApplication
        public class DemoOpentracingApplication {
            @Bean
            public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {

                return restTemplateBuilder.build();
            }

            @Bean
            public io.opentracing.Tracer jaegerTracer() {
                return new Configuration("spribng-boot", new Configuration.SamplerConfiguration(ProbabilisticSampler.TYPE, 1),
                        new Configuration.ReporterConfiguration()).getTracer();
            }

            public static void main(String[] args) {
                SpringApplication.run(DemoOpentracingApplication.class, args);
            }
        }


    HelloController.java

    @RestController
    public class HelloController {

        @Autowired
        private RestTemplate restTemplate;


        //private final Counter totalRequests= Counter.build().name("requests_total").help("Total Number of Requests").register();

        @Timed(
                value= "prometheus.hello.request",
                histogram=true,
                percentiles= {0.95,0.99},
                extraTags= {"version","1.0"}
                )
        @RequestMapping("/hello")
        public String hello() {

            return ("Hello From OPenTracing Controller");
        }

        @Timed(
                value= "prometheus.chain.request",
                histogram=true,
                percentiles= {0.95,0.99},
                extraTags= {"version","1.0"}
                )
        @RequestMapping("/chaining")
        public String chaining() {
            ResponseEntity<String> response = restTemplate.getForEntity("http://localhost:8080/hello",String.class);
            return "Chaining+" + response.getBody();
        }
    }


POM.xml
.....
<dependency>
            <groupId>io.opentracing.contrib</groupId>
            <artifactId>opentracing-spring-web-autoconfigure</artifactId>
            <version>0.0.4</version>
        </dependency>
....

Почему инструментальная служба не заполняется в Jaeger UI в Кубернетесе?

1 Ответ

0 голосов
/ 21 ноября 2018

Вы можете включить отладку в клиенте, установив для параметра JAEGER_REPORTER_LOG_SPANS значение true (или использовать связанный параметр в ReporterConfiguration, как кажется, именно так вы его используете).

https://www.jaegertracing.io/docs/1.8/client-features/

После того, как вы подтвердите, что трассировки генерируются и отправляются агенту, установите уровень журнала в агенте на debug:

docker run -p... jaegertracing/jaeger-agent:1.8 --log-level=debug

Если вы не видите в журналах ничего, указывающего на то, что агент получил промежуток (или серию промежутков), то вам может потребоваться настроить клиент с адресом Агента (JAEGER_AGENT_HOST и JAEGER_AGENT_PORT, или связанным с ним). опции в объекте Configuration).

Вы упомянули, что развертываете в Azure AKS, поэтому, я думаю, что агент недоступен в localhost, который является местоположением по умолчанию, куда клиент отправляет промежутки. Как правило, агент будет развернут в качестве дополнительной машины в таком сценарии:

https://github.com/jaegertracing/jaeger-kubernetes#deploying-the-agent-as-sidecar

...