本文介绍如何在中理解dotnetmonitor。NET6,而且内容非常详细。感兴趣的朋友可以参考一下,希望对你有所帮助。
00-1010跑步。不同环境中的. NET应用程序可能会使收集诊断信息(如日志、跟踪、转储)变得困难。无论您是在台式计算机(台式计算机可以理解为我们的日常计算机)上运行,还是在kubernetes集群中运行,Netmonitor都是一种提供收集这些诊断信息的统一方法的工具。
收集这些诊断信息有两种不同的机制:
用于按需收集诊断信息的HTTP API。当您的应用程序遇到问题并希望收集更多信息时,您可以调用这些HTTP API。
基于规则配置的触发器。您可以配置规则,以便在满足所需条件时收集诊断信息,例如,当CPU在一段时间内保持高指标时收集进程转储。
一.什么是 dotnet monitor
dotnet monitor可以通过两种不同的分发机制获得:NET命令行界面工具
通过微软容器注册(MCR)获得的容器图像
二.入门
dotNET监视器命令行界面工具首先需要安装。NET 6 SDK。如果您没有足够的新SDK,可以通过。net下载页面进行安装。
您可以使用命令获取dotnet monitor的最新版本:
nettolinstall-gdotnet-monitor-Version 6 . 0 . 0如果您已经安装了它,但想将其更新到最新版本,可以运行以下命令:
dottoolupdate-gdotnet-monitor-Version 6 . 0 . 0
.NET CLI 工具
Dotnetmonitor容器映像可在MCR上获得。您可以通过以下命令获取最新图像:
Dockerpullmcr.microsoft.com/dotnet/monitor:6.0.0
容器镜像
Dotnet Monitor公开了一个HTTP API,用于查询可用进程、收集诊断信息和检查请求信息的状态。
公开了以下HTTP应用编程接口:
/processes-获取可以发现的进程的详细信息。
/dump-不使用调试器捕获进程的转储。
/GC dump-捕获进程的GC dump。
/trace-不要使用探查器来跟踪进程。
/metrics-以Prometheus曝光格式捕获默认流程的度量快照。
/livemetrics-捕获流程的实时度量流。
/logs-捕获进程的日志。
/info-获取有关dotnet监视器的信息
/operations-获取操作状态并取消操作。
下面的示例演示如何使用微软的调试级别记录日志流数据。aspnetcore . server . kest rel . connections在60秒内从目标进程通过使用dotnet monitor。
pscurl . exe-XPOST ' https://localhost :52323/log?name=myWebAppdurationSeconds=60 ' '
n
bsp; -H "Accept: application/x-ndjson" `
-H "Content-Type: application/json" `
--negotiate -u $(whoami)`
-d '{"filterSpecs": {"Microsoft.AspNetCore.Server.Kestrel.Connections": "Debug"}}'
{"Timestamp":"2021-11-05 08:12:54Z","LogLevel":"Debug","EventId":39,"EventName":"ConnectionAccepted","Category":"Microsoft.AspNetCore.Server.Kestrel.Connections","Message":"Connection id u00220HMD06BUKL2CUu0022 accepted.","State":{"Message":"Connection id u00220HMD06BUKL2CUu0022 accepted.","ConnectionId":"0HMD06BUKL2CU","{OriginalFormat}":"Connection id u0022{ConnectionId}u0022 accepted."}}
{"Timestamp":"2021-11-05 08:12:54Z","LogLevel":"Debug","EventId":1,"EventName":"ConnectionStart","Category":"Microsoft.AspNetCore.Server.Kestrel.Connections","Message":"Connection id u00220HMD06BUKL2CUu0022 started.","State":{"Message":"Connection id u00220HMD06BUKL2CUu0022 started.","ConnectionId":"0HMD06BUKL2CU","{OriginalFormat}":"Connection id u0022{ConnectionId}u0022 started."}}
{"Timestamp":"2021-11-05 08:12:54Z","LogLevel":"Debug","EventId":9,"EventName":"ConnectionKeepAlive","Category":"Microsoft.AspNetCore.Server.Kestrel.Connections","Message":"Connection id u00220HMD06BUKL2CUu0022 completed keep alive response.","State":{"Message":"Connection id u00220HMD06BUKL2CUu0022 completed keep alive response.","ConnectionId":"0HMD06BUKL2CU","{OriginalFormat}":"Connection id u0022{ConnectionId}u0022 completed keep alive response."},"Scopes":[{"ConnectionId":"0HMD06BUKL2CU"},{"RequestId":"0HMD06BUKL2CU:00000002","RequestPath":"/"}]}
如上面的示例所示,您可以使用 dotnet monitor 按需从目标进程中捕获诊断信息。除了日志,您还可以从目标进程收集跟踪、内存转储、GC转储和 metrics。
四.触发器
dotnet monitor 可以配置为根据发现的进程中的条件自动收集诊断信息。 发现新进程时,如果该进程数据与规则匹配,则 dotnet monitor 将尝试应用配置的规则。 应用的规则将开始监视触发器描述的条件的过程。 如果满足该条件,则假定尚未达到指定的限制来执行操作列表。
示例:如果 dotnet monitor 检测到持续超过一分钟的CPU使用率在80%以上,则它将收集进程 dump,限制每小时不超过1个。
{ "CollectionRules": { "HighCpuRule": { "Filters": [ { "Key": "ProcessName", "Value": "MyApp", "MatchType": "Exact" } ], "Trigger": { "Type": "EventCounter", "Settings": { "ProviderName": "System.Runtime", "CounterName": "cpu-usage", "GreaterThan": 80, "SlidingWindowDuration": "00:01:00" } }, "Limits": { "ActionCount": 1, "ActionCountSlidingWindowDuration": "1:00:00" }, "Actions": [ { "Type": "CollectDump", "Settings": { "Type": "Triage", "Egress": "myBlobStorageAccount" } } ] } } }
关于.NET 6中的dotnet monitor怎么理解就分享到这里了,希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157908.html