news 2026/9/3 2:35:37

淘宝返利软件的可观测性架构: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/8/26 9:54:23

无需编程!轻松打造全能活动报名与表单收集系统源码

温馨提示&#xff1a;文末有资源获取方式 在当今数字化的商业环境中&#xff0c;高效的信息收集和活动管理成为各行各业的核心需求。为此&#xff0c;我们隆重推出一款基于先进技术开发的万能活动在线报名自定义表单系统源码。该系统设计灵活&#xff0c;功能全面&#xff0c;能…

作者头像 李华
网站建设 2026/9/2 22:28:53

CVE-2025-3248 Langflow远程代码执行漏洞利用工具

CVE-2025-3248 Langflow RCE 漏洞利用工具 项目概述 CVE-2025-3248是一个严重的无需认证的远程代码执行漏洞&#xff0c;影响Langflow&#xff08;一个流行的用于构建LLM应用程序的低代码框架&#xff09;。该漏洞源于不安全地使用了Python内置的exec()函数来评估用户提供的输…

作者头像 李华
网站建设 2026/9/2 13:21:05

测试数据即服务(TDaaS)实战:市场规模破百亿的入门教程

随着软件交付速度加快&#xff0c;测试数据管理已成为制约效率的关键瓶颈。传统方式如手动准备数据耗时长达2.5天/次&#xff0c;且42%的缺陷源于数据与生产环境脱节。测试数据即服务(TDaaS)通过云原生架构&#xff0c;将数据生成、脱敏与供给封装为可调用接口&#xff0c;实现…

作者头像 李华
网站建设 2026/9/2 22:05:35

导师严选8个降AIGC平台,千笔帮你轻松降AI率

AI降重工具&#xff1a;让论文更自然&#xff0c;让查重更轻松 在当前高校教育中&#xff0c;随着AI技术的广泛应用&#xff0c;越来越多的学生开始使用AI辅助写作。然而&#xff0c;随之而来的AIGC率过高问题也让许多学生感到困扰。如何在保持论文逻辑与语义不变的前提下&…

作者头像 李华
网站建设 2026/9/2 22:39:44

Jupyter学习中的问题--FileNotFoundError

**import pandas as pd pd.read_excel("Users/machh/Downloads/data_L/course_participants.xlsx")错误在哪里核心问题修正与关键说明 路径错误&#xff08;最核心问题&#xff09; 路径 Users/machh/… 缺少根目录前缀 /&#xff0c;属于相对路径&#xff0c;Python…

作者头像 李华