问题标签 [jaeger]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-boot - 如何使用 Spring Boot 的应用程序日志(由 slf4j 生成)丰富 Jaeger opentracing 数据?
有一个使用 SLF4J 记录器的现有 Spring Boot 应用程序。我决定opentracing
使用 Jaeger 作为跟踪器,通过标准 API 添加对分布式跟踪的支持。初始设置如此简单真是令人惊讶 - 所需要的只是将两个依赖项添加到pom.xml
:
并为Tracer
bean 提供配置:
所有的工作都像一个魅力 - 应用程序请求由 Jaeger 处理并创建跨度:
但是,在跨度Logs
中,只有preHandle
&afterCompletion
事件包含有关在请求执行期间调用的类/方法的信息(不slf4j
收集记录器生成的日志):
问题是是否可以将 Tracer 配置为拾取应用程序记录器(slf4j
在我的情况下)生成的日志,以便通过://etc. 完成的所有应用程序日志LOG.info
也LOG.warn
将LOG.error
反映在 Jaeger 中
注意:我已经想出了如何通过API手动记录跨度,例如:opentracing
并使用标签对过滤器中的异常处理进行一些手动操作,例如ERROR
但是,我仍然想知道是否可以配置跟踪器来获取应用程序日志automatically
:
LOG.info
-> 跟踪器将新日志添加到活动跨度LOG.error
-> 跟踪器将新日志添加到活动跨度并添加ERROR
标签
更新:我能够通过为记录器添加包装器来将应用程序日志添加到跟踪器,例如
但是,到目前为止,我还没有找到默认情况下允许将应用程序日志自动添加到跟踪器的 opentracing 配置选项。基本上,如果需要,似乎预计开发人员会以编程方式将额外的日志添加到跟踪器。另外,在调查了更多跟踪之后,它似乎是正常的logging
并且tracing
是单独处理的,并且将所有应用程序日志添加到跟踪器不是一个好主意(跟踪器应该主要包括示例数据和用于请求识别的标签)
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
python - OpenTracing Python 请求:传播跨度
我有一个Flask
使用该requests
库的 Python 应用程序。我正在尝试在应用程序中实现 OpenTracing。一个简化的版本是:
由于给予 ,所有端点都被trace_all_requests
跟踪FlaskTracer
。由于from ,对库发出的所有请求都进行了requests
跟踪。install_all_patches()
opentracing_instrumentation
我的'/foo'
端点向'/bar'
. 当我访问'/foo'
端点并查看跟踪时,我可以看到两个单独的跟踪:一个只包含'/foo'
,第二个包含requests
GET 和对 的调用'/bar'
。我本来希望跨度在整个过程中传播,因此我应该看到一个带有'/foo'
-> GET
->的跟踪'/bar'
。
我是否需要手动设置每个我的标题requests
以通过跨度?看起来这正是requests
猴子补丁应该做的......
java - 如何在 Java 中更改 Jaeger API 的主机和端口
我们选择使用 Jaeger API 来进行追踪。在那里,我们已经使用 docker 在本地设置了 Jaeger,如下所述。
在 中ServletContextListener
,我们创建了如下所示的新配置。
现在这工作正常,我可以在http://localhost:16686中看到跟踪
问题: 我想在外部环境中设置 Jager 并从另一个应用程序服务器连接(应用程序服务器在主机模式下的 Wildfly 10 docker 上运行)。将来,该 Jaeger 实例可能会被多个服务器实例用于跟踪。
在查看了下面提到的来源和各种参考资料后,我尝试了以下选项。但它始终连接到本地。我也尝试了各种端口,如 5775、6831、6832,但结果相同。
此外,我还尝试将 JAEGER_ENDPOINT 和 JAEGER_SAMPLER_MANAGER_HOST_PORT 设置为环境变量。但是失败了。
在一个参考文献中,我发现“Jaeger 客户端库期望 jaeger-agent 进程在每个主机上本地运行......”。
这是否意味着我不能以 cebtrelized 方式使用它,我需要在每个应用程序服务器实例中设置 Jaeger?不然怎么办?
opentracing - 如何将 Opentracing 应用程序连接到远程 Jaeger 收集器
我正在使用 Jaeger UI 来显示来自我的应用程序的跟踪。如果两个应用程序和 Jaeger 都在同一台服务器上运行,这对我来说很好。但我需要在不同的服务器上运行我的 Jaeger 收集器。我尝试使用 JAEGER_ENDPOINT、JAEGER_AGENT_HOST 和 JAEGER_AGENT_PORT,但失败了。
我不知道,我对这些变量的值设置是否错误。是否需要在应用程序代码中进行任何配置设置?
您能为我提供有关此问题的任何文档吗?
docker - 如何使用 elasticsearch 配置 Jaeger?
我已经尝试执行这个 docker 命令来使用 elasticsearch 设置 Jaeger Agent 和 jaeger collector。
但是这个命令给出了以下错误。如何使用 ElasticSearch 配置 Jaeger?
security - 如何通过 keycloak 安全代理保护 Jaeger UI(登录)
登录 Keycloak Jaeger(realm) 客户端后,keycloak 服务器不会导航到 Jaeger UI 路径 -> localhost:16686。
似乎 keycloak 验证了用户(见下面的代码)
代理.json
密钥斗篷.json
java - 应用程序无法从 istio 容器向 jaeger 报告
我的java代码:
我的 gradle 依赖项:
此代码适用于本地主机。
我已经将JAEGER_AGENT_HOST
and JAEGER_AGENT_PORT
env 传递给了容器。
我可以在远程看到 Jaeger Initialized 登录:
使用 UDP Sender 将 span 发送到代理。使用发送方 UdpSender(udpTransport=ThriftUdpTransport(socket=java.net.DatagramSocket@27e16046, receiveBuf=null, receiveOffSet=-1, receiveLength=0)) 使用发送方 UdpSender(udpTransport=ThriftUdpTransport(socket=java.net.DatagramSocket@27e16046, receiveBuf=null,receiveOffSet=-1,receiveLength=0)) 2018-08-16 13:24:32.809 信息 1 --- [http-nio-8080-exec-1] io.jaegertracing.Configuration:初始化跟踪器 = JaegerTracer (版本=Java-0.30.4,服务名称=
但我可以在 Jaeger UI 中看到它。
我尝试使用tcpdump
,我找不到 udp 包。
log4j2 - 将 jaeger trace id 和 span id 添加到 log4j2 日志
我想在日志中注入 x-b3-traceid 和 x-b3-spanid,其模式如图所示-
对于 zipkins,有可用的库,例如
勇敢的上下文-log4j2 - ( https://github.com/openzipkin/brave/tree/master/context/log4j2 )
春云侦探。(https://cloud.spring.io/spring-cloud-sleuth/)如何在使用 jaeger 时添加它?