你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 .NET 的 Azure Monitor 导出程序客户端库 - 版本 1.0.0
OpenTelemetry .NET 导出器,按照 OpenTelemetry 规范将遥测数据发送到 Azure Monitor。
入门
先决条件
- Azure 订阅: 若要使用 Azure 服务(包括适用于 OpenTelemetry .NET 的 Azure Monitor 导出程序),需要订阅。 如果没有现有的 Azure 帐户,可以在创建帐户时注册免费试用版或使用 Visual Studio 订阅权益。
- Azure 应用程序 Insights 连接字符串:若要将遥测数据发送到监视服务,需要来自 Azure 应用程序 Insights 的连接字符串。 如果不熟悉如何创建 Azure 资源,可能需要按照 创建 Application Insights 资源的 分步指南操作并 复制连接字符串。
安装包
最新版本:
使用 NuGet 安装适用于 OpenTelemetry .NET 的 Azure Monitor 导出程序:
dotnet add package Azure.Monitor.OpenTelemetry.Exporter
夜间生成
夜间版本可从此存储库 的开发源获取。 这些内容在不提供支持的情况下提供,不适用于生产工作负荷。
添加导出程序
以下示例演示如何将 添加到 AzureMonitorExporter
OpenTelemetry 配置。
跟踪
Sdk.CreateTracerProviderBuilder() .AddAzureMonitorTraceExporter(o => o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000") .Build();
有关完整示例,请参阅 TraceDemo.cs。
指标
Sdk.CreateMeterProviderBuilder() .AddAzureMonitorMetricExporter(o => o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000") .Build();
有关完整示例,请参阅 MetricDemo.cs。
日志
LoggerFactory.Create(builder => { builder.AddOpenTelemetry(options => { options.AddAzureMonitorLogExporter(o => o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000"); }); });
有关完整示例,请参阅 LogDemo.cs。
验证客户端
Azure Active Directory (AAD) 身份验证是一项可选功能,可用于 Azure Monitor 导出程序。 Azure 标识库可简化此操作,该库支持使用其相应的 Azure 服务对 Azure SDK 客户端进行身份验证。
有两个选项可用于启用 AAD 身份验证。 请注意,如果两者都已设置,AzureMonitorExporterOptions 将优先。
Credential
AzureMonitorExporterOptions
将 设置为 。var credential = new DefaultAzureCredential(); Sdk.CreateTracerProviderBuilder() .AddAzureMonitorTraceExporter(o => { o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000"; o.Credential = credential; }) .Build();
将 提供给
Credential
AddAzureMonitorExporter 方法。var credential = new DefaultAzureCredential(); Sdk.CreateTracerProviderBuilder() .AddAzureMonitorTraceExporter(o => o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000", credential) .Build();
关键概念
.NET 的一些关键概念包括:
.NET 分布式跟踪概述:分布式跟踪是一种诊断技术,可帮助工程师本地化应用程序中的故障和性能问题,尤其是可能分布在多个计算机或进程中的故障和性能问题。
.NET 中的日志记录概述:.NET 支持与各种内置和第三方日志记录提供程序配合使用的日志记录 API。
Azure Monitor 的一些关键概念包括:
- Azure Monitor 使用的 IP 地址:此导出程序使用 HTTPS 将跟踪发送到配置的 Azure Monitor 资源。 如果要监视的应用或基础结构托管在防火墙后面,可能需要知道这些 IP 地址。
OpenTelemetry 的一些关键概念包括:
OpenTelemetry:OpenTelemetry 是一组库,用于收集和导出遥测数据, (指标、日志和跟踪) 进行分析,以了解软件的性能和行为。
检测:通过检测,任何应用程序直接调用 OpenTelemetry API 的功能都得到了促进。 为另一个库启用 OpenTelemetry 可观测性的库称为检测库。
跟踪信号:跟踪是指分布式跟踪。 可以将其视为 spans (DAG) 的有向无环图,其中 Span 之间的边缘定义为父/子关系。
采样:采样是一种通过减少收集并发送到后端的跟踪样本数来控制 OpenTelemetry 引入的干扰和开销的机制。
指标信号:OpenTelemetry 允许使用预定义聚合记录原始度量值或指标,以及一组属性 (维度) 。
日志信号:记录事件。 通常,记录包括一个时间戳,指示事件发生的时间,以及描述所发生情况、发生地点等的其他数据。
有关 OpenTelemetry 项目的详细信息,请查看 OpenTelemetry 规范。
示例
Program.cs
有关完整演示,请参阅 。
疑难解答
Azure Monitor 导出器使用 EventSource 执行自己的内部日志记录。 通过选择加入名为“OpenTelemetry-AzureMonitor-Exporter”的来源,任何 EventListener 都可以使用导出器日志。
OpenTelemetry 还提供自己的自诊断功能来收集内部日志。 此处的演示项目中提供了一个示例。
后续步骤
有关 Azure SDK 的详细信息,请参阅 此网站
贡献
有关贡献过程的详细信息 ,请参阅 CONTRIBUTING.md 。