.NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门

原文地址:https://devblogs.microsoft.com/dotnet/introducing-aspnetcore-metrics-and-grafana-dashboards-in-dotnet-8/

指标数据报告关于你的应用的诊断信息。.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 仪表板现在就可以使用。今天就尝试使用指标,并告诉我们你的想法:

希望动手练习一下?请访问位于 Microsoft Learn 中的新的 云原生培训模块

感谢您试用 .NET 8 和指标!

.NET 8 中的 ASP.NET Core 指标与 Grafana 仪表板入门的更多相关文章

  1. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

  2. 在Linux和Windows的Docker容器中运行ASP.NET Core

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott H ...

  3. 丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

  4. Docker容器中运行ASP.NET Core

    在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了. ...

  5. docker中运行ASP.NET Core Web API

    在docker中运行ASP.NET Core Web API应用程序 本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过 ...

  6. 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

    前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...

  7. [Asp.Net Core] 1. IIS中的 Asp.Net Core 和 dotnet watch

    在基于传统的.NET Framework的Asp.Net Mvc的时候,本地开发环境中可以在IIS中建立一个站点,可以直接把站点的目录指向asp.net mvc的项目的根目录.然后build一下就可以 ...

  8. windows 服务中托管asp.net core

    在windows 服务中托管asp.net core SDK 2.1.300 官方示例 1.添加运行标识符 xml <PropertyGroup> <TargetFramework& ...

  9. 【Asp.Net Core】在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

    前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...

  10. IIS中的 Asp.Net Core 和 dotnet watch

    在基于传统的.NET Framework的Asp.Net Mvc的时候,本地开发环境中可以在IIS中建立一个站点,可以直接把站点的目录指向asp.net mvc的项目的根目录.然后build一下就可以 ...

随机推荐

  1. 一生财运三世书财运测算api接口免费版_json格式数据获取

    ‌三世书财运是根据生辰八字推算出的一个人今生的财运状况,它认为人的财运受到前世因果的影响,同时也会受到今生行为的影响.‌这种算命方法起源于佛教的<三世因果经>,据说可以推演一个人的前世.今 ...

  2. /proc/slabinfo 介绍

    slabinfo - version: 2.1 # name <active_objs> <num_objs> <objsize> <objperslab&g ...

  3. Linux Kernel Utilization Clamping简介

    随着linux内核调度技术的不断演进,目前存在多个调度类(stop.deadline.rt.cfs.idle)以满足不同性质和要求的任务(task)的调度需求.对于用户空间来说,完全公平调度器(CFS ...

  4. os.environ["CUDA_DEVICE_ORDER"] = '0'

    这个总结来自:博客 os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # 按照PCI_BUS_ID顺序从0开始排列G ...

  5. python处理nii文件

    第一步安装nibabel,可以使用命令:pip install nibabel 之后: from nibabel.viewers import OrthoSlicer3D as osdimport n ...

  6. 基于 KubeSphere 的分级管理实践

    作者:许伟,航天网信研发工程师 K8s 是容器编排和分布式应用部署领域的领导者,在 K8s 环境中,我们只需要关心应用的业务逻辑,减轻了我们服务器网络以及存储等方面的管理负担.对于一个用户而言,K8s ...

  7. SpringBoot学习 _02 _配置单数据源(1)

    SpringBoot学习 _02 _配置单数据源(1) 1.通过IDEA创建SpringBoot项目 直接到选择依赖这一步,选择如图所示的 五个依赖即可 2.配置文件的编写 此处说明一下,这个数据库连 ...

  8. ubuntu16.04安装mmdetection库

    一,前言 1.1,更新 pip 和 conda下载源 1.2,查看 conda 和 pip 版本 二,MMDetection 简介 三,MMDetection 安装 3.1,依赖环境 3.2,安装过程 ...

  9. Rust编程与项目实战-结构体

    <Rust编程与项目实战>(朱文伟,李建英)[摘要 书评 试读]- 京东图书 (jd.com) 在Rust中,结构体(Struct)是一种自定义数据类型,它允许我们将多个相关的值组合在一起 ...

  10. PS命令显示进程数,清理僵尸进程

    显示系统上所有进程的进程树 ps -ef --forest 显示给定进程的进程树 -C:Select by command name.这个命令会把name指定进程的所有子进程显示出来 [root@lo ...