写点什么

.NET Core 服务实现监控可观测性最佳实践

作者:观测云
  • 2025-04-18
    上海
  • 本文字数:2057 字

    阅读完需:约 7 分钟

.NET Core 服务实现监控可观测性最佳实践

.NET Core 概述

.Net Core 是一个开源的、跨平台的高性能框架,由微软开发并维护,现由 .NET Foundation 提供支持。它用于构建现代化、可扩展的云端和本地应用程序,支持开发 Web 应用、微服务、API、物联网应用以及移动后端服务,是 .NET 生态系统中的核心开发平台。

.NET Core 的优势有以下几点:

  • 跨平台能力:支持在 Windows、Linux 和 macOS 系统上开发和运行,打破传统 .NET Framework 的局限性,满足多样化部署需求。

  • 高性能:基于优化的运行时和轻量级模块化设计,.NET Core 的请求处理速度显著提升,可轻松应对高并发场景,性能对标业界领先框架(如 Node.js、Spring)。

  • 灵活的扩展性:支持依赖注入、中间件管道等模块化设计,开发者可按需组合功能(如认证、日志、缓存),快速构建轻量级或企业级应用。

  • 现代化开发支持:原生集成云原生技术(如 Docker、Kubernetes),提供高效的微服务架构支持;兼容多种开发语言(C#、F#、VB),并与 Visual Studio、VS Code 等工具无缝协作。

.NET Core 是一个功能完备的应用开发框架,适用于追求高性能、跨平台兼容性及快速迭代的互联网应用、企业级系统、云服务和物联网等领域,是构建数字化转型解决方案的核心技术栈之一。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

环境信息

  • 系统环境:Linux(CentOS 7.9 64 位)

  • 开发语言:.Net 6.0.425

  • APM 探针包:ddtrace

  • 启动方式:Supervisor

Tips:Supervisor 是一个用于控制和管理进程的 Unix 工具,它常用于确保关键进程在后台持续运行。对于 .NET 应用,Supervisor 可以监控应用程序的启动、运行状态,并在崩溃时自动重启。通过配置文件设定,Supervisor 能处理多个 .NET 进程,保证应用的高可用性。这使得 Supervisor 成为部署和维护 .NET 应用程序的一个有力工具。

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。



开启 ddtrace 采集器

  • linux 主机配置

$ cd /usr/local/datakit/conf.d/ddtrace/$ cp ddtrace.conf.sample ddtrace.conf 
复制代码
  • 重启 datakit

# 重启datakit $ service datakit restart  或者 systemctl restart datakit
复制代码

探针下载

  • 根据版本和架构选择不同的探针:DataDog/dd-trace-dotnet ,为与操作系统(x64 或 x86)匹配的体系结构选择 MSI 安装程序。

  • 以 CentOS 为例

#TRACE_VERSION填写实际下载的VERSION版本sudo rpm -Uvh datadog-dotnet-apm<TRACER_VERSION>-1.x86_64.rpm && /opt/datadog/createLogPath.sh# 实践下载的版本是3.3.1sudo rpm -Uvh datadog-dotnet-apm-3.3.1-1.x86_64.rpm && /opt/datadog/createLogPath.sh
复制代码

添加环境变量

  • 应用服务开启 .NET Tracer,需要设置所需的环境变量并重新启动应用程序。

# Set environment variablesCORECLR_ENABLE_PROFILING=1  CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}  CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so  DD_DOTNET_TRACER_HOME=/opt/datadog  
复制代码
  • 当使用 supervisorctl 将 .NET 应用程序作为服务运行时,添加要为特定服务加载的所需环境变量。

# Set additional Datadog environment variablesDD_LOGS_INJECTION=trueDD_RUNTIME_METRICS_ENABLED=true
复制代码
  • 在使用 supervisor 这种守护进程的启动方式时配置文件中需要修改的部分如下:

environment=CORECLR_ENABLE_PROFILING=1, \CORECLR_PROFILER="{846F5F1C-F9AE-4B07-969E-05C26BC060D8}", \CORECLR_PROFILER_PATH="/opt/datadog/Datadog.Trace.ClrProfiler.Native.so", \DD_DOTNET_TRACER_HOME="/opt/datadog", \DD_TRACE_AGENT_URL=http://localhost:9529, \DD_SERVICE=oddb_service, \DD_INTEGRATIONS=/opt/datadog/integrations.json, \DD_LOGS_INJECTION=true,DD_RUNTIME_METRICS_ENABLED=true \      ;process environment additions (def no adds)
复制代码
  • 重启 .Net 应用

Tips:需要注意的是,CORECLR_PROFILER,CORECLR_PROFILER_PATH,DD_DOTNET_TRACER_HOME 这几个环境变量的值尽量加上"",不然有可能会造成 key,value 的值对应不上。

实践效果





总结

观测云通过 One Agent (DataKit)为 .NET Core 应用提供全链路可观测能力,实时追踪性能指标与日志数据,保障服务稳定性。部署时需配置环境变量、启用采集器并通过 Supervisor 管理进程,确保探针与监控链路正常通信。该方案有效识别性能瓶颈、优化应用响应,并提升云端服务的高可用性与安全风险管控能力。

用户头像

观测云

关注

还未添加个人签名 2021-02-08 加入

云时代的系统可观测平台

评论

发布
暂无评论
.NET Core 服务实现监控可观测性最佳实践_.net core_观测云_InfoQ写作社区