我正在使用OpenCensus比较不同的跟踪后端。我已经有了使用Zipkin和Azure运行良好的简单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控制台或监视仪表板中看不到任何信息。
我是不是遗漏了什么?
环境注意事项:我正在使用Python3.7.2在本地Windows机器上测试这一点
发布于 2022-01-24 09:13:36
在文档中不太清楚的一点是,默认情况下,跟踪被采样为(参见源文件这里),因此每个调用都被正确地记录下来,但是只存储了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()希望它能解决你的问题!
发布于 2020-07-06 12:42:41
通过遵循OpenCensus步骤,我能够在GCP中(在项目的一个实例中)设置这里提到的。
为了快速设置它,下面是我在一个全新的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.pyhttps://stackoverflow.com/questions/62674846
复制相似问题