news 2026/5/13 13:46:54

淘宝返利软件的可观测性架构: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/5/11 14:43:36

复合材料成型仿真案例大全|覆盖模压 / RTM / 固化 / SMC,实操步骤直接抄

封神🔥PAM-COMPOSITE 仿真案例大全|覆盖模压 / RTM / 固化 / SMC,实操步骤直接抄 做复合材料成型仿真的工程师、高校同仁,是不是都有同一个痛点?—— 想学 PAM-COMPOSITE 却缺真实案例,小白对着软件无从下手,老手遇到复杂工艺(如链式仿真、共固化变形)也得反复试错;…

作者头像 李华
网站建设 2026/5/11 15:46:02

【期货量化实战】期货量化交易策略实盘优化技巧(Python量化)

一、前言 实盘交易与回测存在很大差异&#xff0c;实盘优化是量化策略成功的关键。本文总结实盘交易中的常见问题和优化技巧&#xff0c;帮助策略在实盘中取得更好表现。 本文将介绍&#xff1a; 回测与实盘的差异滑点与手续费处理订单执行优化风险控制优化实盘监控与调试 …

作者头像 李华
网站建设 2026/5/11 15:46:23

‌用AI模拟第三方API超时:韧性指标(MTTF)优化指南

‌一、MTTF的核心价值与第三方API挑战‌ MTTF&#xff08;Mean Time To Failure&#xff09;衡量系统无故障运行的平均时间&#xff0c;是评估软件韧性的关键指标&#xff0c;直接影响用户体验和业务连续性。其倒数代表故障率&#xff0c;高MTTF意味着更可靠的系统。在微服务架…

作者头像 李华
网站建设 2026/5/7 0:40:21

Java 代码注释的艺术:构建高质量、可读性与架构级文档的终极指南

1.概述&#xff1a;代码即文学&#xff0c;注释即灵魂 在企业级 Java 后端开发的浩瀚工程中&#xff0c;代码质量往往不仅仅取决于算法的复杂度或架构的解耦程度&#xff0c;更取决于其可读性与可维护性。作为一名深耕 Java 技术栈多年的开发者&#xff0c;我们深知“代码是写…

作者头像 李华
网站建设 2026/5/12 17:18:52

闭眼入!8个一键生成论文工具测评:本科生毕业论文+开题报告写作全攻略

在当前学术写作日益数字化的背景下&#xff0c;本科生在撰写毕业论文和开题报告时面临诸多挑战&#xff0c;如选题思路不清晰、文献资料查找困难、格式排版繁琐以及内容原创性难以保障。为帮助广大学子高效应对这些难题&#xff0c;我们基于2026年的实测数据与真实用户反馈&…

作者头像 李华