当前位置: 首页 > news >正文

.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.1
sudo rpm -Uvh datadog-dotnet-apm-3.3.1-1.x86_64.rpm && /opt/datadog/createLogPath.sh

添加环境变量

  • 应用服务开启 .NET Tracer,需要设置所需的环境变量并重新启动应用程序。
# Set environment variables
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  
  • 当使用 supervisorctl 将 .NET 应用程序作为服务运行时,添加要为特定服务加载的所需环境变量。
# Set additional Datadog environment variables
DD_LOGS_INJECTION=true
DD_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 管理进程,确保探针与监控链路正常通信。该方案有效识别性能瓶颈、优化应用响应,并提升云端服务的高可用性与安全风险管控能力。

相关文章:

  • C#/.NET/.NET Core拾遗补漏合集(25年4月更新)
  • 在国产麒麟Kylin Linux Advanced Server V10中使用QT5开发环境并支持中文输入
  • HarmonyOs学习 环境配置后 实验1:创建项目Hello World
  • 第八篇:系统分析师第三遍——3、4章
  • UE5编辑器静止状态下(非 Play 模式)睫毛和眼睛的渲染是正常的,而在 Play 模式下出现模糊
  • 回顾与动机 - 为什么我们需要 Transformer
  • Attention 机制核心 - Transformer 的基石
  • 如何用Brower Use WebUI实现网页数据智能抓取与分析?
  • 在Ubuntu系统中安装和升级RabbitVCS
  • 基于X86/RK/全志+FPGA+AI工业一体机在电力接地系统中的应用方案
  • ubuntu系统上基于RKE2部署K8S及Rancher
  • 字符集、IO流(一)
  • HAL库通过FATFS和SDIO+DMA写入SD卡数据错误
  • MSTP+VRRP+DHCP(ENSP)
  • docker 部署服务工具记录
  • 1. python开发小笔记
  • Python(23)Python异常处理完全指南:从防御到调试的工程实践
  • Jenkins 简易使用记录
  • 天梯赛数据结构合集
  • Qt官方案例知识点总结(图形视图——Colliding Mice)
  • 西安旅游:2024年营业收入约5.82亿元,同比增长5.88%
  • 建投读书会·东西汇流|西风东渐中的上海营造
  • 直播电商监管新规将公开征求意见,出重拳净化行业生态
  • 对话|听老婆的话,UFC“下山虎”张名扬的铁汉柔情
  • A股午后回暖三大股指涨跌互现:地产银行联袂上攻,两市成交9146亿元
  • 许志强评《伐木》|伯恩哈德的文人共和国