使用 dotnet-monitor 分析.NET 应用程序
dotnet-monitor 是 .NET Core 命令行接口 (CLI) 工具, 可以很方便的在dotnet环境中分析我们的应用程序,需要注意的是,目前它还只是一个实验性的工具
在这之前,我们使用的有 dotnet-counters,dotnet-dump 和 dotnet-trace,那 dotnet-monitor 有什么意义呢?在运行dotnet应用程序时,不同的本地环境和生产环境中的差异可能使收集诊断工件(例如日志,跟踪,过程转储)变得困难, 所以需要通过公开一致的REST API来简化诊断的流程,而不受程序环境的影响,可以更方便的分析程序的问题。
安装 dotnet-monitor
本地使用
你可以使用以下命令,进行全局安装,因为本身是一个实验性的工具,所以需要在后面加上 --add-source
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
拉取完成后, 执行
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,它们都一样
[{
"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 关注这个项目,了解它后台是如何工作的

最后
欢迎关注我们的公众号,专注国外优秀博客的翻译和开源项目分享,也可以添加QQ群 897216102

使用 dotnet-monitor 分析.NET 应用程序的更多相关文章
- 在 NetBeans IDE 6.0 中分析 Java 应用程序性能
NetBeans IDE 6.0 包含一个强大的性能分析工具,可提供与应用程序运行时行为有关的重要信息.通过 NetBeans 性能分析工具,我们可以方便地在 IDE 中监控应用程序的线程状态.CPU ...
- 【翻译】.NET 6 中的 dotnet monitor
原文:Announcing dotnet monitor in .NET 6 我们在 2020 年 6 月首次推出了dotnet monitor 作为实验工具,并在去年(2020年)努力将其转变为生产 ...
- 使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB)
使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB) http://www.cnblogs.com/mrkelly/p/4015245.html 以往调试Androi ...
- 教你50招提升ASP.NET性能(三):使用Microsoft的PDBs调试和分析外部的程序集和库
(3)Use Microsoft’s PDBs to debug or profile external assemblies or libraries 招数3: 使用Microsoft的PDBs调试 ...
- Process Monitor分析某个应用行为
1.打开Process Mointor 2.点击filter-->filter 在弹出的对话框中Architecture 下拉框,选择Process Name 填写要分析的应用程序名字. 点 ...
- Envoy 源码分析--程序启动过程
目录 Envoy 源码分析--程序启动过程 初始化 main 入口 MainCommon 初始化 服务 InstanceImpl 初始化 启动 main 启动入口 服务启动流程 LDS 服务启动流程 ...
- 从程序员的角度分析微信小程序(编程语言:用到什么学什么)
从程序员的角度分析微信小程序(编程语言:用到什么学什么) 一.总结 一句话总结:微信小程序原理就是用JS调用底层native组件,和React Native非常类似.(需要时,用到时再学) 1.选择语 ...
- 分析一个delphi程序
系统 : Windows xp 程序 : k4n6 程序下载地址 :https://pan.baidu.com/s/1pLANxyj 要求 : 注册机编写 使用工具 : OD & DeDe 可 ...
- 分析windows .net程序dump文件的两种方式
1.WinDbg 按照自己系统版本下载对应windbg(https://debugging.wellisolutions.de/windbg-versions/),win10版本自动下载文件符号,体验 ...
随机推荐
- [题解] [USACO05JAN]Muddy Fields G
题目TP门 题目大意 在一个 \(R×C\) 的矩阵中,每个点有两个状态:草地和泥地.你需要在泥地里铺 \(1×k\) 木块, \(k\) 为任意整数,求最少要多少木块. 思路 两个横向木块不会互相干 ...
- virtualProtect函数
原文链接:https://blog.csdn.net/zacklin/article/details/7478118 结合逆向课件11
- iptables SNAT 和DNAT的转化配置实验
原文链接:http://www.jb51.net/LINUXjishu/402441.html DNAT(Destination Network Address Translation,目的地址转换) ...
- Jmeter代理服务器录制脚本--浏览器拦截访问链接
在 Jmeter性能测试的过程中您是否会遇到代理服务器无法打开浏览器,无法录制脚本的情况呢? 在测试过程中,我也遇到过这样的问题,希望能帮到正在找寻答案的你.... Jmeter录制脚本时,跟http ...
- Oracle命令管理账户和权限
方式一.登陆数据库SQL PLUS: 步骤:Oracle - OraDb10g_home1 =>应用程序开发=>SQL PLUS 用户名:system 密码:tiger/admin 退出数 ...
- 1、tensorflow 框架理解
2020/10/31 参考:https://blog.csdn.net/mzpmzk/article/details/78636127 1. 两大步骤:定义图define the graph, 进行计 ...
- Scrum冲刺_Day04
一.团队展示: 1.项目:light_note备忘录 2.队名:删库跑路队 3.团队成员 队员(不分先后) 项目角色 黄敦鸿 后端工程师.测试 黄华 后端工程师.测试 黄骏鹏 后端工程师.测试 黄源钦 ...
- web移动端css reset
通用版css reset,pc端使用只需要修改html{font-size: 10px;}为html{font-size: 12px;} @charset "utf-8"; htm ...
- CF1406E 【Deleting Numbers】
蒟蒻语 蒟蒻这次 \(CF\) 又双叒叕掉分了,\(C\) 都没有调出来. 还好再最后 \(10\) 秒钟调了下 \(E\) 块长 (块长 \(100\) => \(98\)),才没有掉得那么惨 ...
- Linux下基于.NET5开发CAX应用
<<.NET5下的三维应用程序开发>>一文中介绍了如何在.NET5下使用AnyCAD开发应用程序.相比.NET4.x,.NET5一大进步便是可以跨平台,即可以在Linux.Ma ...