你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 .NET 的 Azure Monitor 导出程序客户端库 - 版本 1.0.0

OpenTelemetry .NET 导出器,按照 OpenTelemetry 规范遥测数据发送到 Azure Monitor

入门

先决条件

安装包

最新版本: Nuget

使用 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 将优先。

  1. CredentialAzureMonitorExporterOptions将 设置为 。

    var credential = new DefaultAzureCredential();
    
    Sdk.CreateTracerProviderBuilder()
        .AddAzureMonitorTraceExporter(o =>
        {
            o.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000";
            o.Credential = credential;
        })
        .Build();
    
  2. 将 提供给 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