news 2026/6/15 14:25:34

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用Docker、Prometheus和Grafana追踪Spotify指标

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

// Prometheus容器,用于抓取应用指标varprometheus=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容器vargrafana=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:15sscrape_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。

varmeterProviderBuilder=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=newUri("http://localhost:9090/api/v1/otlp/v1/metrics");exporterOptions.Protocol=OtlpExportProtocol.HttpProtobuf;metricReaderOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds=1000;});//Prometheus导出

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

publicclassSpotifyServiceMetrics:IWinampToSpotifyWebMetrics{privatereadonlyISpotifyService_spotifyService;publicSpotifyServiceMetrics(ISpotifyServicespotifyService){_spotifyService=spotifyService;}publicvoidRegisterMetrics(Metermeter){vartracksAddedMetric=meter.CreateObservableGauge("winamptospotifyweb.spotifyservice.totaltracksadded",()=>_spotifyService.GetPlaylistSummary().TotalTracksAdded,"unitless","Number of tracks added");}}

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

publicWinamptoSpotifyMetricsManager(IEnumerable<IWinampToSpotifyWebMetrics>metrics,IMeterFactorymeterFactory){_metrics=metrics.ToImmutableList();_meter=meterFactory.Create(newMeterOptions(MeterName));}/// <summary>/// 注册WinampToSpotify实例中包含的所有自定义指标。/// </summary>publicvoidStart(){foreach(varmetricin_metrics){metric.RegisterMetrics(_meter);}}

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 13:47:55

RISC-V架构下C语言兼容性难题突破(实战案例+性能对比数据)

第一章&#xff1a;RISC-V架构下C语言兼容性难题突破&#xff08;实战案例性能对比数据&#xff09;在RISC-V架构快速普及的背景下&#xff0c;C语言作为嵌入式系统开发的核心工具&#xff0c;其跨平台兼容性面临新的挑战。由于RISC-V指令集精简且高度可定制&#xff0c;不同厂…

作者头像 李华
网站建设 2026/6/15 13:48:06

企业私有化部署方案:保障数据安全的同时享受AI红利

企业私有化部署方案&#xff1a;保障数据安全的同时享受AI红利 在金融、医疗、政务等对数据敏感性要求极高的行业中&#xff0c;一个现实问题始终困扰着技术决策者&#xff1a;如何在不牺牲数据安全的前提下&#xff0c;真正用上大模型带来的智能升级&#xff1f;将客户信息、内…

作者头像 李华
网站建设 2026/6/15 13:52:51

支持MyBatisPlus的企业级AI系统架构设计思路探讨

支持MyBatisPlus的企业级AI系统架构设计思路探讨 在当今企业智能化转型的浪潮中&#xff0c;大模型已不再是科研实验室里的“黑箱实验”&#xff0c;而是逐步成为支撑客服、知识管理、智能写作等核心业务的关键基础设施。然而&#xff0c;将一个强大的大模型从HuggingFace或Mod…

作者头像 李华
网站建设 2026/6/5 0:01:39

量子算法模拟器容错测试实践指南

一、量子测试的特殊性挑战 错误模型差异 传统软件错误&#xff1a;逻辑漏洞、内存泄漏 量子特有错误&#xff1a;比特翻转&#xff08;Bit-flip&#xff09;、相位翻转&#xff08;Phase-flip&#xff09;、退相干效应 关键指标&#xff1a;量子体积&#xff08;Quantum Volu…

作者头像 李华
网站建设 2026/6/15 11:19:43

为什么你的TPU任务队列总是延迟?C语言级重构方案来了

第一章&#xff1a;为什么你的TPU任务队列总是延迟&#xff1f;TPU&#xff08;Tensor Processing Unit&#xff09;任务队列延迟是许多机器学习工程师在训练大规模模型时面临的常见问题。尽管TPU提供了卓越的计算性能&#xff0c;但若资源调度不当或数据流水线设计不合理&…

作者头像 李华