OpenTelemetry .NET 项目教程
1. 项目的目录结构及介绍
OpenTelemetry .NET 项目的目录结构如下:
opentelemetry-dotnet/
├── src/
│ ├── OpenTelemetry/
│ ├── OpenTelemetry.Api/
│ ├── OpenTelemetry.Exporter.Console/
│ ├── OpenTelemetry.Exporter.OpenTelemetryProtocol/
│ ├── OpenTelemetry.Extensions.Hosting/
│ ├── OpenTelemetry.Instrumentation.AspNetCore/
│ ├── OpenTelemetry.Instrumentation.Http/
│ ├── OpenTelemetry.Instrumentation.SqlClient/
│ ├── OpenTelemetry.Instrumentation.StackExchangeRedis/
│ ├── OpenTelemetry.Shims.AspNet/
│ ├── OpenTelemetry.Shims.AspNetCore/
│ └── OpenTelemetry.Shims.DiagnosticSource/
├── test/
│ ├── OpenTelemetry.Tests/
│ ├── OpenTelemetry.Exporter.Console.Tests/
│ ├── OpenTelemetry.Exporter.OpenTelemetryProtocol.Tests/
│ ├── OpenTelemetry.Extensions.Hosting.Tests/
│ ├── OpenTelemetry.Instrumentation.AspNetCore.Tests/
│ ├── OpenTelemetry.Instrumentation.Http.Tests/
│ ├── OpenTelemetry.Instrumentation.SqlClient.Tests/
│ ├── OpenTelemetry.Instrumentation.StackExchangeRedis.Tests/
│ ├── OpenTelemetry.Shims.AspNet.Tests/
│ ├── OpenTelemetry.Shims.AspNetCore.Tests/
│ └── OpenTelemetry.Shims.DiagnosticSource.Tests/
├── examples/
│ ├── Console/
│ ├── AspNetCore/
│ └── Metrics/
├── docs/
│ ├── getting-started/
│ ├── logging/
│ ├── metrics/
│ └── traces/
├── .gitignore
├── .editorconfig
├── .gitattributes
├── LICENSE
├── README.md
└── global.json
目录结构介绍
src/
:包含所有主要的源代码文件。OpenTelemetry/
:核心库。OpenTelemetry.Api/
:API 库。OpenTelemetry.Exporter.*
:各种导出器。OpenTelemetry.Instrumentation.*
:各种插桩库。OpenTelemetry.Shims.*
:兼容性库。
test/
:包含所有测试文件。examples/
:包含示例应用程序。docs/
:包含文档文件。- 根目录下的文件:
.gitignore
:Git 忽略文件。.editorconfig
:编辑器配置文件。.gitattributes
:Git 属性文件。LICENSE
:许可证文件。README.md
:项目介绍文件。global.json
:全局配置文件。
2. 项目的启动文件介绍
OpenTelemetry .NET 项目的启动文件通常位于 examples/
目录下的示例应用程序中。以 examples/AspNetCore/
为例,启动文件为 Program.cs
和 Startup.cs
。
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace Example.AspNetCore
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
Startup.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;