在此窗格中:
我正在运行来自 Microsoft 的 示例应用程序。这定义了一个计数器
static Meter s_meter = new Meter("HatCo.Store");
static Counter<int> s_hatsSold = s_meter.CreateCounter<int>("hatco.store.hats_sold");
并运行一个循环来递增计数器。我希望计数器出现在“计数器”窗格中。不是吗?
(我还尝试对现有 ASP.NET 应用程序进行计数器改造,但这些计数器根本不显示,即使是 System.Runtime 计数器,甚至使用 dotnet 计数器也是如此。我担心这会更难诊断。 )
有谁知道计数器监控实际上是如何工作并连接到流程的?管道还是插座?您可以在程序中查看自己的计数器吗?
在相关的 MS 文档中,查看自定义计数器的推荐方法是使用 dotnet-counters 工具,并且在“诊断工具”面板中无法观察到自定义计数器。为了阐明该过程,我捕获了实现中的关键时刻,展示了如何使用 dotnet-counters 来显示这些指标。
1.创建一个 ASP.NET Web 应用程序项目。
3.输入
dotnet tool update -g dotnet-counters
安装dotnet工具。
4.
将 Program.cs 的内容替换为以下代码:
using System.Diagnostics.Metrics;
class Program
{
static Meter s_meter = new("HatCo.HatStore", "1.0.0");
static Counter<int> s_hatsSold = s_meter.CreateCounter<int>("hats-sold");
static void Main(string[] args)
{
var rand = Random.Shared;
Console.WriteLine("Press any key to exit");
while (!Console.KeyAvailable)
{
//// Simulate hat selling transactions.
Thread.Sleep(rand.Next(100, 2500));
s_hatsSold.Add(rand.Next(0, 1000));
}
}
}