news 2026/4/24 7:38:09

使用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/24 1:58:47

HuggingFace镜像网站提供模型SHA256校验值

HuggingFace镜像网站提供模型SHA256校验值 在大模型研发日益工程化的今天&#xff0c;一个看似不起眼的细节正在悄然改变开发者的日常&#xff1a;当你从国内镜像站下载一个70亿参数的大语言模型时&#xff0c;页面上不再只有文件大小和下载链接&#xff0c;而是多了一串64位的…

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

仅1%人知道的秘密:让C语言WASM性能提升300%的编译参数组合

第一章&#xff1a;Shell脚本的基本语法和命令Shell脚本是Linux/Unix系统中自动化任务的核心工具&#xff0c;通过编写可执行的文本文件&#xff0c;用户能够组合命令、控制流程并处理数据。它运行在命令行解释器&#xff08;如Bash&#xff09;之下&#xff0c;具备轻量、高效…

作者头像 李华
网站建设 2026/4/18 10:16:57

还在熬夜赶问卷论文?8款AI工具1天5万字+真实参考文献!

还在为论文DDL&#xff08;截止日期&#xff09;而焦虑失眠吗&#xff1f;还在对着空白文档&#xff0c;一个字都憋不出来&#xff0c;却要硬着头皮通宵“码字”吗&#xff1f;还在被导师的“天书”批注折磨得抓耳挠腮&#xff0c;却不知道如何下手修改吗&#xff1f;如果你对以…

作者头像 李华
网站建设 2026/4/23 12:27:50

别再用RTOS凑合了!纯C语言打造硬实时控制系统的秘密路径

第一章&#xff1a;别再用RTOS凑合了&#xff01;纯C语言打造硬实时控制系统的秘密路径 在对响应时间要求严苛的工业控制、电机驱动或电力电子应用中&#xff0c;传统RTOS的调度延迟和上下文切换开销往往成为性能瓶颈。越来越多的工程师开始回归本质——使用纯C语言构建硬实时控…

作者头像 李华
网站建设 2026/4/23 23:11:01

遇到问题怎么办?两种解决方案立即排障

遇到问题怎么办&#xff1f;两种解决方案立即排障 在大模型研发日益普及的今天&#xff0c;越来越多的研究者和工程师开始尝试训练或微调自己的语言模型。但现实往往不如预期顺利&#xff1a;模型下载失败、CUDA显存溢出、依赖包冲突、API无法启动……这些问题频繁打断开发节奏…

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

C语言实现无人机多传感器数据融合(工业级稳定性方案曝光)

第一章&#xff1a;C语言在无人机系统中的核心作用在现代无人机系统开发中&#xff0c;C语言因其高效性、可移植性和对硬件的直接控制能力&#xff0c;成为嵌入式飞行控制系统的核心编程语言。其接近硬件的特性使得开发者能够精确管理内存、优化执行效率&#xff0c;并实时响应…

作者头像 李华