问题标签 [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.

0 投票
1 回答
1208 浏览

jaeger - 通过 Helm 将开发 Jaeger All-In-One 安装到本地 Kubernetes 集群中

Jaeger 为不使用大量内存的 Jaeger 开发设置提供了一体化配置。说明显示了如何通过以下方式轻松安装它:

但是我使用 Helm 管理我的开发环境。我可以使用此设置的 Helm 图表吗?

0 投票
4 回答
12618 浏览

spring-boot - 如何使用 Spring Boot 的应用程序日志(由 slf4j 生成)丰富 Jaeger opentracing 数据?

有一个使用 SLF4J 记录器的现有 Spring Boot 应用程序。我决定opentracing使用 Jaeger 作为跟踪器,通过标准 API 添加对分布式跟踪的支持。初始设置如此简单真是令人惊讶 - 所需要的只是将两个依赖项添加到pom.xml

并为Tracerbean 提供配置:

所有的工作都像一个魅力 - 应用程序请求由 Jaeger 处理并创建跨度:

在此处输入图像描述

但是,在跨度Logs中,只有preHandle&afterCompletion事件包含有关在请求执行期间调用的类/方法的信息(不slf4j收集记录器生成的日志):

在此处输入图像描述

问题是是否可以将 Tracer 配置为拾取应用程序记录器(slf4j在我的情况下)生成的日志,以便通过://etc. 完成的所有应用程序日志LOG.infoLOG.warnLOG.error反映在 Jaeger 中

注意:我已经想出了如何通过API手动记录跨度,例如:opentracing

并使用标签对过滤器中的异常处理进行一些手动操作,例如ERROR

但是,我仍然想知道是否可以配置跟踪器来获取应用程序日志automatically

  • LOG.info-> 跟踪器将新日志添加到活动跨度
  • LOG.error-> 跟踪器将新日志添加到活动跨度并添加ERROR标签

更新:我能够通过为记录器添加包装器来将应用程序日志添加到跟踪器,例如

但是,到目前为止,我还没有找到默认情况下允许将应用程序日志自动添加到跟踪器的 opentracing 配置选项。基本上,如果需要,似乎预计开发人员会以编程方式将额外的日志添加到跟踪器。另外,在调查了更多跟踪之后,它似乎是正常的logging并且tracing是单独处理的,并且将所有应用程序日志添加到跟踪器不是一个好主意(跟踪器应该主要包括示例数据和用于请求识别的标签)

0 投票
1 回答
741 浏览

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

0 投票
0 回答
470 浏览

python - OpenTracing Python 请求:传播跨度

我有一个Flask使用该requests库的 Python 应用程序。我正在尝试在应用程序中实现 OpenTracing。一个简化的版本是:

由于给予 ,所有端点都被trace_all_requests跟踪FlaskTracer。由于from ,对库发出的所有请求都进行了requests跟踪。install_all_patches()opentracing_instrumentation

我的'/foo'端点向'/bar'. 当我访问'/foo'端点并查看跟踪时,我可以看到两个单独的跟踪:一个只包含'/foo',第二个包含requestsGET 和对 的调用'/bar'。我本来希望跨度在整个过程中传播,因此我应该看到一个带有'/foo'-> GET->的跟踪'/bar'

我是否需要手动设置每个我的标题requests以通过跨度?看起来这正是requests猴子补丁应该做的......

0 投票
2 回答
3132 浏览

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?不然怎么办?

0 投票
1 回答
1281 浏览

opentracing - 如何将 Opentracing 应用程序连接到远程 Jaeger 收集器

我正在使用 Jaeger UI 来显示来自我的应用程序的跟踪。如果两个应用程序和 Jaeger 都在同一台服务器上运行,这对我来说很好。但我需要在不同的服务器上运行我的 Jaeger 收集器。我尝试使用 JAEGER_ENDPOINT、JAEGER_AGENT_HOST 和 JAEGER_AGENT_PORT,但失败了。

我不知道,我对这些变量的值设置是否错误。是否需要在应用程序代码中进行任何配置设置?

您能为我提供有关此问题的任何文档吗?

0 投票
5 回答
10809 浏览

docker - 如何使用 elasticsearch 配置 Jaeger?

我已经尝试执行这个 docker 命令来使用 elasticsearch 设置 Jaeger Agent 和 jaeger collector。

但是这个命令给出了以下错误。如何使用 ElasticSearch 配置 Jaeger?

0 投票
1 回答
772 浏览

security - 如何通过 keycloak 安全代理保护 Jaeger UI(登录)

登录 Keycloak Jaeger(realm) 客户端后,keycloak 服务器不会导航到 Jaeger UI 路径 -> localhost:16686。

似乎 keycloak 验证了用户(见下面的代码)

代理.json

密钥斗篷.json

0 投票
1 回答
372 浏览

java - 应用程序无法从 istio 容器向 jaeger 报告

我的java代码:

我的 gradle 依赖项:

此代码适用于本地主机。

我已经将JAEGER_AGENT_HOSTand JAEGER_AGENT_PORTenv 传递给了容器。

我可以在远程看到 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 包。

0 投票
1 回答
4439 浏览

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 时添加它?