Gemini Enterprise Agent Platform 中的智能体可观测性功能可让您全面了解已部署的智能体和 Model Context Protocol (MCP) 服务器的性能、行为和运行状况。通过监控关键指标、跟踪执行路径以及整体观察多智能体系统,您可以诊断问题、优化资源消耗并提高智能体的可靠性。
本文档简要介绍了 Gemini Enterprise Agent Platform 中提供的可观测性工具,包括系统级拓扑、单个代理监控和 MCP 服务器指标。
遥测设置
如需填充这些可观测性信息中心、拓扑和跟踪记录,您必须将代理配置为以 OpenTelemetry 格式将遥测数据发送到 Google Cloud Observability 中的存储系统。
确保您的智能体和 MCP 服务器环境已正确配置,以便发出这些数据。内置 Google Cloud 组件会自动以 OpenTelemetry 格式发出遥测数据。例如,Model Armor 会原生发出标准化遥测数据,让您能够直接在跟踪数据中无缝公开和监控实时政策拦截,而无需任何自定义插桩。
如需了解代理遥测设置说明和要求,请参阅以下资源:
- 如需对使用 ADK 构建的代理进行插桩,请参阅使用 OpenTelemetry 对 ADK 应用进行插桩。
- 如需在 Gemini Enterprise Agent Platform 上的 Agent Runtime 中对非 ADK 构建的智能体进行插桩,请参阅面向 AI 智能体开发者的可观测性。
- 如需了解 MCP 服务器遥测,请参阅使用 Cloud Trace 监控 MCP 工具的使用情况。
- 如需了解 Model Armor 遥测,请参阅配置 Model Armor 日志记录。
可观测性信号
Gemini Enterprise Agent Platform 通过指标、跟踪记录和日志提供可观测性。
从 Registry 中选择特定智能体后,Observability(可观测性)标签页会提供一套有针对性的信息中心,用于监控其运行状况、性能和基础架构利用率。使用可观测性标签页中的左侧导航栏在以下视图之间切换:
- 概览:跟踪所选时间范围内的总体使用情况,包括总会话数、每个会话的平均轮次和总代理调用次数。时序图表会显示 token 使用情况(输入与输出)、总体代理流量、延迟时间百分位数(p50、p95、p99)和错误率。
- 评估:显示在线监控器,用于持续进行质量评估。这包括跟踪平均回答质量、安全指标、幻觉率和工具使用质量的时间序列微件。
- 模型:按底层基础模型细分性能。您可以监控 p95 延迟时间、总调用次数、错误率、配额失败次数以及按特定模型隔离的 token 用量。
- 工具:监控连接到代理的外部工具和服务。此视图详细显示了每个工具的 p95 延迟时间、调用次数和错误率,以及未调用任何工具的互动频率。
- 用量:提供智能体运行时环境的基础设施级指标,包括容器 CPU 分配、容器内存分配和 token 用量。
- 日志:显示可过滤的原始智能体日志流,包括严重级别、时间戳和执行摘要,以便进行深入的问题排查。如需了解详情,请参阅查看代理日志。
除了可观测性标签页上的信息中心之外,您还可以使用智能体的跟踪记录标签页来检查特定会话的逐步执行情况,包括 span 和输入/输出的有向无环图。如需了解详情,请参阅查看智能体跟踪记录。您还可以使用拓扑标签页查看该单个代理的特定入站和出站依赖项。
对于 MCP 服务器,您可以监控请求数和 p95 请求时长,以跟踪利用率和响应能力。
审核智能体操作
为了支持企业安全和合规性审核,Gemini Enterprise Agent Platform 使用双重归因日志记录在 Cloud Logging 中记录代理活动。当智能体代表某人执行操作或调用工具(用户委托的授权)时,审核日志和执行日志会同时记录基于 SPIFFE 的智能体身份(审核日志中的 principal://... 或执行日志中的 spiffe://...)以及发起操作的人类用户的身份。当智能体自主执行操作时,日志会将操作直接归因于该智能体的唯一身份。
审计员和安全管理员可以在日志查询中过滤 is_agentic=true 标志,从而在 Cloud Logging 中隔离和查看由代理发起的事件。将 is_agentic=true 与代理身份或用户主账号结合使用,您可以跟踪端到端执行路径,并验证所有代理交互中的政策执行情况。
紧急停止和政策传播预期
在响应安全突发事件或异常智能体行为时,Agent Platform 提供两个互补层来停止智能体活动:
- 立即终止运行时或重新路由流量:删除 Agent Runtime (
runtimes.delete或reasoningEngines.delete) 上已部署的智能体后,系统会立即终止其容器实例,停止活跃会话和流式调用,并在删除操作完成后永久使 SPIFFE 智能体身份失效。或者,您也可以使用trafficSplitManual将 100% 的根流量重新路由到已知良好的修订版本,或通过更新spec.deployment_spec.agent_gateway_config来归档预先存在的修订版本。 - 基于政策的访问权限撤消:向由 Agent Gateway (
iamEnforcementMode: "ENFORCE") 强制执行的 Unified Access Policies (UAP) (UAP) 添加DENY规则,或应用 Identity and Access Management (IAM) (IAM) 拒绝政策或角色撤消,可阻止出站工具和 API 调用,同时保留运行时容器以进行取证分析。不过,UAP 和 IAM 政策更新最终会保持一致:直接政策更改通常会在 2 分钟内生效,但最长可能需要 7 分钟或更长时间才能在全球范围内传播(请参阅访问权限更改传播),而principalSet或群组成员资格更新可能需要几分钟到几小时才能同步。政策更新会在新的授权检查中进行评估,并且不会强制关闭已建立的流式传输连接,除非重新授权。
如需在发生突发事件时立即启用终止开关,请删除智能体运行时或重新路由其修订版本流量,并应用政策拒绝规则。如需查看分步说明,请参阅紧急停止和访问权限撤消。
遥测和安全发现结果延迟时间
不同的可观测性和安全控制措施会按照不同的注入和评估时间表运行。了解这些延迟时间预期有助于突发事件响应者区分内嵌强制执行和异步威胁检测。
下表总结了 Agent Platform 中每个遥测和安全信号的评估模型和预期延迟时间:
| 信号或控制 | 评估和提取模型 | 典型延迟时间 |
|---|---|---|
Cloud Audit Logs 和 Agent Gateway 请求日志(cloudaudit.googleapis.com/*、networkservices.googleapis.com/gateway_requests) |
在评估 API 调用和网关授权检查时同步生成,然后注入到 Logging 中。 | 近乎实时(通常可在几秒钟内在 Logs Explorer 中搜索到)。--freshness=6h 等范围较窄的 CLI 新鲜度过滤条件有时可能会漏掉最近编入索引的条目;在验证近期事件时,请使用 --freshness=1d。 |
Agent Runtime 执行日志(aiplatform.googleapis.com/reasoning_engine_stdout、reasoning_engine_stderr) |
从运行时容器异步流式传输到 Logging。 | 通常在发出后几秒内可见。 |
| Cloud Trace 中的分布式跟踪记录 | 在 OpenTelemetry span 完成时异步导出,具体取决于配置的 samplingRate 和 parentBasedSampling 规则。 |
通常在 span 完成后几秒内即可搜索到。 |
| Cloud Monitoring 指标 | 定期从 Agent Runtime、Agent Gateway 和异常值检测流水线中采样。 | 每 60 到 120 秒采样一次,在 Metrics Explorer 和信息中心内最多延迟 180 到 420 秒显示。 |
| 内嵌政策违规处置(Agent Gateway、Identity-Aware Proxy、Model Armor) | 在工具调用、MCP 请求或模型提示完成之前,在实时请求路径上同步评估。 | 实时内联拦截(零后处理延迟)。 |
智能体异常检测和 Security Command Center (Security Command Center) 发现结果 (AGENT_SESSION_ANOMALY) |
在提取会话日志和跟踪记录后,通过多层检测流水线进行异步带外评估,不会给人工客服回答增加任何延迟。 | 初始范围启用大约需要 40 分钟。系统每 120 秒对异常指标进行一次采样(可见性延迟时间最长为 420 秒),并且在确认的发现结果显示在 Security Command Center 中之前,还会产生额外的同步延迟时间。 |
审核日志的防篡改保留
Cloud Audit Logs 条目在设计上是不可变的:在 Logging 写入审核日志条目后,其载荷和元数据便无法修改。管理员活动和系统事件审核日志存储在 _Required 日志存储桶中,该存储桶强制执行固定的 400 天保留期限,无法修改或删除。
默认情况下,数据访问审核日志 (cloudaudit.googleapis.com/data_access)、政策拒绝日志 (cloudaudit.googleapis.com/policy_denied)、Agent Gateway 请求日志 (networkservices.googleapis.com/gateway_requests) 和双重归因代理执行日志 (is_agentic=true) 会路由到 _Default 日志存储桶,保留期限为 30 天。
如需强制执行防篡改、一次写入、多次读取 (WORM) 保留以获取合规性证据,请将代理审核和网关日志路由到自定义 Logging 存储桶,配置自定义保留期限(1 到 3,650 天),并永久锁定存储桶。锁定 Logging 存储桶是一项不可逆的操作,可防止任何人(包括 Project Owner 和组织 Administrator)删除存储桶、在保留期限到期之前删除日志条目或缩短保留期限。
如需使用 Google Cloud CLI 为代理审核日志创建并锁定自定义 Logging 存储桶,请运行以下命令:
gcloud logging buckets create BUCKET_ID \
--location=LOCATION \
--retention-days=RETENTION_DAYS \
--project=PROJECT_ID
gcloud logging buckets update BUCKET_ID \
--location=LOCATION \
--locked \
--project=PROJECT_ID
替换以下内容:
BUCKET_ID:审核日志存储桶的唯一标识符(例如agent-audit-worm-bucket)。LOCATION:存储桶位置(例如global、us或eu)。RETENTION_DAYS:保留日志条目的天数(介于1到3650之间)。PROJECT_ID:您的 Google Cloud 项目 ID。
如需防止锁定的日志存储桶在其父级项目被删除时一并移除,请在项目上设置项目安全锁。或者,您也可以将审核日志导出到配置了锁定保留政策(存储桶锁定)的 Cloud Storage 存储桶。如需了解详情,请参阅配置和管理日志存储桶。
将审核日志导出到 SIEM
为了集中进行安全监控、关联和长期合规性归档,您可以将智能体审核日志、Agent Gateway 授权决策和 is_agentic=true 执行日志持续导出到 Google Security Operations (Google SecOps) 或第三方安全信息和事件管理 (SIEM) 系统。
您可以配置项目级 Logging 接收器或组织级或文件夹级汇总接收器,以将日志路由到以下目标位置:
- Google Security Operations:以原生方式或通过 Pub/Sub 或 Cloud Storage Feed 将 Cloud Audit Logs、Agent Gateway 日志和 Security Command Center 中的
AGENT_SESSION_ANOMALY发现结果注入 Google SecOps,以便结合企业安全遥测数据调查智能体对话。如需查看设置说明,请参阅将 Google Cloud 数据导出到 Google SecOps。 - Pub/Sub (Pub/Sub):将代理审核日志实时流式传输到 Pub/Sub 主题,以便第三方 SIEM 平台(例如 Splunk、Datadog 或 QRadar)使用 Pub/Sub 订阅或 Dataflow 连接器进行提取。如需了解详情,请参阅将日志路由到 Pub/Sub。
- BigQuery 或 Observability Analytics:将日志导出到 BigQuery 数据集,或将启用了 Observability Analytics 的日志存储桶关联到 BigQuery,以便针对代理身份、用户委托和网关政策拒绝运行 SQL 合规性查询。
- Cloud Storage:将批量 JSON 日志文件导出到启用了存储桶锁定的 Cloud Storage 存储桶,以进行长期不可变归档。
如需创建日志接收器,以便将代理审核和网关日志流式传输到 Pub/Sub 主题以进行 SIEM 注入,请完成以下步骤:
创建日志接收器,并使用包含过滤器来捕获 Cloud Audit Logs、Agent Gateway 请求日志、Agent Runtime 日志和双重归因条目 (
is_agentic=true):gcloud logging sinks create SINK_NAME \ pubsub.googleapis.com/projects/DESTINATION_PROJECT_ID/topics/TOPIC_ID \ --log-filter='logName:("cloudaudit.googleapis.com" OR "networkservices.googleapis.com%2Fgateway_requests" OR "aiplatform.googleapis.com%2Freasoning_engine") OR jsonPayload.is_agentic=true OR labels.is_agentic="true"' \ --project=PROJECT_ID替换以下内容:
SINK_NAME:日志接收器的名称(例如agent-audit-siem-sink)。DESTINATION_PROJECT_ID:托管目标 Pub/Sub 主题的项目 ID。TOPIC_ID:SIEM 订阅的 Pub/Sub 主题的 ID。PROJECT_ID:要从中导出日志的项目 ID。如需在整个组织中导出,请将--project=PROJECT_ID替换为--organization=ORGANIZATION_ID --include-children。
检索接收器的写入者服务账号身份,并向其授予目标主题的 Pub/Sub Publisher 角色 (
roles/pubsub.publisher):WRITER_IDENTITY=$(gcloud logging sinks describe SINK_NAME \ --project=PROJECT_ID \ --format='value(writerIdentity)') gcloud pubsub topics add-iam-policy-binding TOPIC_ID \ --project=DESTINATION_PROJECT_ID \ --member="${WRITER_IDENTITY}" \ --role="roles/pubsub.publisher"
OpenTelemetry 生成式 AI 惯例
智能体跟踪记录和提示与回答日志在很大程度上依赖于生成式 AI 系统的 OpenTelemetry 语义惯例,以标准化生成式 AI 遥测数据的捕获、结构化和报告方式。
遵循这些规范对于智能体跟踪至关重要,因为它建立了一种通用的、与供应商无关的格式,用于描述复杂的多步骤智能体工作流,例如工具执行、检索步骤和 token 消耗。这种标准化有助于在 Google Cloud内部和外部的不同可观测性后端和分析工具之间实现无缝互操作性。