Отслеживание сервисов Spring Boot Micro с Jaeger, развернутым на AKS
Я настроил 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 в Kubernetes?
1 ответ
Вы можете включить отладку в клиенте, установив опцию JAEGER_REPORTER_LOG_SPANS
к истине (или используйте соответствующую опцию в 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
, который является местоположением по умолчанию, куда клиент отправляет промежутки. Как правило, агент будет развернут в качестве дополнительной машины в таком сценарии: