ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

十二、可观测性

十二、可观测性 1. 是什么 / 怎么开Spring AI 基于 Spring 生态的 Micrometer Observation对 AI 组件做指标metrics 链路追踪tracing。开关加 Actuator 依赖即可。dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependency被插桩的组件ChatClient含 Advisor、ChatModel、EmbeddingModel、ImageModel、VectorStore。规则低基数键→ 指标 追踪都有高基数键→ 只在追踪里避免指标维度爆炸。想看数据还要暴露端点management:endpoints:web:exposure:include:health,metrics,prometheusendpoint:health:show-details:always2. 各组件的观测点与关键标签组件观测名低基数键进指标高基数键只在 traceChatClientspring.ai.chat.clientgen_ai.operation.nameframework、gen_ai.systemspring_ai、spring.ai.chat.client.stream、spring.ai.kindchat_clientgen_ai.prompt、spring.ai.chat.client.advisors、spring.ai.chat.client.conversation.id、spring.ai.chat.client.tool.namesAdvisorspring.ai.advisorgen_ai.operation.name、gen_ai.system、spring.ai.kindadvisorspring.ai.advisor.name、spring.ai.advisor.orderChatModelgen_ai.client.operationgen_ai.request.model、gen_ai.response.model、gen_ai.system温度/top_p/max_tokens 等请求参数、gen_ai.response.finish_reasons、gen_ai.usage.input_tokens、gen_ai.usage.output_tokens、gen_ai.prompt、gen_ai.completionTool 调用spring.ai.toolgen_ai.systemspring_ai、spring.ai.kindtool_call、spring.ai.tool.definition.namespring.ai.tool.definition.description、spring.ai.tool.definition.schema、spring.ai.tool.call.arguments、spring.ai.tool.call.resultEmbeddingModelgen_ai.client.operation同 ChatModelgen_ai.request.embedding.dimensions、gen_ai.usage.*VectorStoredb.vector.client.operationdb.operation.name(add/delete/query)、db.system(…)、spring.ai.kindvector_storedb.vector.query.content、db.vector.query.top_k、db.vector.query.similarity_threshold、db.vector.query.filter、db.vector.dimension_count、db.vector.query.response.documentsdb.system取值pg_vector / azure / cassandra / chroma / elasticsearch / milvus / neo4j / opensearch / qdrant / redis / typesense / weaviate / pinecone / oracle / mongodb / gemfire / hana / simpleSimpleVectorStore→simple。3. 敏感数据开关默认全部关闭提示词、补全、工具参数、检索结果通常又大又敏感默认不导出需要显式打开生产慎开spring:ai:chat:client:observations:log-prompt:false# ChatClient 提示词log-completion:false# ChatClient 补全observations:log-prompt:false# ChatModel 提示词log-completion:false# ChatModel 补全include-error-logging:falseimage:observations:log-prompt:false# 图像提示vectorstore:observations:log-query-response:false# 向量检索返回的文档tools:observations:include-content:false# 工具调用参数 结果⚠ 1.0.0-RC1 重命名旧写法已失效旧属性新属性spring.ai.chat.client.observations.include-prompt...log-promptspring.ai.chat.observations.include-prompt...log-promptspring.ai.chat.observations.include-completion...log-completionspring.ai.image.observations.include-prompt...log-promptspring.ai.vectorstore.observations.include-query-response...log-query-responsespring.ai.chat.client.observations.include-input已弃用...log-prompt4. 已弃用的高基数键别再按老的查spring.ai.chat.client.system.text/system.params/user.text/user.params→ 统一看gen_ai.promptspring.ai.chat.client.tool.function.names/tool.function.callbacks→spring.ai.chat.client.tool.namesspring.ai.chat.client.advisor.params→ 会话 ID 看spring.ai.chat.client.conversation.idspring.ai.advisor.typeBEFORE/AFTER/AROUND→ 已无意义所有 advisor 同一类型5. Prometheus 指标速查Micrometer 用点号命名如gen_ai.client.operationPrometheus 导出为下划线 标准后缀计时器 →base_seconds_count/_seconds_sum/_seconds_max/_active_count计数器 →base_total基础名导出的时间序列含义gen_ai.client.operationgen_ai_client_operation_seconds_{count,sum,max}、gen_ai_client_operation_active_count模型调用耗时 / 并发数ChatClientgen_ai_chat_client_operation_seconds_{count,sum,max}、gen_ai_chat_client_operation_active_countChatClient 调用耗时 / 并发数gen_ai.client.token.usagegen_ai_client_token_usage_totalToken 消耗标签gen_ai_token_typeinput/output/totaldb.vector.client.operationdb_vector_client_operation_seconds_{count,sum,max}、db_vector_client_operation_active_count向量库 add/delete/query 耗时标签db_operation_name、db_system、spring_ai_kindvector_store怎么读*_active_count 正在进行的操作数看并发/负载_seconds_sum / _seconds_count 平均延迟_seconds_max 上次抓取以来的最大耗时高水位6. 模型支持范围不是所有厂商都有观测ChatModelAnthropic、Azure OpenAI、Mistral AI、Ollama、OpenAI、Vertex AI、MiniMax、Moonshot、QianFan、Zhipu AIEmbeddingModelAzure OpenAI、Mistral AI、Ollama、OpenAIImageModelOpenAI本项目用的是 OpenAI 协议兼容的 DeepSeek走spring-ai-starter-model-openai→ ChatModel / EmbeddingModel 观测都可用gen_ai.system记为 openai。7. 落地建议生产环境默认别开log-prompt/log-completion/include-content/log-query-response只在排查问题时临时打开。排查顺序先看gen_ai_client_operation_seconds_max哪次慢→ 再看 trace 里的gen_ai.prompt、db.vector.query.content慢在哪。想看分布式链路还需要 tracing 桥接micrometer-tracing-bridge-otel exporter否则只有指标没有 trace高基数键也就看不到。
返回列表