博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 dotnet-monitor 分析.NET 应用程序
阅读量:4034 次
发布时间:2019-05-24

本文共 2374 字,大约阅读时间需要 7 分钟。

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 diagnosticserverdocker run -d --rm -p 8000:80 -v diagnosticsserver:/tmp mcr.microsoft.com/dotnet/core/samples:aspnetappdocker 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[1] 是一个针对与 dotnet-monitor的ui项目,这得益于 dotnet-monitor 提供了一套便捷的 REST API, 你可以在 github 关注这个项目,了解它后台是如何工作的

References

[1] dotnet-monitor-ui: https://github.com/SachiraChin/dotnet-monitor-ui"https://github.com/SachiraChin/dotnet-monitor-ui"

转载地址:http://vyudi.baihongyu.com/

你可能感兴趣的文章
Java中数字转大写货币(支持到千亿)
查看>>
Java.nio
查看>>
函数模版类模版和偏特化泛化的总结
查看>>
VMware Workstation Pro虚拟机不可用解决方法
查看>>
最简单的使用redis自带程序实现c程序远程访问redis服务
查看>>
redis学习总结-- 内部数据 字符串 链表 字典 跳跃表
查看>>
iOS 对象序列化与反序列化
查看>>
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
iOS __block和__weak的区别
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
GBK编码下jQuery Ajax中文乱码终极暴力解决方案
查看>>
Oracle 物化视图
查看>>