.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. 七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用)

    七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用) @ 目录 七,MyBatis-Plus 扩展功能:乐观锁,代码生成器,执行SQL分析打印(实操详细使用) ...

  2. 如何快速定位 Linux Panic 出错的代码行

    问题描述 内核调试中最常见的一个问题是:内核Panic后,如何快速定位到出错的代码行? 就是这样一个常见的问题,面试过的大部分同学都未能很好地回答,这里希望能够做很彻底地解答. 问题分析 内核Pani ...

  3. Java日期时间API系列36-----Jdk8中java.time包中的新的日期时间API类应用,使用LocalTime计算十二时辰。

    十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰.二十四小时和十二时辰对照表:     时辰 时间 24时制 子时 深夜 11:00 - 凌晨 01:00 23:00 - 01 : ...

  4. KubeSphere 多行日志采集方案深度探索 

    作者:大飞哥,视源电子运维工程师,KubeSphere 用户委员会广州站站长 采集落盘日志 日志采集,通常使用 EFK 架构,即 ElasticSearch,Filebeat,Kibana,这是在主机 ...

  5. 不用PLC和板卡,一台电脑就可以控制伺服

    1.前言 大家好!我是付工. EtherCAT是运动控制领域使用最广泛的总线通信协议之一. 如果我们只有一台电脑,能不能直接控制EtherCAT总线伺服呢? 这个是完全可以的. 我们可以在电脑上安装实 ...

  6. 在浏览器输入 URL 回车之后发生了什么(流程图,超详细版)

    前言 这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最近闲的无聊,然后就自己做了一篇笔记,感觉比之前理解更透彻了. 这篇笔记是我这两天看了数十篇文章总结出来的,所以相对 ...

  7. 自学PHP笔记(四) PHP变量和常量

    PHP中变量有普通变量.可变变量和预定义变量,而常量就是普通变量和预定义变量. 1. 变量 在PHP中变量是内存中得一个命名单元,在系统中为程序中每个变量都分配一个存储单元,在这些存储单元中可以存储任 ...

  8. 来看看一台Linux可支持多少个链接 | 漫画

    困惑很多人的并发问题 在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白.那就是一台服务器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题. 很多同学看到这个 ...

  9. dotnet core微服务框架Jimu介绍

    jimu是一个基于.Net6.0 简单易用的微服务框架,参考了很多开源库以及想法,使用了大量的开源库(如 DotNetty, consul.net, Flurl.Http, Json.net, Log ...

  10. EXCEL获取拼音首字母

    Excel 2016 按组合键ALT+F11调出VB窗口--插入--模块(复制代码到新模块中,复制完后始可关闭VB窗口) 复制以下代码到模块中 Function getpychar(char) tmp ...