Microsoft Azure Monitor Opentelemetry Distro Python客户端库
项目描述
Azure Monitor Opentelemetry Distro Python客户端库
Azure Monitor版的Opentelemetry Python是一个“一站式”遥测解决方案,只需一行代码即可对你的应用程序进行性能监控。该版本通过OpenTelemetry性能监控捕获遥测数据,并通过Azure Monitor性能监控导出器将遥测数据发送到Azure Monitor。
在使用此SDK之前,请阅读并理解数据收集基础,特别是关于遥测类型的部分。OpenTelemetry术语与应用洞察术语不同,因此理解遥测类型如何映射彼此是很重要的。
此版本自动安装以下库
- Azure Monitor OpenTelemetry导出器
- 以下列出的官方支持的OpenTelemetry性能监控子集。
官方支持的性能监控
OpenTelemetry性能监控允许自动收集从底层性能监控库发送的请求。以下是在Azure Monitor版本中捆绑的OpenTelemetry性能监控列表。默认情况下,这些性能监控已启用。有关如何取消这些性能监控的启用,请参阅下面的使用部分。
如果您想添加对其他OpenTelemetry性能监控的支持,请提交一个功能请求。在此期间,您可以通过自己的API(即instrument()
)在代码中手动使用OpenTelemetry性能监控。请参阅此示例。
关键概念
此软件包捆绑了一系列OpenTelemetry和Azure Monitor组件,以实现将遥测数据收集并发送到Azure Monitor。对于MANUAL性能监控,请使用configure_azure_monitor
函数。目前尚不支持AUTOMATIC性能监控。
Azure Monitor OpenTelemetry导出器是完成此任务的主要组件。您可以通过此软件包直接使用导出器和它们的API。请参阅导出器文档,了解OpenTelemetry和Azure Monitor组件如何协同工作以启用遥测数据的收集和导出。
目前,OpenTelemetry中所有可用的性能监控都处于beta状态,这意味着它们并不稳定,未来可能会有破坏性的更改。正在努力将这些性能监控推向更稳定的状态。
入门
先决条件
要使用此软件包,您必须具备
- Azure订阅 - 创建免费账户
- Azure Monitor - 如何使用应用洞察
- Opentelemetry SDK - Opentelemetry SDK for Python
- Python 3.8或更高版本 - 安装Python
安装软件包
使用pip安装Azure Monitor OpenTelemetry版本
pip install azure-monitor-opentelemetry
使用
您可以使用 configure_azure_monitor
为您的应用程序设置 Azure Monitor 的监控。 configure_azure_monitor
支持以下可选参数。所有传入参数的优先级高于任何相关环境变量。
参数 | 描述 | 环境变量 |
---|---|---|
connection_string |
您的 Application Insights 资源的连接字符串。如果未明确传递,连接字符串将自动从 APPLICATIONINSIGHTS_CONNECTION_STRING 环境变量中获取。 |
APPLICATIONINSIGHTS_CONNECTION_STRING |
enable_live_metrics |
启用 实时指标 功能。默认值为 False 。 |
N/A |
logger_name |
收集遥测信息的 Python 日志记录器 的名称。 | N/A |
instrumentation_options |
一个嵌套字典,用于确定要启用或禁用哪些监控。监控通过其 库名称 来引用。例如,{"azure_sdk": {"enabled": False}, "flask": {"enabled": False}, "django": {"enabled": True}} 将禁用 Azure 核心跟踪和 Flask 监控,但保留 Django 和其他默认监控启用。下面解释的 OTEL_PYTHON_DISABLED_INSTRUMENTATIONS 环境变量也可以用来禁用监控。 |
N/A |
resource |
指定与您的应用程序关联的 OpenTelemetry 资源。传入的 资源属性 优先于默认属性和来自 资源检测器 的属性。 | OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES, OTEL_EXPERIMENTAL_RESOURCE_DETECTORS |
span_processors |
一个 跨度处理器 列表,将在导出之前对每个跨度进行处理。这对于过滤/修改遥测很有用。 | N/A |
views |
一个 视图 列表,将用于自定义由 SDK 导出的指标。 | N/A |
您还可以使用 OpenTelemetry 环境变量 进行进一步配置。
环境变量 | 描述 |
---|---|
OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES | 指定与您的应用程序关联的 OpenTelemetry 资源。 |
OTEL_LOGS_EXPORTER |
如果设置为 None ,将禁用日志遥测的收集和导出。 |
OTEL_METRICS_EXPORTER |
如果设置为 None ,将禁用指标遥测的收集和导出。 |
OTEL_TRACES_EXPORTER |
如果设置为 None ,将禁用分布式跟踪遥测的收集和导出。 |
OTEL_BLRP_SCHEDULE_DELAY |
指定日志导出间隔(以毫秒为单位)。默认值为 5000。 |
OTEL_BSP_SCHEDULE_DELAY |
指定分布式跟踪导出间隔(以毫秒为单位)。默认值为 5000。 |
OTEL_TRACES_SAMPLER_ARG |
指定要采样的分布式跟踪遥测比率。采样的接受值在[0,1]范围内。默认为1.0,表示不采样遥测。 |
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS |
指定要禁用哪些支持的 instrumentation。禁用的 instrumentation 不会作为 configure_azure_monitor 的一部分进行 instrumentation。但是,它们仍然可以通过 instrument() 直接手动 instrumentation。接受用逗号分隔的列表,列表中的项为小写 库名称。例如,设置为 "psycopg2,fastapi" 以禁用 Psycopg2 和 FastAPI 的 instrumentation。默认为空列表,启用所有支持的 instrumentation。 |
OTEL_EXPERIMENTAL_RESOURCE_DETECTORS |
一个用于指定生成资源属性的 Resource Detectors 的实验性 OpenTelemetry 环境变量。这是一个实验性功能,该变量的名称及其行为可能以不兼容的方式更改。默认为 "azure_app_service,azure_vm",以启用 Azure App Service 和 Azure VM 的 Azure Resource Detectors。要添加或删除特定的资源探测器,请相应地设置环境变量。有关更多信息,请参阅OpenTelemetry Python 资源探测器文档。 |
Azure 监控 OpenTelemetry 导出器配置
您可以直接将 Azure 监控 OpenTelemetry 导出器配置参数传递给 configure_azure_monitor
。有关更多导出配置相关信息。
...
configure_azure_monitor(
connection_string="<your-connection-string>",
disable_offline_storage=True,
)
...
示例
示例在此处可用,以展示如何使用上述配置选项。
Azure Functions 中的监控
跟踪关联
追踪进入您在 Azure Functions 中托管的 Python 应用程序中的传入请求将不会自动与内部跟踪的遥测关联。您可以通过以下方式手动实现跟踪关联:直接提取 TraceContext
,如下所示
import azure.functions as func
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from opentelemetry.propagate import extract
# Configure Azure monitor collection telemetry pipeline
configure_azure_monitor()
def main(req: func.HttpRequest, context) -> func.HttpResponse:
...
# Store current TraceContext in dictionary format
carrier = {
"traceparent": context.trace_context.Traceparent,
"tracestate": context.trace_context.Tracestate,
}
tracer = trace.get_tracer(__name__)
# Start a span using the current context
with tracer.start_as_current_span(
"http_trigger_span",
context=extract(carrier),
):
...
记录问题
Azure Functions 工作进程本身会发送遥测,而无需使用 azure 监控 SDK(调用 configure_azure_monitor()
)。这可能导致在发送记录遥测时出现重复的遥测条目。我们向客户推荐仅使用 SDK,因为它将允许比使用 Azure Functions 工作进程提供的内置遥测更丰富遥测和功能。您可以通过清除您的记录器处理程序列表来关闭 Azure Functions 遥测记录器。
...
root_logger = logging.getLogger()
for handler in root_logger.handlers[:]:
root_logger.removeHandler(handler)
...
请确保在设置任何记录器或调用 configure_azure_monitor()
之前调用以上操作。
您还可以通过Azure Functions 配置禁用记录。
v2.x+
...
{
"logging": {
...
"logLevel": {
"default": "None",
...
}
}
}
...
v1.x
...
{
"logger": {
"categoryFilter": {
"defaultLevel": "None",
...
}
}
}
...
故障排除
导出器抛出在 Azure Core 中定义的异常。
下一步
查看文档以获取更多信息。
贡献
本项目欢迎贡献和建议。大多数贡献需要您同意一份贡献者许可协议(CLA),声明您有权并且确实授予我们使用您贡献的权利。有关详细信息,请访问https://cla.microsoft.com。
提交拉取请求时,CLA-bot 将自动确定您是否需要提供 CLA 并相应地装饰 PR(例如,标签、注释)。只需遵循机器人提供的说明即可。您可能只需要在所有使用我们 CLA 的仓库中这样做一次。
本项目采用了微软开源行为准则。如需更多信息,请参阅行为准则常见问题解答或联系opencode@microsoft.com,如有任何其他问题或建议。
附加文档
项目详情
哈希值 for azure_monitor_opentelemetry-1.6.2-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f3ae67ab8da3d47cbd9eb2a29e6b75c42739dfca28aff15e049d857bd412728a |
|
MD5 | 421904a580c6164dfe4f057d3a84c2e7 |
|
BLAKE2b-256 | 61ce6a51dee45f5dcca912287391650b21995599f020012bf857805c2a13395b |