来自 Python 应用的 Opencensus Stackdriver 跟踪未出现在 GCP 的跟踪列表中
Posted
技术标签:
【中文标题】来自 Python 应用的 Opencensus Stackdriver 跟踪未出现在 GCP 的跟踪列表中【英文标题】:Opencensus Stackdriver traces from Python app not appearing in the Trace list in 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 机器上测试它
【问题讨论】:
【参考方案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。以上是关于来自 Python 应用的 Opencensus Stackdriver 跟踪未出现在 GCP 的跟踪列表中的主要内容,如果未能解决你的问题,请参考以下文章