前提
了解一下asp.net core接入prometheus快速入門
https://blog.csdn.net/qq_36437991/article/details/139064138
新建.net 8空web項目
安裝下面三個包
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.8.0-rc.1" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.8.1" />
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.1" />
創建指標
HatCoMetrics.cs
using System.Diagnostics.Metrics;namespace PrometheusStu03;/// <summary>
/// 紅帽子指標
/// </summary>
public class HatCoMetrics
{private readonly Counter<int> _hatsSold;public HatCoMetrics(IMeterFactory meterFactory){//紅帽子商店var meter = meterFactory.Create("HatCo.Store");//沖帽子商店銷量_hatsSold = meter.CreateCounter<int>("hatco.store.hats_sold",unit:"{hats}",description:"我們商店出售的帽子數量");}/// <summary>/// 增加數量/// </summary>/// <param name="quantity"></param>public void HatsSold(int quantity){_hatsSold.Add(quantity);}
}
指標收集
修改Program.cs
using OpenTelemetry.Metrics;namespace PrometheusStu03;public class Program
{public static void Main(string[] args){var builder = WebApplication.CreateBuilder(args);builder.Services.AddSingleton<HatCoMetrics>();var app = builder.Build();app.UseOpenTelemetryPrometheusScrapingEndpoint();app.MapGet("/", (HatCoMetrics metrics) =>{//可以將銷量存放到數據庫中metrics.HatsSold(1);return "銷售數量加1";});app.Run();}
}
這樣訪問就能增加帽子的銷量了
指標展示
修改Program.cs
using OpenTelemetry.Metrics;namespace PrometheusStu03;public class Program
{public static void Main(string[] args){var builder = WebApplication.CreateBuilder(args);builder.Services.AddSingleton<HatCoMetrics>();builder.Services.AddOpenTelemetry().WithMetrics(builder2 =>{builder2.AddPrometheusExporter();builder2.AddMeter("HatCo.Store");});var app = builder.Build();app.UseOpenTelemetryPrometheusScrapingEndpoint();app.MapGet("/", (HatCoMetrics metrics) =>{//可以將銷量存放到數據庫中metrics.HatsSold(1);return "銷售數量加1";});app.Run();}
}
展示內置指標
builder.Services.AddOpenTelemetry().WithMetrics(builder2 =>{builder2.AddPrometheusExporter();builder2.AddMeter("Microsoft.AspNetCore.Hosting","Microsoft.AspNetCore.Server.Kestrel","HatCo.Store");});
參考
創建指標
.net中的內置指標
asp.net core中的指標
.net中的常見指標
.net core指標收集