Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 dotnet-monitor 分析.NET 应用程序

使用 dotnet-monitor 分析.NET 应用程序

原创
作者头像
全球技术精选
修改于 2021-01-11 02:12:15
修改于 2021-01-11 02:12:15
74600
代码可运行
举报
文章被收录于专栏:全球技术精选全球技术精选
运行总次数:0
代码可运行

dotnet-monitor 是 .NET Core 命令行接口 (CLI) 工具, 可以很方便的在dotnet环境中分析我们的应用程序,需要注意的是,目前它还只是一个实验性的工具

在这之前,我们使用的有 dotnet-counters,dotnet-dump 和 dotnet-trace,那 dotnet-monitor 有什么意义呢?在运行dotnet应用程序时,不同的本地环境和生产环境中的差异可能使收集诊断工件(例如日志,跟踪,过程转储)变得困难, 所以需要通过公开一致的REST API来简化诊断的流程,而不受程序环境的影响,可以更方便的分析程序的问题。

安装 dotnet-monitor

本地使用

你可以使用以下命令,进行全局安装,因为本身是一个实验性的工具,所以需要在后面加上 –add-source

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dotnet tool install -g dotnet-monitor --add-source https://dnceng.pkgs.visualstudio.com/public/_packaging/dotnet5-transport/nuget/v3/index.json --version 5.0.0-preview.*

安装完成成,执行以下命令,启动成功后,会开放 http://localhost:52323和 http://localhost:52325 两个端口,我们这里只使用 52323 dotnet monitor collect

Dokcer 环境

docker pull mcr.microsoft.com/dotnet/nightly/monitor:5.0.0-preview.1

拉取完成后, 执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker volume create diagnosticserver
docker run -d --rm -p 8000:80 -v diagnosticsserver:/tmp mcr.microsoft.com/dotnet/core/samples:aspnetapp
docker run -it --rm -p 52323:52323 -v diagnosticsserver:/tmp mcr.microsoft.com/dotnet/nightly/monitor:5.0.0-preview.1 --urls http://*:52323

端点列表

你可以访问 http://localhost:52323, 这个 REST API 开放了以下端点,pid 是 processId 进程Id,我们需要找到需要监控的程序的进程id,这里我本地的进程id是21856

  • /processes
  • /dump/{pid?}
  • /gcdump/{pid?}
  • /trace/{pid?}
  • /logs/{pid?}
  • /metrics
Processes

进程信息,访问 http://localhost:52323/processes,会显示所有的dotnet 程序的进程id的列表,不给过这个命令属实有点鸡肋,因为我并不能知道哪个是我需要的 pid,它们都一样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[{
   "pid": 36540,
   "uid": "b65c518b-0ad3-4ebf-af85-dfb3c862d1a7"
}, {
   "pid": 11088,
   "uid": "00000000-0000-0000-0000-000000000000"
}, {
   "pid": 21856,
   "uid": "00000000-0000-0000-0000-000000000000"
}, {
   "pid": 39008,
   "uid": "00000000-0000-0000-0000-000000000000"
}]
Dump

转储文件,访问 http://localhost:52323/dump/pid 来下载文件

GCDump

收集 GCDump,可以访问 http://localhost:52323/gcdump/pid, 跟 Dump 文件不同的是,GCDump 文件是一种轻便的格式,你可以使用 VS 或者 perfview 打开并分析

Trace

跟踪数据, http://localhost:52323/trace/pid,trace 可以获取到 CPU Stack(栈), Http 请求的开始和结束事件,来自 EventSourceLogger 和 Microsoft.Extensions.Logging 的日志,Runtime 运行时和 ASP.NET Core EventCounters 的指标数据, 下载生成的 .nettrace 文件,你同样可以使用 VS 或者 PerfView 打开

总结

https://github.com/dotnet/diagnostics

dotnet-monitor 诊断工具,提供了一套 REST API 来访问诊断数据,目前还只推出了预览版,大家可以在 github上 反馈和关注项目的进度

扩展项目

