Python 如何使用OpenCensus发送度量

Python 如何使用OpenCensus发送度量,python,azure-application-insights,azure-log-analytics,opencensus,Python,Azure Application Insights,Azure Log Analytics,Opencensus,我正在尝试使用OpenCensus和Azure应用程序洞察发送Python中的度量 理想情况下,我希望发送一些具有任意结构的Python词典,但是OpenCensus似乎“自动侦听日志记录/打印语句”,但当我搜索这些内容时,在Azure门户上看不到这方面的证据 print(…)对OpenCensus有什么特别之处吗?如何捕获打印语句的内容 我尝试了两种不同的方法(代码见下文): 发送“Azure指标”(请参阅,然后是“指标”一段):到目前为止,我在Azure门户上没有看到任何内容,单击我的应用

我正在尝试使用OpenCensus和Azure应用程序洞察发送Python中的度量

理想情况下,我希望发送一些具有任意结构的Python词典,但是OpenCensus似乎“自动侦听日志记录/打印语句”,但当我搜索这些内容时,在Azure门户上看不到这方面的证据

print(…)
对OpenCensus有什么特别之处吗?如何捕获打印语句的内容

我尝试了两种不同的方法(代码见下文):

  • 发送“Azure指标”(请参阅,然后是“指标”一段):到目前为止,我在Azure门户上没有看到任何内容,单击我的应用程序以获取应用程序见解。我已经通过“搜索”选项卡监控了过去24小时
  • 通过Azure实现发送某种类型的“跨度”(请参阅):当我单击“搜索”选项卡检查过去24小时时,我实际上看到一些事件在其中表示跨度(按跨度名称),但没有附加任何度量,例如键/值属性等
AFAIK作为一项原则:

  • 应该有一个管理“跨度”的“跟踪者”
  • 可以有父/子跟踪器/跨距
  • 每个跨度应允许向“收集器”发送一些度量(HTTP内容、任意字典/JSON等)
  • 应该有一个仪表板(例如Azure Application Insights),该仪表板应在时间线上显示这些父级/子级跨度以及附加的指标/消息
我想了解:

  • 如何在OpenCensus中将任意字典作为“指标”发送?当使用应用程序进行应用程序洞察时,这将如何在Azure门户上显示
  • OpenCensus中的打印(…)(或
    logging.info(…)
    )和HTTP请求有什么特别之处?这些信息在应用程序洞察的Azure门户上应该如何有用
  • 上述内容对跟踪器/跨度不知何故是不可知的,还是跨度在需要发送度量时是必须的

导入json
导入psutil
从opencensus.trace.samplers导入AlwaysOnSampler
从opencensus.trace.tracer导入跟踪程序
从opencensus.ext.azure导入度量值\u导出器
从opencensus.ext.azure.trace\u导出器导入AzureExporter
如果名称=“\uuuuu main\uuuuuuuu”:
#从JSON文件加载检测密钥(针对Azure Application Insights应用程序)
azure_conf=json.load(打开(“tf/ai_details.json”,“r”).read())
ai_instrumentation_key=azure_conf['instrumentation_key']['value']
#打印(ai_仪表键)
#测试1:尝试“发送度量”,这是否意味着度量导出器侦听“print(…)”?
_me=metrics\u exporter.new\u metrics\u exporter(connection\u string='InstrumentationKey={}.format(ai\u instrumentation\u key))
打印(psutil.virtual_memory())
打印(“完成记录指标”)
#测试2:尝试“发送一个度量”,如何使“跨度”发送字典?
azure_exporter=AzureExporter(连接字符串='InstrumentationKey={}'。格式(ai_instrumentation_key))
# https://opencensus.io/api/python/trace/api/tracer.html
tracer=tracer(exporter=azure\u exporter,sampler=AlwaysOnSampler())
# https://opencensus.io/api/python/trace/api/span.html#opencensus.trace.span.Span
tracer.span(name='TestSpan')作为span:
print(“你好,世界!”)#span是否只听“print(…)”?
添加属性(“foo span key”、“foo span value”)#这似乎没有任何作用

感谢您将OpenCensus与Azure Monitor一起使用!你可以在线找到我的答案

如何在OpenCensus中将任意字典作为“指标”发送?当使用应用程序进行应用程序洞察时,这将如何显示在Azure门户上?

你说的任意词典是什么意思?在您的代码片段中,您似乎希望将单个数据点作为度量数据发送到Azure Monitor后端(Application Insights)。有关如何开始使用OpenCensus的步骤,请查看Microsoft网站上的页面。这将向您展示如何使用OpenCensus正确地检测应用程序,以及如何将遥测数据发送到Azure Monitor。如果您仍然对如何指导您的应用程序以满足您的业务用例感到困惑,那么下面是一些您可以了解的内容

OpenCensus中的print(…)(或logging.info(…)和HTTP请求有什么特别之处?这些信息在应用程序洞察的Azure门户上应该如何有用?

print
命令在OpenCensus中没有特殊含义。对于日志,如果您使用OpenCensus Azure Monitor并使用,则可以从Python标准日志库自动发送日志遥测。对于HTTP请求,您可以跟踪并使用跟踪导出器和各种OpenCensus库集成,具体取决于您要跟踪遥测的库

以上内容对跟踪器/跨度不知何故是不可知的,还是在需要发送度量时必须使用跨度?

跨度是一个仅用于跟踪的概念(使用AzureExporter)。发送度量数据时不需要创建跨距(度量导出器)。请查看以上链接,了解如何使用这些链接中的每一个