抖音粉丝群1
『7x24小时有问必答』

AI浪潮下的计算机行业——从业者现状与未来展望
 
介绍
prometheus-net
 是一个用于在 .NET 应用程序中生成和导出指标数据到 Prometheus 的库。支持多种运行时环境,包括:
• .NET Framework 4.6.2
• .NET 6.0
该库提供了丰富的功能,帮助开发者轻松地将应用程序的性能和行为指标暴露给 Prometheus 监控系统。
核心特性内置指标类型
prometheus-net
 支持 Prometheus 的所有主要指标类型,包括:
• Counter(计数器):只能递增或重置的指标,适用于统计请求总数、处理任务数量等。
• Gauge(仪表盘):可以任意变化的指标,适用于表示当前状态,如队列中的任务数量。
• Histogram(直方图):跟踪事件的分布情况,适用于分析请求延迟、响应大小等。
• Summary(摘要):跟踪事件的趋势,适用于记录请求大小、持续时间等。
高级功能
• 操作持续时间测量:通过 
Timer
 测量操作的执行时间,并将结果记录到 Summary 或 Histogram 中。
• 进行中的操作跟踪:使用 
Gauge.TrackInProgress()
 跟踪并发操作的数量。
• 异常计数:通过 
Counter.CountExceptions()
 记录代码执行过程中发生的异常数量,并可选择性过滤特定类型的异常。
标签(Labels)
所有指标都可以使用标签来区分不同的维度。例如,可以通过 HTTP 方法对请求计数器进行分组:
private static readonly Counter RequestCountByMethod = Metrics

    .CreateCounter("myapp_requests_total""Number of requests received, by HTTP method.", labelNames: new[] { "method" });

// 使用标签记录 GET 请求

RequestCountByMethod.WithLabels("GET").Inc();
示例(Exemplars)
prometheus-net
 支持将分布式追踪信息附加到指标上,方便通过 Prometheus 和 Grafana 等工具进行可视化分析。示例功能允许你将 
trace_id
 和 
span_id
 附加到指标上,从而关联到具体的调用链路。
自动指标删除
对于具有高基数(大量不同标签组合)的指标,
prometheus-net
 提供了自动删除机制。你可以通过 
WithManagedLifetime()
 创建具有生命周期管理的指标,当某个指标不再被更新时,会自动从内存中移除。
ASP.NET Core 集成
prometheus-net.AspNetCore
 包含了与 ASP.NET Core 的深度集成,支持以下功能:
• HTTP 请求指标:记录请求总数、并发请求数、请求持续时间等。
• gRPC 请求指标:记录 gRPC 服务的调用次数、持续时间等。
• 健康检查状态指标:将 ASP.NET Core 健康检查的状态暴露为 Prometheus 指标。
• IHttpClientFactory 指标:记录通过 
IHttpClientFactory
 发起的 HTTP 请求的相关信息。
推送网关支持
除了通过 
/metrics
 端点暴露指标外,
prometheus-net
 还支持将指标推送到 Prometheus Pushgateway,适用于短生命周期的任务或无法直接被 Prometheus 抓取的应用场景。
自定义指标发布
如果你需要自定义指标发布的逻辑,
prometheus-net
 提供了灵活的接口,允许你通过 
AddBeforeCollectCallback()
 注册回调函数,在每次收集指标前执行自定义逻辑。
安装与配置NuGet 安装
• 通用用途及 HttpListener/ Pushgateway 支持
Install-Package prometheus-net
• ASP.NET Core 中间件及 Kestrel 独立服务器支持
Install-Package prometheus-net.AspNetCore
• ASP.NET Core 健康检查集成
Install-Package prometheus-net.AspNetCore.HealthChecks
• ASP.NET Core gRPC 集成
Install-Package prometheus-net.AspNetCore.Grpc
• ASP.NET Web API 中间件(.NET Framework)
Install-Package prometheus-net.NetFramework.AspNet
快速入门控制台应用示例
using var server = new Prometheus.KestrelMetricServer(port: 1234);

server.Start();

Console.WriteLine("Open http://localhost:1234/metrics in a web browser.");

Console.WriteLine("Press enter to exit.");

Console.ReadLine();
ASP.NET Core 应用
在 
Startup.Configure()
 方法中启用 Prometheus 中间件:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

    // 启用 Prometheus HTTP 请求指标

    app.UseHttpMetrics();

    // 启用 Prometheus gRPC 请求指标

    app.UseGrpcMetrics();

    // 启用 Prometheus 健康检查指标

    app.UseHealthChecks("/health");

    // 启用 Prometheus 指标端点

    app.UseEndpoints(endpoints =>

    {

        endpoints.MapMetrics();

    });

}
 

如果你觉得这篇文章对你有帮助,欢迎点赞、收藏并分享给更多开发者!让我们一起学习,共同进步!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

Copyright 2010-2015. All rights reserved. 

微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码