Azure 监视器打开遥测 python 包在 Azure 上部署 python 应用程序时引发异常

问题描述 投票:0回答:1

我有一个使用 Plotly Dash 构建的 Python Web 应用程序,并使用 Python 3.12 部署在 Azure 应用服务上。由于 Azure App Service 尚未启用 Python 3.12 版本来启用应用程序洞察,因此我使用了该包:

azure-monitor-opentelemetry==1.6.2

在我的应用程序中将异常记录到我的应用程序洞察资源中。

但是,当我在 Azure 应用服务上部署 Web 应用程序时,当有人访问该 Web 应用程序时,我的应用程序会在应用程序洞察中记录以下异常:

无法从 Tracer Provider 派生资源:“ProxyTracerProvider”对象没有属性“resource”

Traceback (most recent call last):
  File "/tmp/8dcd22e385c2da5/antenv/lib/python3.12/site-packages/azure/monitor/opentelemetry/exporter/export/trace/_exporter.py", line 91, in export
    resource = tracer_provider.resource # type: ignore

AttributeError:“ProxyTracerProvider”对象没有属性“resource”

我在我的应用程序中实现了 azure-monitor-opentelemetry,如下所示:

appopentelemetry.py:

from azure.monitor.opentelemetry import configure_azure_monitor
from models.environmentmanager.environmentmanager import EnvironmentManager


def azure_monitoring_open_telemetry():
    environment_manager = EnvironmentManager()
    connection_string = environment_manager.get_connection_string() # The app insight connection string 

    return configure_azure_monitor(
        connection_string=connection_string,
        enable_live_metrics=True,
    )

在我的app.py中:

...imports...

environment_manager = EnvironmentManager()

# This should be executed if the environment is not local, this is set in .env if ran locally
# and set in environment variables of the app service on Azure when deployed
if not environment_manager.get_is_local():
    from functions.app.appopentelemetry import azure_monitoring_open_telemetry
    azure_monitoring_open_telemetry()

...

app = Dash(__name__, use_pages=True, external_stylesheets=stylesheets)

...
app.layout = dmc.MantineProvider(...)

if __name__ == '__main__':
    app.run(debug=True, port=8000)

我能知道我做错了什么吗?

python azure azure-web-app-service plotly-dash open-telemetry
1个回答
0
投票

1.6.2版本还将

azure-monitor-opentelemetry-exporter
升级为
"1.0.0b29"
,并进行了制动更改。只需降级至
azure-monitor-opentelemetry-exporter = "1.0.0b28"
,也许降级至
azure-monitor-opentelemetry = "1.6.1"
。暂时可以解决这个问题。

一般来说,我认为配置应该以不同的方式完成,而不是使用configure_azure_monitor,但文档中并不清楚。尝试阅读此处https://opentelemetry.io/docs/languages/python/getting-started/

© www.soinside.com 2019 - 2024. All rights reserved.