.NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门
.NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门
指标数据报告关于你的应用的诊断信息。.NET 8 为 ASP.NET Core 增加了超过一打的有价值的指标数据:
- HTTP 请求计数与持续时间
- 活动的 HTTP 请求数量
- 路由匹配结果
- 限速租约与队列持续时间
- SignalR 传输使用状况
- 来自 Kestrel 的底层连接与 TLS 使用状况
- 错误处理诊断信息
- 其它
指标是伴随着时间推移所报告的数值度量值。例如,每个由 ASP.NET Core 处理的 HTTP 请求拥有一个记录在 http.server.request.duration 中的持续时间。诸如 .NET OpenTelemetry SDK 这样的工具可以通过对应用的配置,来将这些测量数据导出遥测的存储中,例如 Prometheus 或者 Azure Monitor 中。指标作为 OpenTelemetry 标准的一部分,所有现代的工具都支持它们。
指标数据在与工具结合使用时非常有用,可以监视应用的运行状况和活动:
- 通过在仪表板上展示的图形来观察应用随时间的变化。例如,查看使用该应用的用户的活动。
- 如果应用超过阈值,则实时触发警报。例如,如果请求持续时间或错误计数超过限制,请发送电子邮件。
使用指标 Metrics
ASP.NET Core 的内置指标 是被自动记录的。如何使用这些指标取决于你。下面让我们浏览一些可用的指标。
.NET Aspire 仪表板
.NET Aspire 使用构建可观测性的很有想法的软件栈。Aspire 仪表板包括一个简单、用户友好的界面,用来查看结构化日志、跟踪和指标。Aspire 应用会自动配置为将开发过程中的的遥测数据发送给仪表板。

从这里你可以看到可用的指标数据集合,提供了名称、描述和数值的图形。Aspire UI 包括了指标过滤器。可以使用指标的强大的特性:属性来进行过滤。
每当有数据被记录下来,它会被使用被称为属性的元数据进行标注。例如,http.server.request.duration 记录 HTTP 请求的持续时间,伴随着该请求的属性:server.address, HTTP 请求方法,匹配的路由,响应状态码等等。然后,通过查询属性可以获得有关请求的详细数据:
- 针对应用特定端点的 HTTP 请求持续时间,例如 /product/
- 响应状态码是 4XX 的请求数量
- 一段时间中抛出服务器端异常的请求数量
- 对比 HTTP 与 HTTPS 请求持续时间
- 对比使用 HTTP/1.1 与 HTTP/2 的访问者数量
ASP.NET Core Grafana 仪表板
Grafana 是用来构建仪表板和预警的强大工具。它支持你创建可交互的,可定制的仪表板,它由各种面板、图形和图表所构建。一旦构建完成,仪表板可以将展示遥测所存储的数据。Grafana 是用来监控产品应用的最佳工具之一,仪表板提供了一个关于应用健康和使用状态的实时视图。
Grafana 提供了构建你所需要的仪表板的强大功能,但是构建高质量的仪表板需要一点时间。作为添加各种指标到 .NET 8 的一部分,我们提供了一些预先构建的仪表板,用来监视 ASP.NET Core 应用的健康与活动。

