Python 访问opencensus exporter发送的自定义指标时出现问题

Python 访问opencensus exporter发送的自定义指标时出现问题,python,flask,google-cloud-run,opencensus,Python,Flask,Google Cloud Run,Opencensus,我想使用opencensus python导出器导出自定义度量,如中所述: 我在Google Cloud Run上部署了一个flask应用程序,它使用了示例中的代码片段。 当我部署服务时,一切似乎都正常(将统计数据导出到project日志指示正确的项目id),然后导出器在任何时候都不会抛出异常。调用mmap.record()方法时也不会出错 但是,我无法从度量资源管理器中检索任何值,也无法使用度量描述符API(搜索任务延迟分布)。监控API在我的项目中被激活,据我所知,没有必要通过API创建度量

我想使用opencensus python导出器导出自定义度量,如中所述:

我在Google Cloud Run上部署了一个flask应用程序,它使用了示例中的代码片段。 当我部署服务时,一切似乎都正常(将统计数据导出到project日志指示正确的项目id),然后导出器在任何时候都不会抛出异常。调用mmap.record()方法时也不会出错

但是,我无法从度量资源管理器中检索任何值,也无法使用度量描述符API(搜索任务延迟分布)。监控API在我的项目中被激活,据我所知,没有必要通过API创建度量,因为导出程序应该自己创建度量

我的问题是:

  • 自定义指标是否与Google云运行部署兼容
  • 是否有办法检查/调试导出器发送的内容
或者更基本地说,有人知道测试会出什么问题吗:-)

谢谢你的帮助


Aurelian

实际上,在gunicorn中使用预加载标志时出现了问题(禁用预加载标志后,它开始工作)。这似乎与gunicorn的工人被叉叉的方式有关。我们找到了一种解决方法,通过在第一次查询时惰性地实例化导出器,使其与preload标志一起工作(我们对这个解决方案并不完全满意,我们很高兴知道是否有其他人有更好的方法,但至少它正在工作)

希望这能帮助面临同样问题的人:-)


Aurelian

实际上,在gunicorn中使用预加载标志时出现了问题(禁用预加载标志后,它开始工作)。这似乎与gunicorn的工人被叉叉的方式有关。我们找到了一种解决方法,通过在第一次查询时惰性地实例化导出器,使其与preload标志一起工作(我们对这个解决方案并不完全满意,我们很高兴知道是否有其他人有更好的方法,但至少它正在工作)

希望这能帮助面临同样问题的人:-)


Aurelian

如果您搜索任何以
custom.googleapis.com/
开头的指标,您是否看到任何结果?是的,有一些,但不是我创建的,它们似乎都与gce_实例有关。如果您的代码上没有收到任何错误日志,这可能与GCP端的摄入时间有关,我建议您在CPU不处理请求时,打开一个或一个云运行将CPU限制为~0。像OC exporters这样的系统倾向于定期在后台上传跟踪范围。在Cloud Run上,您应该处理SIGTERM信号并在导出器上调用Flush(),如果导出器是提供程序,则在容器关闭之前上载跨度。这可能会有所帮助,但我不知道“自定义指标”部分。感谢您的见解。我将GCR中的“最小实例”选项设置为1。据我所知,这确保了至少有一个容器能够正常运行。无论如何,我会尝试调用导出器上的Flush(),以确保,谢谢您提供的信息@Jan Hernandez:是的,我会考虑在问题跟踪器上打开一个问题,谢谢。如果你搜索从定制.GoGoLePase.com/< /Cord>开始的任何度量值,你看到了什么结果吗?是的,有一些,但不是我创建的,它们似乎都与GCEL函数有关。如果你没有收到代码上的任何错误日志,这可能与GCP端的摄取时间有关,我建议您在不处理请求时打开一个或一个云运行将CPU限制为~0。像OC exporters这样的系统倾向于定期在后台上传跟踪范围。在Cloud Run上,您应该处理SIGTERM信号并在导出器上调用Flush(),如果导出器是提供程序,则在容器关闭之前上载跨度。这可能会有所帮助,但我不知道“自定义指标”部分。感谢您的见解。我将GCR中的“最小实例”选项设置为1。据我所知,这确保了至少有一个容器能够正常运行。无论如何,我会尝试调用导出器上的Flush(),以确保,谢谢您提供的信息@Jan Hernandez:是的,我会考虑在问题跟踪器上打开一个问题,谢谢。