如何在Vertex AI中实现容器日志的结构化处理?
Vertex AI 日志字段扁平化处理方法
你在Vertex AI中部署模型后,默认采集的日志会把结构化内容统一封装在jsonPayload字段内部的message字段中,你可以通过以下几种方式实现message字段的提取、将内部键直接提升到jsonPayload层级:

方案1:配置Cloud Logging接收规则(最优,实时永久生效)
该方案会在日志入库阶段自动完成字段解析,后续查询和分析无需额外操作:
- 打开Google Cloud控制台,进入「Logging > 日志接收」页面,点击创建新的接收规则
- 配置日志筛选条件,仅匹配需要处理的Vertex AI端点日志:
resource.type="aiplatform_endpoint" AND jsonPayload.message:* - 在处理步骤中添加「解析JSON」规则,指定解析源字段为
jsonPayload.message,解析结果输出到jsonPayload层级 - 可选添加额外处理步骤,删除冗余的
jsonPayload.message字段,降低日志存储成本 - 保存规则后,新产生的Vertex AI日志会自动完成字段扁平化处理
方案2:查询时动态解析(适合临时分析场景)
如果不想修改全局日志入库规则,可在查询时通过解析函数直接提取message内的字段,示例查询语句如下:
SELECT timestamp, resource.labels.endpoint_id AS endpoint_id, -- 直接提取message内的自定义字段 JSON_VALUE(jsonPayload.message, '$.status') AS request_status, JSON_VALUE(jsonPayload.message, '$.latency') AS request_latency, JSON_VALUE(jsonPayload.message, '$.user_id') AS user_id FROM `your_project_id.global._Default` WHERE resource.type="aiplatform_endpoint" AND jsonPayload.message IS NOT NULL AND timestamp >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
方案3:源头修改日志输出格式
如果你使用的是自定义模型服务镜像,可以直接调整服务的日志打印逻辑:不要将结构化JSON序列化为字符串后输出,直接打印标准JSON结构,Vertex AI的日志采集组件会自动识别JSON中的所有键,直接写入jsonPayload字段下,从根源避免message字段封装的问题。
内容的提问来源于stack exchange,提问作者Tsvi Sabo
相关产品推荐
相关产品推荐

