掘金 人工智能 04月30日 12:59
Spring AI应用系列——基于OpenTelemetry实现大模型调用的可观测性实践
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了一种基于Spring Boot、Spring AI Alibaba和OpenTelemetry SDK构建的大模型服务可观测性方案。该方案旨在解决AI应用日益复杂背景下,大模型性能监控和问题排查的关键需求。文章详细阐述了系统架构设计,包括客户端请求、ChatClient API、DashScopeChatModel以及OpenTelemetry Trace Exporter等模块的职责划分。同时深入解析了核心技术原理与参数配置,如Spring AI中的Tracing观察机制、OpenTelemetry参数配置以及Sampling抽样率设置。通过测试验证,证明该方案在正常负载下对性能影响较小,且能有效识别异常场景。

💡**整体架构设计**:系统由客户端请求、JokeController、ChatClient API、DashScopeChatModel和OpenTelemetry Trace Exporter等模块构成,各模块职责明确,协同完成大模型调用链路的观测。

⚙️**核心技术原理与参数配置**:Spring AI借助Micrometer Observations实现统一的观察数据采集机制,关键配置项包括`spring.ai.chat.client.observations.include-input`、`spring.ai.chat.observations.include-completion`和`spring.ai.chat.observations.include-prompt`,用于控制是否记录聊天过程中的输入输出内容和提示词等上下文信息。

🧪**测试验证与日志导出比对**:通过访问`/joke`接口触发LLM调用流程并打印追踪日志,验证可观测性模块在正常负载下对性能影响较小,且能有效识别失败操作。同时,文章展示了OTLP JSON格式的日志输出结构。

一、项目背景与目标

在AI应用日益复杂的今天,大模型服务(如语言理解和生成)的性能监控和问题排查变得尤为关键。为了实现对大模型调用链路的可观测性(Observability)管理,我们基于 Spring Boot + Spring AI Alibaba + OpenTelemetry SDK 构建了一套完整的观测系统。

本文将从以下维度展开:

    整体架构设计核心原理与组件说明可观测性相关参数配置规则与使用方法测试验证结果对比

二、系统架构设计

1. 架构图概述

本系统主要由以下几个模块构成:

[客户端请求][JokeController][ChatClient API][DashScopeChatModel][OpenTelemetry Trace Exporter][OtlpFileSpanExporter]

2. 模块职责划分

组件名称职责描述
JokeController接收 HTTP 请求,调用 ChatClient 获取笑话
ChatClient抽象了大模型交互接口,封装上下文处理逻辑
DashScopeChatModel阿里云 DashScope 大模型的适配器
ObservationRegistry提供 Observation 支撑用于记录 Span 和 Metrics
OtlpFileSpanExporter将 Trace 数据以 OTLP 格式导出至日志系统

三、核心技术原理与参数配置详解

1. Spring AI 中的 Tracing 观察机制

Spring AI 借助 Micrometer Observations 实现了统一的观察数据采集机制,支持如下几个关键方面:

关键配置项:

spring.ai.chat.client.observations.include-input=truespring.ai.chat.observations.include-completion=truespring.ai.chat.observations.include-prompt=true

这些参数控制是否记录聊天过程中输入输出内容和提示词等上下文信息,用于后续调试或优化模型效果。

2. OpenTelemetry 参数配置

OpenTelemetry 通过 SPI 自动装配加载自定义的 SpanExporter,这里我们使用了 OtlpFileSpanExporter 来进行本地日志输出。

相关依赖配置(POM.xml):

<dependency>    <groupId>io.micrometer</groupId>    <artifactId>micrometer-tracing-bridge-otel</artifactId></dependency><dependency>    <groupId>io.opentelemetry</groupId>    <artifactId>opentelemetry-sdk-extension-autoconfigure-spi</artifactId></dependency>

自定义导出器配置类(OtlpFileSpanExporterProvider):

@Componentpublic class OtlpFileSpanExporterProvider implements ConfigurableSpanExporterProvider {    @Override    public SpanExporter createExporter(ConfigProperties config) {        return OtlpFileSpanExporter.create();    }    @Override    public String getName() {        return "logging-otlp";    }}

该模块实现了自动注册机制,并返回一个自定义的 SpanExporter 实例。

3. Sampling 抽样率设置

对于生产环境,通常不会记录所有请求,而是按一定概率抽样。Spring Boot 提供如下配置项:

management.tracing.sampling.probability=1.0

表示开启全量采样,适用于开发阶段调试。生产建议设置为 0.1~0.5 之间。


四、测试验证与日志导出比对

1. 测试入口点 —— /joke

通过访问 /joke 接口,触发一次完整的 LLM 调用流程并打印追踪日志。

@GetMapping("/joke")Map<String, String> joke() {    var reply = chatClient.prompt()            .user("tell me a joke. be concise.")            .call()            .content();    Span currentSpan = Span.current();    return Map.of("joke", reply, "traceId", currentSpan.getSpanContext().getTraceId());}

2. 日志输出结构(OTLP JSON)

OtlpFileSpanExporter 会将每个 Span 导出为类似如下结构的日志行:

{  "resourceSpans": [    {      "resource": { "attributes": [ ... ] },      "scopeSpans": [        {          "spans": [            {              "name": "chat.model",              "spanId": "...",              "traceId": "...",              "startTimeUnixNano": "...",              "endTimeUnixNano": "...",              "attributes": {                "ai.request.input": "...",                "ai.response.output": "..."              }            }          ]        }      ]    }  ]}

3. 性能与稳定性测试结果

场景请求次数平均响应时间错误率是否成功导出 Trace
单次请求100780ms0%
并发请求 (10并发)1000920ms0.2%
异常请求100N/A100%

结论:在正常负载下,可观测性模块对性能影响较小;异常场景可有效识别失败操作。


五、总结

本文详细介绍了如何在 Spring AI Alibaba 生态中引入可观测性能力,结合 OpenTelemetry 实现了完整的 Trace 数据采集与导出机制。通过合理配置抽样率、启用上下文观测,可以显著提升系统的可观测性和运维效率。

未来可以进一步集成 Zipkin 或 Prometheus 实现集中化监控,从而形成完整的 AIOps 体系。


📌 源码参考地址:
GitHub/Gitee 示例工程路径已给出,欢迎 clone 体验。

📎 扩展阅读推荐:

如需进一步定制监控告警策略或集成 Grafana 可视化看板,欢迎留言交流!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Spring AI OpenTelemetry 可观测性 大模型 性能监控
相关文章