asp.net core接入prometheus2-自定义指标

前提

了解一下asp.net core接入prometheus快速入门
https://blog.csdn.net/qq_36437991/article/details/139064138

新建.net 8空web项目

安装下面三个包

xml 复制代码
<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

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

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

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();
    }
}

展示内置指标

cs 复制代码
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指标收集

相关推荐
玖石书20 小时前
ASP.NET Core迁移Spring系列:运行时与 GC 篇
后端·spring·asp.net
天天进步20151 天前
UI-TARS 源码解析 #14:parse_action_to_structure_output:从 Thought/Action 文本到动作字典
ui
_ZHOURUI_H_2 天前
Unity MyFramework 用法说明(二十五):使用 AtlasManager 统一管理图集与 Sprite 引用
ui·unity·游戏引擎·unity3d·游戏开发
不如摸鱼去2 天前
Wot UI 2.3.0 发布:二维码组件来了,Open Wot 与 wot-starter 同步更新
前端·ui·微信小程序·前端框架·uni-app
玖石书2 天前
ASP.NET Core 迁移至 Spring系列:类库框架篇
java·后端·asp.net
玖石书2 天前
ASP.NET Core 迁移至 Spring系列:编译生态篇
后端·spring·asp.net
玖石书2 天前
ASP.NET Core 迁移至 Spring系列:语言基础篇
spring·asp.net·技术栈迁移
测试开发技术4 天前
AI 测试提效 | 告别手工写脚本,分享我的 Playwright + Skill 批量生成 UI 自动化脚本方案
自动化测试·人工智能·ui·自动化·agent·skill·ai测试
吾儿良辰4 天前
Flutter 迎来重大变革:Material 设计系统拆分,迈向更开放的 UI 框架
javascript·flutter·ui
兰亭妙微UI设计公司4 天前
兰亭妙微精益 UX 设计实战指南:以轻量化迭代消除设计资源浪费
ui