Python 应用程序的 Azure Application Insights 日志记录 - 显式设置异常属性

agh*_*osh 3 python azure-application-insights opencensus azure-appservice

我正在尝试将异常从在Azure 应用程序服务中运行的Python 应用程序发送到指定的Azure Application Insights实例。我正在使用OpenCensus python 库来实现此目的。基本日志记录和异常已成功到达 App Insight。

除此之外,我想知道是否有一种方法可以配置异常属性,例如:problemId或任何其他属性显式地反映特定值以便更容易发出警报(例如根据 ProblemId 向特定组发送电子邮件)。

任何建议/指示都会非常有帮助

kri*_*shg 11

您可以使用该字段在额外关键字参数中向日志消息添加自定义属性(不仅是异常,还包括所有其他日志类型,如跟踪、事件等)custom_dimensions。这些属性在 Azure Monitor 中显示为键值对customDimensions。然后您可以根据该信息查询、查看或配置警报。

为了使此功能发挥作用,您需要将字典传递给该custom_dimensions字段。如果您传递任何其他类型的参数,记录器将忽略它们。

注意:OpenCensus Python 不会自动跟踪和发送异常遥测数据。它们通过 Python 日志记录库使用异常通过 AzureLogHandler 发送。您可以像普通日志记录一样添加自定义属性。

import logging

from opencensus.ext.azure.log_exporter import AzureLogHandler

logger = logging.getLogger(__name__)
# TODO: replace the all-zero GUID with your instrumentation key.
logger.addHandler(AzureLogHandler(
    connection_string='InstrumentationKey=00000000-0000-0000-0000-000000000000')
)

properties = {'custom_dimensions': {'key_1': 'value_1', 'key_2': 'value_2'}}

# Use properties in exception logs
try:
    result = 1 / 0  # generate a ZeroDivisionError
except Exception:
    logger.exception('Captured an exception.', extra=properties)
Run Code Online (Sandbox Code Playgroud)

您可以在 Azure 门户中查看 customDimentions,如下所示(只是示例,并非上面代码中的实际尺寸):

![](https://camerondwyer.files.wordpress.com/2020/05/app-insights-kusto-custom-properties-01-trace-event.png?w=1024)

您可以在 Kusto Query 中看到相同的内容,如下所示:

在此输入图像描述

您可以查询这些并基于此配置警报(下图显示traces,对于例外情况,它将是exceptions table):

在此输入图像描述