OpenTelemetry .NET 自动检测项目教程
1. 项目介绍
OpenTelemetry .NET 自动检测项目是一个开源项目,旨在为 .NET 应用程序添加 OpenTelemetry 检测,而无需修改其源代码。该项目通过自动注入和配置 OpenTelemetry .NET SDK,为应用程序添加关键包和 API 的 OpenTelemetry 检测。它支持多种操作系统和 .NET 版本,包括 .NET Framework 4.6.2 及以上版本,以及 .NET Core 和 .NET 5+。
2. 项目快速启动
2.1 安装方法
2.1.1 使用 NuGet 包
推荐使用 NuGet 包来部署自动检测。首先,在项目文件中添加以下 NuGet 包引用:
<PackageReference Include="OpenTelemetry.AutoInstrumentation" Version="1.7.0" />
2.1.2 使用安装脚本
对于 Linux 和 macOS,可以使用提供的 shell 脚本进行安装:
curl -sSfL https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest/download/install.sh | bash
对于 Windows,可以使用 PowerShell 模块进行安装:
Invoke-WebRequest -Uri https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/latest/download/install.ps1 -OutFile install.ps1
.\install.ps1
2.2 配置环境变量
在启动应用程序之前,设置以下环境变量以启用控制台导出器:
export OTEL_DOTNET_AUTO_LOGS_CONSOLE_EXPORTER_ENABLED=true
export OTEL_DOTNET_AUTO_METRICS_CONSOLE_EXPORTER_ENABLED=true
export OTEL_DOTNET_AUTO_TRACES_CONSOLE_EXPORTER_ENABLED=true
2.3 运行应用程序
设置完环境变量后,启动你的 .NET 应用程序,OpenTelemetry 将自动开始收集和导出遥测数据。
3. 应用案例和最佳实践
3.1 使用 Docker Compose 进行演示
你可以使用 Docker Compose 来快速演示 OpenTelemetry .NET 自动检测的功能。首先,克隆项目仓库并导航到 examples/demo
目录:
git clone https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation.git
cd opentelemetry-dotnet-instrumentation/examples/demo
然后,运行 Docker Compose:
docker-compose up
这将启动一个包含多个服务的演示环境,并自动应用 OpenTelemetry 检测。
3.2 最佳实践
- 环境变量配置:确保在生产环境中正确配置环境变量,以避免不必要的性能开销。
- 资源设置:在启动应用程序时,设置适当的资源属性,以便更好地识别和分类遥测数据。
- 监控和告警:结合 Prometheus 和 Grafana 等工具,设置监控和告警,以便及时发现和解决问题。
4. 典型生态项目
4.1 OpenTelemetry .NET SDK
OpenTelemetry .NET SDK 是 OpenTelemetry 自动检测项目的基础,提供了核心的检测和遥测数据收集功能。
4.2 Prometheus
Prometheus 是一个开源的监控和告警工具,可以与 OpenTelemetry 结合使用,收集和展示指标数据。
4.3 Grafana
Grafana 是一个开源的分析和监控平台,可以与 Prometheus 结合使用,创建丰富的仪表板和可视化图表。
4.4 Jaeger
Jaeger 是一个开源的分布式追踪系统,可以与 OpenTelemetry 结合使用,收集和展示分布式系统的追踪数据。
通过这些生态项目的结合,可以构建一个完整的监控和追踪解决方案,帮助开发者更好地理解和优化应用程序的性能。