docker - 停止 jaeger 收集器是否会停止 OpenTracing
问题描述
当我启用 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/all-in-one: 最新
然后我启动像 user-start.sh user -apiserver=localhost:9900 -configfile=conf/configuration.json -traceroption enabled=true 这样的应用程序,然后它们作为启用的服务可见http://localhost:16686/api/services
问题是,如果我杀死运行 jaeger 收集器的 Docker-systemctl stop docker,然后重新启动 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
解决方案
问题是,如果我杀死运行 jaeger 收集器的 Docker-systemctl stop docker,然后重新启动 docker 和 jaegertracing/all-in-one,则服务不再位于http://localhost:16686/api/services
那是因为您正在使用内存存储。如果您停止并启动容器,则会重置存储,因此,您实际上会丢失数据。出于生产目的,您应该使用像 Cassandra 或 Elasticsearch 这样的后备存储。
Jaeger 收集器是否需要在启动 Jaeger 客户端之前运行?
不,但是当收集器不可用时客户端报告的跨度可能会被丢弃。请注意,默认情况下,客户端将向代理发送跨度,并且不会直接联系收集器。因此,如果代理不可用,跨度也可能会被丢弃。
如何刷新 Jaeger OpenTracing 使用的内存,以免我的主机内存不足?
使用配置选项--memory.max-traces
。使用此选项,一旦达到此限制,旧迹线将被新迹线覆盖。
推荐阅读
- javascript - 在ajax请求中将多个图像上传到服务器
- muipickersutilsprovider - Material-UI 选择器 onMonthChange 当前月份
- snmp - 如何破译 SNMP 数据包?
- c# - 返回后asp.net处理程序的超时设置
- ios - 今日扩展仅在使用深层链接打开应用程序并通过将应用程序放入 BG 后返回小部件后才更新
- python - 动态创建自定义聚合以与 Pandas groupby 一起使用
- html - 如何在 Angular 指令中附加兄弟姐妹?
- sql - Laravel 中用户、员工和管理员之间的关系
- django - 我想列出抽象类 Product 及其类别(智能手机、电视)等中的所有元素
- python - Python SSH重启并重启python脚本