用于 ASP.NET Core 的 Grafana 仪表板在 GitHub 上开源。可以通过 grafana.com 中的下载。你可以直接使用这些仪表板,或者根据你的需求进行定制。
可以通过 .NET Aspire 指标示例应用 来尝试 Grafana + ASP.NET Core。
更多内容
- 不限于内置的 .NET 指标,你可以 创建自定指标
- dotnet-counters 是一个用来监视 .NET 应用的命令行工具, 它可以在后台实时监视应用的性能指标。不需要设置,使得它对于本地的调查或者检查指标测量正常工作非常方便。
- 在 单元测试 中测试指标, ASP.NET Core 集成测试,MetricCollector 和 IMeterFactory 可以组合使用来断言测试数据。
现在就开始尝试
.NET 8, ASP.NET Core Grafana 仪表板和 .NET Aspire 仪表板现在就可以使用。今天就尝试使用指标,并告诉我们你的想法:
- 下载最新的 .NET 8 正式版
- 在你选择的工具中使用指标
- 更多关于 .NET Aspire 仪表板 和 使用入门
- 下载 ASP.NET Core Grafana 仪表板
- 安装 dotnet-counters 命令行工具
希望动手练习一下?请访问位于 Microsoft Learn 中的新的 云原生培训模块
感谢您试用 .NET 8 和指标!
.NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门的更多相关文章
- 在docker中运行ASP.NET Core Web API应用程序
本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...
- 在Linux和Windows的Docker容器中运行ASP.NET Core
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott H ...
- 丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- Docker容器中运行ASP.NET Core
在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了. ...
- docker中运行ASP.NET Core Web API
在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...
- 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- [Asp.Net Core] 1. IIS中的 Asp.Net Core 和 dotnet watch
在基于传统的.NET Framework的Asp.Net Mvc的时候,本地开发环境中可以在IIS中建立一个站点,可以直接把站点的目录指向asp.net mvc的项目的根目录.然后build一下就可以 ...
- windows 服务中托管asp.net core
在windows 服务中托管asp.net core SDK 2.1.300 官方示例 1.添加运行标识符 xml <PropertyGroup> <TargetFramework& ...
- 【Asp.Net Core】在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序
前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...
- IIS中的 Asp.Net Core 和 dotnet watch
在基于传统的.NET Framework的Asp.Net Mvc的时候,本地开发环境中可以在IIS中建立一个站点,可以直接把站点的目录指向asp.net mvc的项目的根目录.然后build一下就可以 ...
随机推荐
- 一生财运三世书财运测算api接口免费版_json格式数据获取
三世书财运是根据生辰八字推算出的一个人今生的财运状况,它认为人的财运受到前世因果的影响,同时也会受到今生行为的影响.这种算命方法起源于佛教的<三世因果经>,据说可以推演一个人的前世.今 ...
- /proc/slabinfo 介绍
slabinfo - version: 2.1 # name <active_objs> <num_objs> <objsize> <objperslab&g ...
- Linux Kernel Utilization Clamping简介
随着linux内核调度技术的不断演进,目前存在多个调度类(stop.deadline.rt.cfs.idle)以满足不同性质和要求的任务(task)的调度需求.对于用户空间来说,完全公平调度器(CFS ...
- os.environ["CUDA_DEVICE_ORDER"] = '0'
这个总结来自:博客 os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # 按照PCI_BUS_ID顺序从0开始排列G ...
- python处理nii文件
第一步安装nibabel,可以使用命令:pip install nibabel 之后: from nibabel.viewers import OrthoSlicer3D as osdimport n ...
- 基于 KubeSphere 的分级管理实践
作者:许伟,航天网信研发工程师 K8s 是容器编排和分布式应用部署领域的领导者,在 K8s 环境中,我们只需要关心应用的业务逻辑,减轻了我们服务器网络以及存储等方面的管理负担.对于一个用户而言,K8s ...
- SpringBoot学习 _02 _配置单数据源(1)
SpringBoot学习 _02 _配置单数据源(1) 1.通过IDEA创建SpringBoot项目 直接到选择依赖这一步,选择如图所示的 五个依赖即可 2.配置文件的编写 此处说明一下,这个数据库连 ...
- ubuntu16.04安装mmdetection库
一,前言 1.1,更新 pip 和 conda下载源 1.2,查看 conda 和 pip 版本 二,MMDetection 简介 三,MMDetection 安装 3.1,依赖环境 3.2,安装过程 ...
- Rust编程与项目实战-结构体
<Rust编程与项目实战>(朱文伟,李建英)[摘要 书评 试读]- 京东图书 (jd.com) 在Rust中,结构体(Struct)是一种自定义数据类型,它允许我们将多个相关的值组合在一起 ...
- PS命令显示进程数,清理僵尸进程
显示系统上所有进程的进程树 ps -ef --forest 显示给定进程的进程树 -C:Select by command name.这个命令会把name指定进程的所有子进程显示出来 [root@lo ...