【问题标题】:Opencensus Stackdriver traces from Python app not appearing in the Trace list in GCP来自 Python 应用的 Opencensus Stackdriver 跟踪未出现在 GCP 的跟踪列表中
【发布时间】:2020-10-21 18:48:42
【问题描述】:

我正在使用 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 文件的密钥文件路径。

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

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

我错过了什么吗?

环境说明: 我正在使用 Python 3.7.2 从我的本地 Windows 机器上测试它

【问题讨论】:

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


    【解决方案1】:

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

    如果要记录所有跟踪,可以使用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()
    

    希望它能解决您的问题!

    【讨论】:

      【解决方案2】:

      按照mentioned here 的步骤,我能够在 GCP 中(在项目的一个实例中)设置 OpenCensus。

      为了快速设置,这里是我在一个全新的 Ubuntu 实例中运行的命令

      sudo apt-get install python3
      sudo apt install python3-pip
      wget https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/opencensus/requirements.txt
      pip3 install -r requirements.txt
      wget https://raw.githubusercontent.com/GoogleCloudPlatform/python-docs-samples/master/opencensus/metrics_quickstart.py
      python3 metrics_quickstart.py
      

      【讨论】:

      • 谢谢,我可以运行你的命令,它会在 GCP 中显示指标(至少表明我的服务帐户是正确的),但我仍然看不到痕迹
      • 您可以尝试按照here 中描述的步骤进行操作。如果这不起作用,我建议您创建一个案例here
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 2019-02-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      相关资源
      最近更新 更多