news 2026/6/10 15:00:02

淘宝返利软件的可观测性架构: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/6/10 10:45:57

农业大数据系统怎样在富文本编辑器中嵌入Excel动态图表?

《Word转存大作战&#xff1a;一个穷学生的CMS升级日记》 一、需求分析与绝望的开始 作为一名月生活费2000还要养女朋友的计科狗&#xff0c;当我看到产品经理&#xff08;其实就是我自己&#xff09;提出的需求时&#xff0c;手里的泡面突然不香了&#xff1a; 核心需求&…

作者头像 李华
网站建设 2026/6/10 11:55:27

nodejs门店商铺店铺租赁租凭平台的设计与实现-vue

文章目录系统架构设计核心功能模块技术亮点性能优化安全机制--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统架构设计 采用前后端分离架构&#xff0c;前端基于Vue.js框架实现用户界面&#xff0c;后端使用Nod…

作者头像 李华
网站建设 2026/6/10 10:42:08

边界值优化在AI翻译测试中的应用:破解术语一致性难题

术语一致性的测试困局 在全球化软件产品的本地化测试中&#xff0c;术语一致性缺陷已成为AI翻译系统的核心痛点。传统测试方法面对多语言场景时&#xff0c;常因术语歧义&#xff08;如"server"被交替译为“服务器/伺服器”&#xff09;、动态语境适应失效等问题&am…

作者头像 李华
网站建设 2026/6/10 10:42:16

‌Appium移动端兼容性测试:结合大模型回归验证策略

兼容性测试的挑战与机遇‌移动应用兼容性测试是确保应用在不同设备&#xff08;如Android/iOS&#xff09;、系统版本、屏幕分辨率和网络环境下稳定运行的关键环节。传统方法依赖人工遍历测试用例&#xff0c;效率低且易遗漏边缘场景。例如&#xff0c;Android碎片化问题导致需…

作者头像 李华
网站建设 2026/5/30 20:31:11

计算机毕业设计springboot金色梦想文化培训学校网络教学平台 基于SpringBoot的“逐梦”文化培训机构在线教学管理与资源分享系统 SpringBoot驱动的“青云”文化教育学校云端课堂与教

计算机毕业设计springboot金色梦想文化培训学校网络教学平台q8qtv &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 在“停课不停学”与终身学习理念的双重推动下&#xff0c;传…

作者头像 李华