停止jaeger收集器是否会停止OpenTracing

时间:2018-06-18 09:19:43

标签: docker opentracing jaeger

当我启用OpenTracing并启动它们时,我有一些运行jaeger-client的应用程序。

首先我使用命令启动Jaeger收集器 - docker run -d -e COLLECTOR_ZIPKIN_HTTP_PORT = 9411 -p 5775:5775 / udp -p 6831:6831 / udp -p 6832:6832 / udp -p 5778:5778 -p 16686:16686 -p 14268:14268 -p 9411:9411 jaegertracing /所有功能于一身的:最新

然后我启动像用户一样的应用程序 start.sh user -apiserver = localhost:9900 -configfile = conf / configuration.json -traceroption enabled = true 以下它们将作为已启用的服务http://localhost:16686/api/services

显示

问题是,如果我杀死运行jaeger收集器的Docker- systemctl停止码头 然后重启docker和jaegertracing / all-in-one,服务不再在http://localhost:16686/api/services

在没有Jaeger收集器的情况下,jaeger客户端是否会自行消亡? Jaeger收集器是否需要在启动Jaeger客户端之前运行? 如果是这样,我如何刷新Jaeger OpenTracing使用的内存,以便我的主机不会耗尽内存?

我无法在https://github.com/jaegertracing/jaeger/blob/master/cmd/query/app/handler.go

的RegisterRoutes方法中找到任何明确的API

1 个答案:

答案 0 :(得分:0)

  

问题是,如果我杀死运行jaeger collector- systemctl的Docker并停止docker,然后重新启动docker and jaegertracing / all-in-one,服务将不再处于http://localhost:16686/api/services

那是因为您正在使用内存存储。如果停止并启动容器,则存储将重置,因此,您将有效地丢失数据。出于生产目的,您应该使用Cassandra或Elasticsearch之类的后备存储。

  

启动Jaeger客户端之前是否需要运行Jaeger收集器?

否,但是当收集器不可用时,客户端报告的跨度可能会丢失。请注意,默认情况下,客户端会将跨度发送到代理,并且不会直接与收集器联系。因此,如果代理不可用,跨度也可能会下降。

  

如何清除Jaeger OpenTracing占用的内存,以使主机不会耗尽内存?

使用配置选项--memory.max-traces。使用此选项,一旦达到此限制,旧的跟踪将被新的覆盖。