dotnet-monitor-ui 是一个针对与 dotnet-monitor的ui项目,这得益于 dotnet-monitor 提供了一套便捷的 REST API, 你可以在 github 关注这个项目,了解它后台是如何工作的

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【翻译】.NET 6 中的 dotnet monitor
我们在 2020 年 6 月首次推出了dotnet monitor 作为实验工具,并在去年(2020年)努力将其转变为生产级工具。今天,我很高兴地的宣布 dotnet monitor 的第一个正式版将和 .NET 6 一起发布,作为 .NET 6 的一部分。
晓晨
2021/12/09
6730
【翻译】.NET 6 中的 dotnet monitor
使用dotnet-monitor sidecar模式 dump docker运行的dotnet程序.
随着容器和云技术的发展, 大量的应用运行在云上的容器中, 它们的好处是毋庸置疑的, 例如极大的提高了我们的研发部署速度, 快速的扩缩容等等, 但是也存在一些小小的问题, 例如难以调试. 基于VM的部署我们可以通过安全的方式登录到主机上做一些你想做的事情, 但是云上的容器那就是不太方便了(目前AWS的ECS已经有类似docker exec的方式直接进入容器中了, 其他的云未作了解). 但是就算能进入容器也不意味着调试就好做了, 通常来说使用的镜像都是经过优化和精简的(如果要调式可能需要安装大量的组件).
旺财的城堡
2022/11/02
1.5K0
使用dotnet-monitor sidecar模式 dump docker运行的dotnet程序.
当 dotnet-monitor 遇上 Prometheus, 是种什么样的体验?
对于开发和运维人员来说, 监控大屏很棒, 让我们来做一个 Dashboard 吧!大家可能听说过一些 CLI 诊断工具, 比如 dotnet-counters,dotnet-dump 和 dotnet-trace, 那 dotnet-monitor 又是什么呢?简单理解就是把上面的几种诊断工具进行了包装, 并且暴露了 对应的 REST API, 让诊断变的更容易, 在去年, dotnet-monitor 还是一个实验性的诊断工具, 当时我也写了一篇文章介绍 dotnet-monitor,使用 dotnet-monitor 分析.NET 应用程序 , 而最近, .NET 团队宣布第一个 release 版本的 dotnet-monitor, 同时它也是 .NET 6 的内容, 也就是 dotnet-monitor 6.0.0 !
全球技术精选
2021/12/07
6850
当 dotnet-monitor 遇上 Prometheus, 是种什么样的体验?
如何创建一个带诊断工具的.NET镜像
现在是云原生和容器化时代,.NET Core对于云原生来说有非常好的兼容和亲和性,dotnet社区以及微软为.NET Core提供了非常方便的镜像容器化方案。所以现在大多数的dotnet程序都是部署在各种容器化环境中,比如我们常见的Docker。
InCerry
2022/11/14
2.4K0
Docker最全教程——.NET5进一步拥抱容器技术
.NET 5已经发布多时了,众所周知,其对容器的支持又上了一个台阶。那么主要有哪些变化呢,接下来我们一起来了解吧。
雪雁-心莱科技
2020/12/14
1.3K0
动手实现一个适用于.NET Core 的诊断工具
大家可能对诊断工具并不陌生,从大名鼎鼎的 dotTrace,到 .NET CLI 推出的一系列的高效诊断组件(dotnet trace,dotnet sos,dotnet dump)等, 这些工具提升了对程序Debug的能力和效率,可以让开发人员从更高层次的维度来发现程序中的问题。
全球技术精选
2021/05/18
6660
动手实现一个适用于.NET Core 的诊断工具
.NET 中的 EventCounters
EventCounters 是 .NET API,用于轻量级、跨平台、准实时性能指标收集。 EventCounters 作为 Windows 上 .NET 框架的“性能计数器”的跨平台替代项添加。 本文将介绍什么是 EventCounters,如何实现它们,以及如何使用它们。
呆呆
2022/01/07
1.7K0
dotnet-trace 性能分析实用工具
若要安装最新版 dotnet-trace NuGet 包,请使用 dotnet tool install 命令:
呆呆
2022/01/09
1.4K0
使用 PerfCollect 跟踪 .NET 应用程序
在 Linux 上遇到性能问题时,可使用 perfcollect 收集跟踪,以便收集有关出现性能问题时计算机上发生的状况的详细信息。
呆呆
2022/01/09
1.5K0
记一次ASP.NET CORE线上内存溢出问题与dotnet-dump的排查方法
项目又都运行在docker容器中,容器为了最小化,采用了极简的系统,几乎任何常见命令都没有.
GuZhenYin
2025/05/17
3800
记一次ASP.NET CORE线上内存溢出问题与dotnet-dump的排查方法
构建 dotnet&vue 应用镜像->推送到 Nexus 仓库->部署为 k8s 服务实践
不管什么语言,基本都可以使用这个打包流程,将官方镜像打包推送到私有镜像仓库个人认为是必要的,不然如果一旦远端的镜像失效,又需要重新拉取镜像时就会很尬尴。
易墨
2024/01/03
7770
构建 dotnet&vue 应用镜像->推送到 Nexus 仓库->部署为 k8s 服务实践
.NET Core CLI 的性能诊断工具介绍
开发人员的.NET Core项目上线后,经常会出现各种问题,内存泄漏,CPU 100%,处理时间长等, 这个时候就需要快速并准确的发现问题,并解决问题, 除了项目本身的日志记录外,NET Core 为我们开发人员提供了一系列功能强大并且无侵入的诊断工具,本文主要介绍的是 .NET Core dotnet 诊断全局工具
梁规晓
2020/11/05
1.2K0
.NET Core CLI 的性能诊断工具介绍
调试 .NET Core 中的高 CPU 使用率
本教程将介绍如何调试 CPU 使用率过高的情况。 使用提供的示例 ASP.NET Core Web 应用 源代码存储库,可以故意造成死锁。 终结点将停止响应并遇到线程累积问题。 你将了解如何使用各种工具,通过几条关键的诊断数据诊断此情况。
呆呆
2022/01/09
1.6K0
《.NET 5.0 背锅案》第1集:验证 .NET 5.0 正式版 docker 镜像问题
今天我们分析了博客站点的2次故障(故障一、故障二),发现一个巧合的地方,.NET 5.0 正式版的 docker 镜像是在11月10日提前发布上线的。
huofo
2022/03/17
5050
《.NET 5.0 背锅案》第1集:验证 .NET 5.0 正式版 docker 镜像问题
每周.NET前沿技术文章摘要(2017-05-17)
本文介绍了.NET技术相关的文章,包括.NET Core, .NET Standard, ASP.NET, 性能分析等方面的内容。
张善友
2017/05/17
1.3K0
使用Docker buildx 为 .NET 构建多平台镜像
.NET 团队有一篇博客 改进多平台容器支持, 详细介绍了.NET 7 以上的平台可以轻松的使用Docker buildx 工具构建多平台的镜像。 buildx 是 Docker 官方提供的一个构建工具,它可以帮助用户快速、高效地构建 Docker 镜像,并支持多种平台的构建。使用 buildx,用户可以在单个命令中构建多种架构的镜像,例如 x86 和 ARM 架构,而无需手动操作多个构建命令。此外,buildx 还支持 Dockerfile 的多阶段构建和缓存,这可以大大提高镜像构建的效率和速度。
张善友
2023/10/18
7260
使用Docker buildx 为 .NET 构建多平台镜像
aspire-dashboard 的各种认证方式
之前我们有介绍过如何使用 Aspire Dashboard 使用 aspire-dashboard 展示 open-telemetry trace/logging/metrics, 最近在将几个系统集成 Aspire 想要将 aspire dashboard 部署为自己系统的一部分,同时接入自己的用户系统来实现认证授权,发现 Aspire Dashboard 已经支持了 OpenIdConnect 的认证方式,集成起来还是比较简单的,下面介绍下 aspire dashboard 的各种认证方式
郑子铭
2025/04/09
1640
aspire-dashboard 的各种认证方式
译 | .NET Core 3.0 Preview 6 已发布
今天,我们宣布 .NET Core 3.0 Preview 6。它的更新包括编译程序集以改进启动、使用链接器和 EventPipe 改进优化应用程序的大小。我们还在 ARM64 上发布了针对 Alpine 的新 Docker 镜像。
Edi Wang
2019/07/09
1.2K0
译 | .NET Core 3.0 对诊断的改进
在 .NET Core 3.0 中,我们将引入一套工具,这些工具利用 .NET 运行时中的新功能,使诊断和解决性能问题变得更加容易。
Edi Wang
2019/07/09
2K0
传统.NET 4.x应用容器化体验(2)
上一篇我们基于Windwos Server 2019 with Container初步跑了一个ASP.NET WebForm应用程序。本篇我们来自己编译部署一个ASP.NET MVC应用程序到Windows Container。
Edison Zhou
2021/07/21
1.7K0
传统.NET 4.x应用容器化体验(2)
相关推荐
【翻译】.NET 6 中的 dotnet monitor
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档