gpt4 book ai didi

python - 如何使用 OpenCensus 发送指标

转载 作者:行者123 更新时间:2023-12-04 10:54:40 26 4
gpt4 key购买 nike

我正在尝试使用 OpenCensus 和 Azure Application Insights 在 Python 中发送指标。

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

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

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

  • 发送“Azure 指标”(参见 https://pypi.org/project/opencensus-ext-azure/,然后是“指标”段落):到目前为止,我在 Azure 门户上没有看到任何内容,单击我的应用程序以获取 Application Insights。我通过“搜索”选项卡监视了过去 24 小时。
  • 通过 Azure 实现发送某种“跨度”(参见 https://github.com/census-instrumentation/opencensus-python/tree/master/contrib/opencensus-ext-azure#trace):当我点击“搜索”选项卡检查过去 24 小时,然后我实际上看到了一些代表跨度的事件(按跨度名称),但随后没有附加指标,例如该键/值属性等

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

  • 我想明白:
  • 如何在 OpenCensus 中将任意字典作为“指标”发送?将应用程序用于 Application Insights 时,这将如何显示在 Azure 门户上?
  • 有什么特别之处 print(...) (或 logging.info(...) )和 OpenCensus 中的 HTTP 请求?该信息在 Application Insights 应用程序中的 Azure 门户上应该如何有用?
  • 以上是否与跟踪器/跨度无关,还是在需要发送指标时必须使用跨度?


  • import json
    import psutil

    from opencensus.trace.samplers import AlwaysOnSampler
    from opencensus.trace.tracer import Tracer

    from opencensus.ext.azure import metrics_exporter
    from opencensus.ext.azure.trace_exporter import AzureExporter

    if __name__ == "__main__":
    # loading the instrumentation key (for the Azure Application Insights app) from a JSON file
    azure_conf = json.loads(open("tf/ai_details.json", 'r').read())
    ai_instrumentation_key = azure_conf['instrumentation_key']['value']
    # print(ai_instrumentation_key)

    # test 1: trying to "send a metric", does that mean that the metric exporter listens to "print(...)"?
    _me = metrics_exporter.new_metrics_exporter(connection_string='InstrumentationKey={}'.format(ai_instrumentation_key))
    print(psutil.virtual_memory())
    print("Done recording metrics")

    # test 2: trying to "send a metric", how can I make the "span" to send a dictionary?
    azure_exporter = AzureExporter(connection_string='InstrumentationKey={}'.format(ai_instrumentation_key))
    # https://opencensus.io/api/python/trace/api/tracer.html
    tracer = Tracer(exporter=azure_exporter, sampler=AlwaysOnSampler())
    # https://opencensus.io/api/python/trace/api/span.html#opencensus.trace.span.Span
    with tracer.span(name='TestSpan') as span:
    print('Hello, World!') # is the span only listening to "print(...)"?
    span.add_attribute("foo-span-key", "foo-span-value") # this does not seem to do anything

    最佳答案

    感谢您将 OpenCensus 与 Azure Monitor 结合使用!你可以在网上找到我的答案。

    如何在 OpenCensus 中将任意字典作为“指标”发送?将应用程序用于 Application Insights 时,这将如何显示在 Azure 门户上?

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

    OpenCensus 中的 print(...)(或 logging.info(...))和 HTTP 请求有什么特别之处?该信息在 Application Insights 应用程序中的 Azure 门户上应该如何有用?
    print命令在 OpenCensus 中没有特殊含义。对于日志,如果您使用 OpenCensus Azure Monitor 进行检测并利用 logging exporter,则可以从 Python 标准日志记录库自动发送日志记录遥测数据。 .对于 HTTP 请求,您可以跟踪 incoming requestsoutgoing requests使用跟踪导出器和各种 OpenCensus 库集成,具体取决于您要跟踪遥测的库。

    以上是否与跟踪器/跨度无关,还是在需要发送指标时必须使用跨度?

    跨度是一个仅用于跟踪的概念(使用 AzureExporter)。您不需要创建跨度来发送指标数据(指标导出器)。看看上面的链接,看看如何使用每个链接。

    关于python - 如何使用 OpenCensus 发送指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59290214/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com