首页 > 作文

.NET 6中的dotnet monitor讲解

更新时间:2023-04-04 05:24:26 阅读: 评论:0

一.什么是 dotnet monitor

在不同的环境中运行 .net 应用程序可能会使收集诊断信息(例如日志、跟踪、dump)变得困难。dotnet monitor 是一种工具,它提供了一种统一的方法来收集这些诊断信息,而不管您是在桌面计算机(desktop machine 可理解为我们日常使用的电脑)还是在 kubernetes 集群中运行。

收集这些诊断信息有两种不同的机制:

按需收集诊断信息的 http api。当您的应用程序遇到问题并且想收集更多信息时,可以调用这些 http api。基于规则配置的触发器。您可以配置规则,以便在满足所需条件时收集诊断信息,例如在 cpu 持续一段时间保持较高的指标时收集进程转储(process dump)。

二.入门

dotnet monitor 可以通过两种不同的分发机制获得:

.net cli 工具通过 microsoft container registry (mcr) 获得的容器镜像

.net cli 工具

dotnet monitor cli 工具首先需要安装 .net 6 sdk,如果你没有足够新的 sdk,可以通过 .net 下载网页获取安装包进行安装。

你可以使用一下命令获取最新版的 dotnet monitor:

dotnet tool install -g dotnet-monitor --version 6.0.0

如果你已经安装但是想更新到最新,可以运行以下命令:

dotnet tool update -g dotnet-monitor --version 6.0.0

容器镜像

dotnet monitor 容器镜像在 mcr 上可用,你可以通过以下命令获取最新的镜像:

docker pull mcr.microsoft.com/dotnet/monitor:6.0.0

三.http api

dotnet monitor 公开了一个 http api 来查询可用进程、收集诊断信息并检查请求信息的状态。

暴露了以下 http api:

/process– 获取可被发现的进程的详细信息/dump– 在不使用调试器的情况下捕获进程的 dump/gcdump– 捕获进程的 gc dump/trace– 不使用 profiler 来追踪进程/metrics– 以 prometheus exposition 格式捕获默认进程的指标快照/livemetrics– 捕获进程的实时指标流/logs– 捕获进程的日志/info– 获取有关 dotnet monitor 的信息/operations– 获取操作状态和取消操作

下面的示例演示如何使用 dotnet monitor 从目标进程开始,在60秒的时间内从microsoft.aspnetcore.rver.kestrel.connections 日志级别为 debug 的日志流数据。

ps> curl.exe -x post "https://localhost:52323/logs?name=mywebapp&durationconds=60" `    -h "accept: application/x-ndjson" `    -h "content-type: application/json" `    --negotiate -u $(whoami)`    -d '{"filterspecs": {"microsoft.aspnetcore.rver.kestrel.connections": "debug"}}' {"timestamp":"2021-11-05 08:12:54z","loglevel":"debug","eventid":39,"ev满分作文800字entname":"connectionaccepted","category":"microsoft.aspnetcore.rver.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.rver.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.rver.kestrel.connections","message":"connection id u00220hmd06bukl2cuu0022 completed keep alive respon.","state":{"message":"connection id u00220hmd06bukl2cuu0022 completed keep alive respon.","connectionid":"0hmd06bukl2cu","{originalformat}":"connection id u0022{connectionid}u0022 completed keep alive respon."},"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",        "ttings": {    3000左右的笔记本推荐      "providername": "system.runtime",          "countername": "cpu-usage",          "greaterthan": 80,          "slidingwindowduration": "00:01:00"        }      },      "limits": {        "actioncount": 1,        "actioncountslidingwindowduration": "1:00:00"      },      "actions": [        {          "type": "collectdump",          "ttings": {            "type": "triage",            "egress": "myblobstorageaccount"          }        }      ]    }  }}我为书狂

规则文档:https://github.com/dotnet/dotnet-monitor/blob/main/documentation/collectionrules.md

五.反馈

github issue: https://github.com/dotnet/dotnet-monitor/issues/new/choo

以上就是本文的全英文美文部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-04 05:23:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/c2781b5305ef926b89ddd685d4cc03eb.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:.NET 6中的dotnet monitor讲解.doc

本文 PDF 下载地址:.NET 6中的dotnet monitor讲解.pdf

标签:进程   信息   规则   镜像
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图