python-3.x - 来自 Python 应用程序的 Opencensus Stackdriver 跟踪未出现在 GCP 的跟踪列表中

标签 python-3.x stackdriver google-cloud-stackdriver opencensus

我正在使用 OpenCensus 比较不同的跟踪后端。 我已经有了使用 Zipkin 和 Azure Monitor 运行良好的简单 OpenCensus.io python 示例。

现在我正在尝试使用 GCP 的 Stackdriver 进行测试...

我已经设置了来自 Opencensus 的测试代码 https://opencensus.io/exporters/supported-exporters/python/stackdriver/如下:

#!/usr/bin/env python

import os

from opencensus.common.transports.async_ import AsyncTransport
from opencensus.ext.stackdriver.trace_exporter import StackdriverExporter
from opencensus.trace.tracer import Tracer

def main():
    sde = StackdriverExporter(
        project_id=os.environ.get("GCP_PROJECT_ID"),
        transport=AsyncTransport)

    tracer = Tracer(exporter=sde)
    with tracer.span(name="doingWork") as span:
        for i in range(10):
            pass

if __name__ == "__main__":
    main()

我已经为 GCP_PROJECT_ID 设置了环境变量,还在 GOOGLE_APPLICATION_CREDENTIALS 中设置了我的服务帐户 JSON 文件的 key 文件路径。

服务帐户具有“云跟踪代理”角色。

我的代码运行没有错误,但我在 GCP 控制台的跟踪下或监控仪表板中看不到任何信息。

我错过了什么吗?

环境说明: 我正在使用 Python 3.7.2 在我的本地 Windows 机器上对此进行测试

最佳答案

文档中不是很清楚的一件事是,默认情况下,traces 被采样(参见源文件 here ),所以每个调用都被正确记录,但只有 1e-4 trace被储存了。它有助于降低成本,但它是调试过程中的主要痛点。

如果你想记录所有的痕迹,你可以使用AlwaysOnSampler并将其传递给跟踪器:

import os

from opencensus.common.transports.async_ import AsyncTransport
from opencensus.ext.stackdriver.trace_exporter import StackdriverExporter
from opencensus.trace.tracer import Tracer
from opencensus.trace.samplers import AlwaysOnSampler

def main():
    sde = StackdriverExporter(
        project_id=os.environ.get("GCP_PROJECT_ID"),
        transport=AsyncTransport)

    tracer = Tracer(exporter=sde, sampler=AlwaysOnSampler())
    with tracer.span(name="doingWork") as span:
        for i in range(10):
            pass

if __name__ == "__main__":
    main()

希望它能解决您的问题!

关于python-3.x - 来自 Python 应用程序的 Opencensus Stackdriver 跟踪未出现在 GCP 的跟踪列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62674846/

相关文章:

python - ROT(n) 编码器和解码器,但解码器不工作

python - 如何让我的 discord 机器人在加入语音 channel 时立即播放音频文件,例如 airhorn solutions 机器人?

java - 如何使用 Http 而不是默认的 gRPC 进行 Google 监控 API

google-cloud-platform - 我可以使用 API 获取 Stackdriver 策略事件吗?

stackdriver - 使用 Stackdriver 监控 Cloud Build 错误并发出警报

python - 如何在Python中忽略空格读取下一个整数?

python - 在循环中运行参数化的 pytests

kubernetes - 是否可以使用 StackDriver 随时间监控 Kubernetes 集群中的 pod-replica 数量?

istio - 使用 Traffic Director 创建的负载均衡器缺少 Stackdriver 指标

kubernetes - 使用 Google Container Engine (GKE) 和 Stackdriver 监控和提醒 Pod 状态或重启