当前位置: 首页 > news >正文

使用Docker、Prometheus和Grafana追踪Spotify指标

在WinampToSpotify项目中添加了.NET Aspire服务默认值和.NET Aspire AppHost后,添加了以下代码以在本地使用Docker Desktop运行Prometheus和Grafana。运行以下代码需要启动Docker Desktop。

// Prometheus容器,用于抓取应用指标
var prometheus = builder.AddContainer("prometheus", "prom/prometheus")
.WithBindMount("./prometheus/prometheus.yml", "/etc/prometheus/prometheus.yml")
.WithEndpoint(port: 9090, targetPort: 9090)
.WithArgs("--config.file=/etc/prometheus/prometheus.yml",
"--web.enable-otlp-receiver");
// 使用Prometheus作为数据源的Grafana容器
var grafana = builder.AddContainer("grafana", "grafana/grafana")
.WithVolume("grafana-storage", "/var/lib/grafana") // 持久化仪表板、用户、数据库
.WithVolume("grafana-provisioning", "/etc/grafana/provisioning", isReadOnly: true) // 可选:预配置YAML/JSON
.WithEndpoint(port: 3000, targetPort: 3000);

prometheus.yml是默认的Prometheus配置:

global:scrape_interval: 15sevaluation_interval: 15s
scrape_configs:- job_name: "otel-collector"static_configs:- targets: ["localhost:9090"]  # 如果使用Docker,请调整,例如 host.docker.internal:9464metrics_path: /metrics

创建了OpenTelemetryLib项目,并创建了一个ServiceCollection扩展方法来配置OTEL导出端点。安装了以下NuGet包:OpenTelemetry、OpenTelemetry.Exporter.Console、OpenTelemetry.Exporter.OpenTelemetryProtocol、OpenTelemetry.Exporter.Prometheus.HttpListener、OpenTelemetry.Instrumentation.Process。

var meterProviderBuilder = Sdk.CreateMeterProviderBuilder().SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("winamptospotifyweb", serviceVersion: "1.0.0")).AddMeter(WinamptoSpotifyMetricsManager.MeterName).AddOtlpExporter((options, metricReader) =>{options.Protocol = OtlpExportProtocol.Grpc; // 4317作为gRPC端口。options.ExportProcessorType = ExportProcessorType.Batch;options.Endpoint = endpoint;metricReader.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = 60000; // 1分钟metricReader.PeriodicExportingMetricReaderOptions.ExportTimeoutMilliseconds = 30000; // 半分钟}) //Aspire Dashboard导出.AddOtlpExporter((exporterOptions, metricReaderOptions) =>{exporterOptions.Endpoint = new Uri("http://localhost:9090/api/v1/otlp/v1/metrics");exporterOptions.Protocol = OtlpExportProtocol.HttpProtobuf;metricReaderOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = 1000;}); //Prometheus导出

创建了Spotify指标类来注册Spotify服务相关的指标。开始跟踪每个文件夹添加的总曲目数。

public class SpotifyServiceMetrics : IWinampToSpotifyWebMetrics
{private readonly ISpotifyService _spotifyService;public SpotifyServiceMetrics(ISpotifyService spotifyService){_spotifyService = spotifyService; }public void RegisterMetrics(Meter meter){var tracksAddedMetric = meter.CreateObservableGauge("winamptospotifyweb.spotifyservice.totaltracksadded", () => _spotifyService.GetPlaylistSummary().TotalTracksAdded,"unitless", "Number of tracks added");        }
}

WinamptoSpotifyMetricsManager类有助于注册指标,该类使用IMeterFactory进行注册。

public WinamptoSpotifyMetricsManager(IEnumerable<IWinampToSpotifyWebMetrics> metrics, IMeterFactory meterFactory)
{_metrics = metrics.ToImmutableList();_meter = meterFactory.Create(new MeterOptions(MeterName));
}/// <summary>
///     注册WinampToSpotify实例中包含的所有自定义指标。
/// </summary>
public void Start()
{foreach (var metric in _metrics){metric.RegisterMetrics(_meter);}
}

winamptospotifyweb.spotifyservice.totaltracksadded 指标已导出到 Aspire Dashboard、Prometheus 和 Grafana。

代码更改可以在 dotnet aspire added 和 opentelemetry and metrics added 提交中找到。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

http://www.jsqmd.com/news/176577/

相关文章:

  • Grounding任务新突破:图文定位精度提升的秘密武器
  • MLCC dc bias character(For infineon)
  • 全球变暖 DFS解 python
  • 抖音创作者激励:孵化一批专注AI科普的网红博主
  • 抖音创作者激励:孵化一批专注AI科普的网红博主
  • 四川省自建房设计公司哪家强?2025最新评测排行榜 + 5 星企业推荐 - 苏木2025
  • UbiComp普适计算:边缘设备上的轻量化部署尝试
  • 批量采购折扣计划:适用于大规模AI项目客户
  • 批量采购折扣计划:适用于大规模AI项目客户
  • 湖南省自建房设计公司哪家强?2026年最新权威靠谱测评榜单抢先看 - 苏木2025
  • YOLOv8网格敏感度anchor匹配机制剖析
  • 多节点训练集群搭建:基于ms-swift的企业级部署方案
  • Nature Machine Intelligence投稿:冲击顶级综合期刊
  • AWQ与GPTQ谁更强?ms-swift量化模块深度评测
  • S7 - 200 PLC程序与MCGS组态构建轴承清洗机控制系统
  • 打工人上班摸魚小說-第一章 卷王猝死,摸鱼系统到账
  • MLCC dc bias character (KYOCERA)
  • 智能合约安全审计的三维测试体系
  • Spring-boot读书笔记一主类看起来无所关联,却能运行完整项目的原因探索
  • MLCC dc bias character
  • 2025-2026广西省贺州市自建房设计公司权威测评排行榜:核心推荐机构深度解析 - 苏木2025
  • 微博话题运营:发起#我的第一个大模型#挑战活动
  • 谁是TOP1?海南省海口市自建房设计公司评测排行榜 + 真实建房案例参考 - 苏木2025
  • 【工业物联网实战】:基于C语言的边缘节点功耗监控与自适应调控方案
  • 打工人上班摸魚小說-第二章 带薪拉屎、策略划水与隐藏技能
  • 告别网盘限速!使用AI镜像站实现大模型文件直链高速下载
  • 2025 RDA年终复盘:从“上海方案”到全球共识,2026年三大战役即将打响
  • Clang内存泄漏检测实战(20年专家经验总结)
  • 揭秘Python调用C代码性能瓶颈:如何用CFFI实现零开销接口调用
  • Cell Reports Physical Science:交叉学科创新潜力展示