Prometheus 监控 .NET 应用因其云原生兼容性与强大查询能力成为理想选择,通过 Prometheus.Client 等库暴露 /metrics 端点,配置 scrape_job 抓取指标,可收集 HTTP 请求、延迟、GC 等数据并支持自定义指标,结合 Grafana 可视化与 PromQL 告警实现完整监控。

Prometheus 是一个开源的系统监控和报警工具包,最初由 SoundCloud 开发,现由 Cloud Native Computing Foundation(CNCF)维护。它通过定期从目标服务拉取(pull)指标数据,存储时间序列数据,并支持强大的查询语言 PromQL,用于分析和告警。
.NET 应用(包括 .NET Core 和 .NET 5+)在现代云原生架构中广泛使用。要实现可观测性,需要收集 CPU、内存、请求延迟、HTTP 请求次数等关键指标。Prometheus 能很好地集成到 Kubernetes 和微服务环境中,是监控 .NET 服务的理想选择。
要在 .NET 应用中启用 Prometheus 监控,你需要让应用暴露符合 Prometheus 格式的 HTTP 端点(通常是 /metrics)。推荐使用 Prometheus.Client 或 App.Metrics 这类库。
步骤如下:
Prometheus.Client.AspNetCore
示例代码(.NET 6+):
var builder = WebApplication.CreateBuilder(args); <p>// 添加 Prometheus 服务 builder.Services.AddMetrics();</p><p>var app = builder.Build();</p><p>// 启用指标收集中间件 app.UseRouting(); app.UseHttpMetrics(); // 自动收集 HTTP 请求指标</p><p>// 暴露 /metrics 端点 app.MapMetrics();</p><p>app.Run();
运行后,访问 http://localhost:端口/metrics 就能看到类似以下格式的指标:
# HELP http_requests_total Total number of HTTP requests
# TYPE http_requests_total counter
http_requests_total{method="GET",status="200"} 42
配置 Prometheus 服务器,让它定期从你的 .NET 应用拉取数据。
修改 prometheus.yml 配置文件:
scrape_configs:
- job_name: 'dotnet-app'
static_configs:
- targets: ['your-dotnet-app-host:port']
例如,如果 .NET 应用运行在本地 5000 端口:
scrape_configs:
- job_name: 'dotnet-app'
static_configs:
- targets: ['localhost:5000']
启动 Prometheus 后,它会每隔几秒(默认 15 秒)访问 /metrics 端点,抓取并存储指标。
默认情况下,你可以收集:
你也可以手动记录指标:
var counter = Metrics.CreateCounter("orders_created_total", "Total number of orders created");
counter.Inc();
Prometheus 自带简单的查询界面,但通常配合 Grafana 使用,创建漂亮的仪表盘。你可以用 PromQL 查询:
rate(http_requests_total[5m])
来查看每秒请求数。同时可在 Prometheus 中配置告警规则,比如当错误率超过阈值时通知团队。
基本上就这些。只要在 .NET 应用中启用指标暴露,再让 Prometheus 抓取,就能实现完整的监控链路。不复杂但容易忽略细节,比如防火墙、路径映射或标签命名规范。
以上就是什么是 Prometheus,如何监控 .NET 应用指标?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号