问题标签 [opencensus]
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.
go - 如何通过端到端的微服务链跟踪请求?
我在 Go 中使用 OpenCensus 将跟踪数据推送到 Stackdriver 以进行涉及 2 个或更多微服务链的调用,我注意到我得到了许多跟踪,其中包含仅针对某些服务的跨度,而不是整个端到端调用。
目前,我将此归因于并非所有调用都被跟踪(仅某个样本)并且每个服务都决定是否跟踪其当前跨度这一事实。
这是它的工作方式吗?有什么方法可以确保在对跟踪进行采样时,调用链中的所有服务都会这样做?
python - 使用 Python 在 Google Kubernetes Engine 中的 OpenCensus 中出错
我正在将容器部署到包含 Python 应用程序的 GKE,并在尝试使用 OpenCensus 发送跟踪消息时遇到错误:
有趣的部分似乎是这句话:Missing labels: (container_name namespace_name)
.
当我在本地运行完全相同的代码时,我没有收到任何错误,并且确实看到我的跟踪出现在 Stackdriver Metrics Explorer 中,因此问题似乎与在 GKE 中的容器内运行有关。
让 OpenCensus 在 GKE 容器中工作需要什么特定的东西吗?
opencensus - 如何调试 opencensus 指标代理?
我很难调试为什么我的指标没有达到我的普罗米修斯。我正在尝试将简单的指标发送到 oc 代理,然后使用 prometheus 拉取它们,但是我的代码没有失败,而且我在 prometheus 中看不到指标。那么,我该如何调试呢?我可以查看指标是否到达 oc 代理?
protocol-buffers - io.grpc.StatusRuntimeException:未实现:未知服务 opencensus.proto.agent.metrics.v1.MetricsService
我正在尝试配置 opencensus 以将统计信息导出到 opencensus 代理。
这是我配置导出器的地方:
这是我的 oc 代理配置文件:
但我收到以下异常:
stackdriver - GKE 上的 Stackdriver Trace 与 Python 应用在一个集合中聚合指标
我正在 GKE 上准备一个演示,其中包含一个用 python 编写的简单服务器应用程序,该应用程序从 Envoy 代理获取请求,并增加了一些延迟。
我想使用 Stackdriver Trace 来显示每个 Envoy 代理和应用程序应用的延迟,但我得到的视觉效果并没有那么吸引人。
因此,有这个 Envoy 代理将请求代理到 3 个不同的应用程序,称为蓝色、绿色和红色。它们中的每一个都有一个 Envoy 代理,它增加了一个延迟并将请求发送到 Python 服务器,该服务器返回一个简单的“Hello ...”。
我向前端服务发送了 1000 个请求,前端服务将这些请求随机转发到 3 个应用程序。现在,当我转到 Stackdriver Trace 控制台时,我看到的是:
当我点击它们中的每一个(比如绿色)时,我可以看到在绿色下累积的所有请求,以及响应每个请求所花费的时间:
所以,所有这些似乎都很好,但从演示的角度来看,展示这个仪表板并没有那么吸引人。如果我只发送很少的请求,它有时不会收集,并且跟踪永远不会显示在仪表板上。我想知道是否有办法将这些请求分解为 1。所以我将有一个与此类似的仪表板(来自 Stackdriver 示例):
...每个请求似乎是 1 个点,我只需单击它即可获取信息。
同样,我的演示是使用 Python 进行的,并且是 Alpha 版。
go - 处理 Jaeger 错误
我打算Jaeger
在我的Golang
服务器上使用跟踪。一切都很好,但我还没有找到处理Jaeger
错误的方法。例如,我想Jaeger
在发送跟踪时捕获到后端的连接错误并将其写入loggly
.
代码示例:
python - Stackdriver Strace 使用 python 为一个请求嵌入跟踪
我正在使用 Stackdriver Trace 监控一些微服务的延迟,但是在将所有往返行程显示为一个请求时遇到了一些问题。
假设我有两个服务(为了简单起见)。为了从它们中获取跟踪,我需要在这两个服务中安装客户端库。现在在我做的第一个服务中说:
在我的第二次服务中,我会:
第二个服务对数据库进行查询,对结果进行 gts,然后将它们发送到第一个服务,该服务显示内容。
现在,当然我必须开始计算两个微服务的延迟,因为我想知道从第一个服务到第二个服务需要多长时间。而且我还必须开始计算第二个服务,因为我想知道从数据库中检索内容需要多长时间。
但是当我在 GCP 控制台上获得跟踪时,我看到了这个:
第一个跟踪来自数据库,第二个跟踪都是(从第一个服务到第二个 + 数据库)。
我想知道如何将第二个跟踪嵌入到 python 的第一个跟踪中。我一直在检查opencensus
python 的文档,我发现了这个:
类 opencensus.trace.span.Span(name, parent_span=None,...)
跨度是形成跟踪树节点的单个定时事件。每个跨度都有其名称、跨度 ID 和父 ID。父 id 指示单个分布式跟踪中各个跨度之间的因果关系。没有父 ID 的 Span 称为根 Span。与特定跟踪关联的所有跨度也共享一个公共跟踪 ID。跨度不需要是连续的,两个跨度之间可以有间隙。
所以,我想,我必须将span_id
第一个请求的请求连同请求一起发送到第二个微服务?这里还有一个问题,这似乎需要用这些参数初始化跟踪器,但是我在第二个微服务上的跟踪器已经初始化了。发送请求时我无法初始化它,因为它已经无法正确计算延迟。
我需要问这个,因为要进行测试,我必须创建图像,将其上传到 docker hub,然后在 k8s 上进行测试。在这里盲目地做太多的工作。
Stackdriver 跟踪的 Python 客户端库处于 alpha 阶段,因此在 GCP 站点上也没有太多关于此的文档。
编辑
由于没有响应,我实际上尝试传递span_context
信息,即:
...初始化时到第二个微服务,但它不起作用。当它开始计算第二个微服务上的跟踪时,它会自动生成新的trace_id
并span_id
忽略span_context
第一个微服务。在这一点上,我没有想法。
编辑2
我想要的是整个跟踪(微服务 1 -> 微服务 2 -> 数据库)出现在同一跟踪下,具有不同的跨度。与此类似的东西:
.net-core - 如何使用 Steeltoe Actuator + opencensus + Prometheus 使用指标
我们正在使用微服务架构实现企业级应用程序。为了实现它,正在使用.net core 和 JAVA,并使用关键的 steeltoe 框架来实现 .net 的微服务功能和 JAVA 的 sprint boot。现在我们正在生产准备好并需要在生产环境中捕获指标。我们计划使用执行器框架和 Prometheus + graffana 仪表板。通过执行器框架可以很容易地实现指标监控。如果我们想使用 steeltoe 实现相同的功能,我们必须使用 opencensus 将指标导出到 Prometheus。我的问题是 - 是否有 .net 核心支持通过 steeltoe 将指标从 opencensus 导出到 Prometheus 的示例。
提前致谢,
jenkins - Opencenus 阻止我的 java 进程退出
我在我的组件中使用 opencensus,我正在使用由 Jenkins 启动的 JMeter 运行性能测试,但该过程永远不会结束,我发现它是 opencenus 让它保持活动状态(因为如果我删除 opencenus,进程会正常完成/死亡) .
我可以在 opencenus、Jenkins 或 JMeter 中做些什么来强制完成这项工作吗?根据詹金斯不收集结果,中止工作也无济于事。
python - 如何使用 OpenCensus 发送指标
我正在尝试使用 OpenCensus 和 Azure Application Insights 在 Python 中发送指标。
理想情况下,我想发送一些具有任意结构的 Python 字典,但是 OpenCensus 似乎“自动侦听日志记录/打印语句”,但是当我搜索这些内容时,我在 Azure 门户上没有看到任何证据。
OpenCensusprint(...)
有什么特别之处吗?这如何捕获打印语句的内容?
我尝试了 2 种不同的方法(代码见下文):
- 发送“Azure 指标”(请参阅 https://pypi.org/project/opencensus-ext-azure/,然后是“指标”段落):到目前为止,我在 Azure 门户上没有看到任何内容,请单击我的应用程序应用洞察。我通过“搜索”选项卡监控了过去 24 小时。
- 通过 Azure 实现发送某种“跨度”(参见https://github.com/census-instrumentation/opencensus-python/tree/master/contrib/opencensus-ext-azure#trace):当我点击“搜索”选项卡检查过去 24 小时,然后我实际上看到那里的一些事件代表跨度(按跨度名称),但没有附加指标,例如键/值属性等。
AFAIK作为原则:
- 应该有一个“跟踪器”来管理“跨度”
- 可以有父/子跟踪器/跨度
- 每个跨度都应该允许向“收集器”发送一些指标(HTTP 内容、任意字典/JSON 等)
- 应该有一个仪表板(例如 Azure Application Insights),它应该在时间线上显示这些父/子跨度以及附加的指标/消息
我想了解:
- 如何在 OpenCensus 中将任意字典作为“指标”发送?将应用程序用于 Application Insights 时,这将如何显示在 Azure 门户上?
print(...)
OpenCensus 中的(或logging.info(...)
)和 HTTP 请求有什么特别之处?这些信息应该如何在 Application Insights 应用程序中的 Azure 门户上有用?- 以上内容是否与跟踪器/跨度无关,或者在需要发送度量时必须使用跨度?