news 2026/4/30 1:35:48

淘宝返利软件的可观测性架构:Prometheus与Grafana监控体系搭建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
淘宝返利软件的可观测性架构:Prometheus与Grafana监控体系搭建

淘宝返利软件的可观测性架构:Prometheus与Grafana监控体系搭建

大家好,我是 微赚淘客系统3.0 的研发者省赚客!

在高并发、分布式环境下,淘客系统的稳定性依赖于完善的可观测性能力。微赚淘客系统3.0 基于 Prometheus + Grafana + Spring Boot Actuator 构建了端到端监控体系,覆盖 JVM 指标、HTTP 接口性能、业务关键链路及异常告警,实现“问题可发现、根因可定位、趋势可预测”。

一、Spring Boot 应用暴露指标

首先,在juwatech.cn.rebate模块中集成 Micrometer 与 Actuator:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency>

配置application-prod.yml开启 Prometheus 端点:

management:endpoints:web:exposure:include:health,info,prometheus,metricsendpoint:prometheus:enabled:truehealth:show-details:always

启动后,访问/actuator/prometheus即可获取指标文本,例如:

http_server_requests_seconds_count{method="GET",uri="/api/commission",status="200",} 1245.0 jvm_memory_used_bytes{area="heap",id="G1 Eden Space",} 2.147e8

二、自定义业务指标埋点

针对核心业务如佣金计算、订单同步,我们通过MeterRegistry注入自定义计数器与直方图:

packagejuwatech.cn.rebate.service;importio.micrometer.core.instrument.Counter;importio.micrometer.core.instrument.MeterRegistry;importio.micrometer.core.instrument.Timer;importorg.springframework.stereotype.Service;@ServicepublicclassCommissionCalculationService{privatefinalCountercommissionSuccessCounter;privatefinalCountercommissionFailureCounter;privatefinalTimercommissionProcessTimer;publicCommissionCalculationService(MeterRegistrymeterRegistry){this.commissionSuccessCounter=Counter.builder("rebate.commission.success").description("成功计算佣金次数").register(meterRegistry);this.commissionFailureCounter=Counter.builder("rebate.commission.failure").description("佣金计算失败次数").register(meterRegistry);this.commissionProcessTimer=Timer.builder("rebate.commission.duration").description("佣金计算耗时(秒)").register(meterRegistry);}publicBigDecimalcalculate(LongorderId){returncommissionProcessTimer.recordCallable(()->{try{// 模拟佣金计算逻辑BigDecimalamount=doCalculate(orderId);commissionSuccessCounter.increment();returnamount;}catch(Exceptione){commissionFailureCounter.increment();throwe;}});}privateBigDecimaldoCalculate(LongorderId){// 实际业务逻辑returnnewBigDecimal("12.50");}}

三、Prometheus 配置服务发现

prometheus.yml中配置基于 Kubernetes 的服务发现,自动抓取所有rebate服务实例:

scrape_configs:-job_name:'rebate-app'kubernetes_sd_configs:-role:podrelabel_configs:-source_labels:[__meta_kubernetes_pod_label_app]action:keepregex:rebate-system-source_labels:[__meta_kubernetes_pod_annotation_prometheus_io_scrape]action:keepregex:true-source_labels:[__meta_kubernetes_pod_ip]target_label:__address__replacement:$1:8080-source_labels:[__meta_kubernetes_namespace]target_label:namespace

确保 Pod 注解包含:

metadata:labels:app:rebate-systemannotations:prometheus.io/scrape:"true"

四、Grafana 仪表盘配置

导入或创建以下关键面板:

  • JVM 内存与 GC:使用JVM (Micrometer)官方模板(ID: 4701)
  • HTTP 请求延迟分布:查询语句:
    histogram_quantile(0.95, rate(http_server_requests_seconds_bucket{job="rebate-app"}[5m]))
  • 业务成功率
    rate(rebate_commission_success_total[5m]) / (rate(rebate_commission_success_total[5m]) + rate(rebate_commission_failure_total[5m]))

同时配置告警规则,例如接口错误率突增:

# alert.rules.ymlgroups:-name:rebate-alertsrules:-alert:HighCommissionErrorRateexpr:rate(rebate_commission_failure_total[5m])>0.1for:2mlabels:severity:criticalannotations:summary:"佣金计算失败率过高"description:"过去5分钟失败率超过10%,当前值:{{ $value }}"

在 Prometheus 中加载该规则:

rule_files:-"alert.rules.yml"

五、日志与链路追踪联动

虽然本文聚焦指标监控,但实际生产中需结合 Loki(日志)与 Jaeger(链路)。我们在关键方法添加 Trace ID 日志:

importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.web.filter.OncePerRequestFilter;publicclassTraceIdFilterextendsOncePerRequestFilter{privatestaticfinalLoggerlog=LoggerFactory.getLogger(TraceIdFilter.class);@OverrideprotectedvoiddoFilterInternal(HttpServletRequestrequest,HttpServletResponseresponse,FilterChainfilterChain)throwsIOException,ServletException{StringtraceId=UUID.randomUUID().toString().replace("-","").substring(0,16);MDC.put("traceId",traceId);log.info("Start request: {} {}",request.getMethod(),request.getRequestURI());try{filterChain.doFilter(request,response);}finally{MDC.clear();}}}

Grafana 中可通过 Explore 关联日志与指标,实现“从告警 → 指标 → 日志 → 代码”的完整排查链路。

本文著作权归 微赚淘客系统3.0 研发团队,转载请注明出处!

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

从码农到乡村AI教育家:我的鹤岗实验

代码之外&#xff0c;屏幕之后 在软件测试的领域里&#xff0c;我们习惯于与代码、缺陷、用例、自动化脚本为伍。我们的世界由精确的逻辑、可复现的步骤和追求“零缺陷”的理想构成。我们深知技术的强大&#xff0c;也洞悉其脆弱性。然而&#xff0c;当2025年底&#xff0c;我…

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

nodejs考研备考学习互助打卡系统

文章目录系统概述核心功能技术实现应用场景--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 Node.js考研备考学习互助打卡系统是一个基于Node.js开发的在线平台&#xff0c;旨在帮助考研学生制定学习计划、…

作者头像 李华
网站建设 2026/4/28 21:46:52

开源活动表单系统源码 带完整的搭建部署教程

温馨提示&#xff1a;文末有资源获取方式当业务增长对个性化管理工具的需求日益迫切时&#xff0c;拥有一套可自主掌控的数字化系统变得至关重要。一款功能完备的万能活动在线报名自定义表单系统源码&#xff0c;为此提供了绝佳的起点。它不仅仅是一个“即用型”工具&#xff0…

作者头像 李华
网站建设 2026/4/22 0:15:52

【期货量化进阶】期货量化交易策略交易时机选择(Python量化)

一、前言 交易时机的选择直接影响策略表现。选择合适的交易时机可以降低交易成本、提高成交质量、减少滑点损失。本文将介绍如何识别和选择最佳交易时机。 本文将介绍&#xff1a; 交易时机的重要性市场微观结构分析流动性评估波动率时机选择时间窗口优化 二、为什么选择天…

作者头像 李华
网站建设 2026/4/26 18:39:36

合思AI:聚合全域优势,重塑企业费控数智新生态

在数字经济深度渗透的今天&#xff0c;企业费控管理正从“流程合规”向“效率提升成本优化业财融合”三重升级&#xff0c;AI技术成为破解财务痛点、激活管理效能的核心引擎。立足行业实践&#xff0c;合思AI整合头部大模型产品的核心优势&#xff0c;以“全场景覆盖、全流程智…

作者头像 李华