news 2026/4/16 13:38:38

使用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/4/12 18:54:08

JavaScript调用示例发布:web端直连大模型推理引擎

JavaScript调用示例发布&#xff1a;web端直连大模型推理引擎 在今天这个AI应用快速落地的时代&#xff0c;越来越多的产品希望将大语言模型的能力嵌入到网页中——比如一个能实时回答问题的智能客服界面、一个自动生成图文内容的创作工具&#xff0c;或者一个供学生体验对话式…

作者头像 李华
网站建设 2026/4/16 12:13:08

基于深度学习的老照片上色方案:DDColor实战案例分析

基于深度学习的老照片上色方案&#xff1a;DDColor实战案例分析 在泛黄的相纸边缘微微卷起&#xff0c;黑白影像中祖辈凝视的眼神却依然清晰——这些承载着记忆的老照片&#xff0c;正因时间侵蚀而褪去色彩。如何让它们重新焕发生机&#xff1f;过去&#xff0c;这需要专业画师…

作者头像 李华
网站建设 2026/4/15 15:30:36

EvalScope评测实战:C-Eval/CMMLU/MMLU一键跑分

EvalScope评测实战&#xff1a;C-Eval/CMMLU/MMLU一键跑分 在大模型研发日益“工业化”的今天&#xff0c;一个常被忽视却至关重要的问题浮出水面&#xff1a;我们如何快速、准确地判断一个模型到底“行不行”&#xff1f; 过去&#xff0c;评估一个语言模型的性能可能意味着…

作者头像 李华
网站建设 2026/4/16 12:13:29

Markdown转Word文档:保留格式并智能润色内容

一锤定音&#xff1a;基于 ms-swift 的大模型全生命周期自动化实践 在AI研发门槛不断抬升的今天&#xff0c;一个70亿参数的语言模型动辄需要上百GB显存、数十个依赖库版本精准匹配、成百上千行训练脚本——这对大多数开发者而言无异于一场“工程噩梦”。更别提还要处理多模态…

作者头像 李华
网站建设 2026/4/8 22:20:45

从零构建无人机数据采集系统:C语言工程师必须掌握的7个关键步骤

第一章&#xff1a;从零构建无人机数据采集系统概述现代物联网与边缘计算的发展推动了无人机在农业、环境监测和城市巡检等领域的广泛应用。构建一套完整的无人机数据采集系统&#xff0c;不仅需要考虑飞行平台的稳定性&#xff0c;还需集成传感器、通信模块与地面站软件&#…

作者头像 李华