停止 jaeger collector 是否停止 OpenTracing

Does stopping jaeger collector stop OpenTracing

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

首先我使用命令启动 Jaeger 收集器- docker 运行 -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/all-in-one:最新

然后我启动应用程序,例如用户- start.sh user -apiserver=localhost:9900 -configfile=conf/configuration.json -traceroption enabled=true 之后它们作为启用服务变得可见 http://localhost:16686/api/services

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

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

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

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

The problem is that if I kill the Docker running the jaeger collector- systemctl stop docker and later restart docker and jaegertracing/all-in-one, the services are no longer up at http://localhost:16686/api/services

那是因为您使用的是内存存储。如果您停止并启动容器,存储将被重置,因此,您实际上会丢失数据。出于生产目的,您应该使用 Cassandra 或 Elasticsearch 等后备存储。

Does the Jaeger collector needs to be running before starting the Jaeger clients?

否,但当收集器不可用时客户端报告的 span 可能会被丢弃。请注意,客户端默认会将跨度发送给代理,并且不会直接联系收集器。因此,如果代理不可用,跨度也可能会被删除。

how can I flush the memory used by Jaeger OpenTracing so that my host doesn't run out of memory?

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