监控代理

本页面介绍了如何使用内置指标、自定义指标和提醒来监控 Vertex AI Agent Engine 中的代理。

概览

您可以使用 Cloud Monitoring 中的 Vertex AI Agent Engine,而无需进行任何额外的设置或配置。系统会自动收集内置代理指标,并在Google Cloud 控制台的 Cloud Monitoring 页面中直观呈现这些指标。

支持的内置指标

系统支持以下代理指标,这些指标与 Vertex AI Agent Engine 受监控的资源 aiplatform.googleapis.com/ReasoningEngine 相关联:

  • 请求数
  • 请求延迟时间
  • 容器 CPU 分配时间
  • 容器内存分配时间

如需详细了解指标类型、单位、标签以及延迟时间和采样周期,请参阅 AI Platform 指标的完整列表

查看代理的指标

您可以在 Google Cloud 控制台中使用 Metrics Explorer 查看代理的内置指标:

  1. 如需获得在 Metrics Explorer 中查看指标的权限,请让您的管理员为您授予项目的 Monitoring Viewer 角色 (roles/monitoring.viewer)。

  2. 在 Google Cloud 控制台中前往 Metrics Explorer

    转到 Metrics Explorer

  3. 选择您的 Google Cloud 项目。

  4. 点击选择指标以打开搜索栏。

  5. 在搜索栏中输入 Vertex AI Reasoning Engine,然后点击 Vertex AI Reasoning Engine

  6. 点击 Reasoning_engine 指标类别,然后点击一个指标,例如请求数

  7. 您可以选择设置其他标签过滤条件、聚合元素并调整时间范围。

默认情况下,Metrics Explorer 中用于显示请求数指标的图表会按默认时间间隔对数据点进行对齐,并将数据点绘制为每秒请求数(一种速率指标)。

查询智能体的指标

您还可以通过 Prometheus 查询语言 (PromQL)Cloud Monitoring v3 API 查询指标。PromQL 在指标过滤、汇总和转换方面提供了更多选项,而 Cloud Monitoring API 可让您以编程方式列出和查询所有原始数据点。

使用 PromQL 查询指标

您可以使用 PromQL 按自定义时间间隔对齐和汇总数据点,并将转换后的数据点绘制为绝对请求数(而非每秒请求数)。以下示例按 Agent Engine 实例 ID (RESOURCE_ID) 和响应代码 (RESPONSE_CODE) 过滤数据:

sum_over_time(
  increase(
      aiplatform_googleapis_com:reasoning_engine_request_count{
          monitored_resource='aiplatform.googleapis.com/ReasoningEngine',
          reasoning_engine_id='RESOURCE_ID',
          response_code='RESPONSE_CODE'
      }
      [10m]
  )
  [10m:10m]
)

您可以计算标记有特定错误响应代码(例如 500)的请求数与请求总数的比率(失败请求的百分比),从而查询错误率

sum_over_time(
  sum(
    rate(
      aiplatform_googleapis_com:reasoning_engine_request_count{
        monitored_resource='aiplatform.googleapis.com/ReasoningEngine',
        reasoning_engine_id='RESOURCE_ID',
        response_code='500'
      }
      [10m]
    )
  )
  [10m:10m]
)
/
sum_over_time(
  sum(
    rate(
      aiplatform_googleapis_com:reasoning_engine_request_count{
        monitored_resource='aiplatform.googleapis.com/ReasoningEngine',
        reasoning_engine_id='RESOURCE_ID',
      }
      [10m]
    )
  )
  [10m:10m]
)

如需了解比率指标的最佳实践和限制,请参阅指标比率简介。如需查看如何为错误率指标设置提醒的示例,请参阅 JSON 格式的示例政策

使用 Cloud Monitoring API 查询指标

您可以使用 Cloud Monitoring API 执行以下操作:

  • 获取 Vertex AI Agent Engine 受监控的资源定义

  • 列出可用的代理指标定义

  • 查询 request_count 的时序数据

所有代理指标都与代理引擎受监控的资源 aiplatform.googleapis.com/ReasoningEngine 相关联。

您可以通过 API 浏览器、特定于语言的客户端库或命令行调用这些 API。如需了解如何通过 API Explorer 和客户端库读取指标,请参阅文档。以下示例演示了在命令行(更具体地说是 curl 工具)中的用法。

获取 Agent Engine 受监控的资源定义

以下命令使用 projects.monitoredResourceDescriptors 检索受监控的资源的定义,以及可用于过滤的所有可用标签:

gcurl https://monitoring.googleapis.com/v3/projects/PROJECT_ID/monitoredResourceDescriptors/aiplatform.googleapis.com/ReasoningEngine

标签应包含 resource_containerlocationreasoning_engine_id

列出可用的代理指标定义

以下命令使用 projects.metricDescriptors 检索 Agent Engine 的所有指标和标签过滤条件:

gcurl https://monitoring.googleapis.com/v3/projects/PROJECT_ID/metricDescriptors?filter='metric.type=starts_with("aiplatform.googleapis.com/reasoning_engine")'

结果应包含以下指标的定义及其特定标签:

  • aiplatform.googleapis.com/reasoning_engine/request_count
  • aiplatform.googleapis.com/reasoning_engine/request_latencies
  • aiplatform.googleapis.com/reasoning_engine/cpu/allocation_time
  • aiplatform.googleapis.com/reasoning_engine/memory/allocation_time

查询 request_count 的时序数据

您可以将 projects.timeSeries.listintervalfilteraggregation 等参数搭配使用,以查询时序数据。

以下示例展示了如何查询特定代理实例在特定时间窗口内的 request_count 指标的原始数据点:

gcurl https://monitoring.googleapis.com/v3/projects/PROJECT_ID/timeSeries?filter='metric.type="aiplatform.googleapis.com/reasoning_engine/request_count"%20AND%20resource.labels.reasoning_engine_id="RESOURCE_ID"&interval.endTime=2025-03-26T11:00:0.0-08:00&interval.startTime=2025-03-26T10:00:0.0-08:00'

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • RESOURCE_ID:Agent Engine 实例 ID。此步骤并非总是必需的。您可以在同一项目内跨多个 Agent Engine 实例进行查询。
  • interval.startTimeinterval.endTime:时间间隔的开始时间(含)和结束时间(不含),采用 RFC 3339 格式。例如,"2025-03-26T11:22:33Z" 表示世界协调时间 (UTC),"2025-03-26T11:22:33-08:00" 表示太平洋标准时间 (PST)。如需查看完整定义和更多示例,请参阅 RFC 3339

您应该会收到类似如下所示的响应:

{
  "timeSeries": [
    {
      "metric": {
        "labels": {
          "response_code": "200",
          "response_code_class": "2xx"
        },
        "type": "aiplatform.googleapis.com/reasoning_engine/request_count"
      },
      "resource": {
        "type": "aiplatform.googleapis.com/ReasoningEngine",
        "labels": {
          "reasoning_engine_id": "RESOURCE_ID",
          "location": "LOCATION",
          "project_id": "PROJECT_ID"
        }
      },
      "metricKind": "DELTA",
      "valueType": "INT64",
      "points": [
        {
          "interval": {
            "startTime": "2025-03-26T18:55:27.001Z",
            "endTime": "2025-03-26T18:56:27Z"
          },
          "value": {
            "int64Value": "25"
          }
        },
        {
          "interval": {
            "startTime": "2025-03-26T18:54:27.001Z",
            "endTime": "2025-03-26T18:55:27Z"
          },
          "value": {
            "int64Value": "36"
          }
        }
        // ... more data points ...
      ]
    }
    // ... potentially more time series with other response codes ...
  ],
  "unit": "1"
}

如需详细了解响应格式,请参阅 projects.timeSeries.list

为代理创建自定义指标

如果内置代理指标无法满足您的特定使用场景,您可以定义自定义指标。您可以使用以下方法创建自定义指标:

基于日志的指标

以下步骤演示了如何为示例工作流创建和使用基于日志的指标 (tool_calling_count),在该工作流中,多个代理调用多个工具,并且您希望统计工具调用次数:

  1. 指定您的工具在每次被调用时写入日志条目。例如 "tool-\<tool-id\> invoked by agent-\<agent-id\>"

  2. 通过 Google Cloud 控制台创建新的基于日志的计数器类型指标:

    1. 在 Google Cloud 控制台中,前往基于日志的指标页面:

      前往“基于日志的指标”

    2. 用户定义的指标部分中,点击创建指标。 此时会显示创建基于日志的指标窗格。

    3. 对于指标类型,选择计数器

    4. 详细信息部分中,输入基于日志的指标名称。例如 tool_calling_count。(可选)输入说明单位

    5. 过滤条件选择部分,执行以下操作:

      1. 选择项目或日志存储桶下拉列表中,选择项目日志

      2. 构建过滤条件字段中,使用日志记录查询语言输入日志过滤条件。例如:

        resource.type="aiplatform.googleapis.com/ReasoningEngine"
        resource.labels.reasoning_engine_id="RESOURCE_ID"
        textPayload =~ "tool-\d+ invoked by agent-\d+" -- assuming both tool and agent IDs are numeric
        
    6. 对于标签部分,请点击添加标签按钮,添加两个新标签。

      1. 对于第一个标签,请执行以下操作:

        1. 标签名称字段中,输入 tool

        2. 字段名称字段中,输入 textPayload

        3. 正则表达式字段中,输入 (tool-\d+) invoked by agent-\d+

      2. 对于第二个标签,请执行以下操作:

        1. 标签名称字段中,输入 agent

        2. 字段名称字段中,输入 textPayload

        3. 正则表达式字段中,输入 tool-\d+ invoked by (agent-\d+)

      1. 点击完成
    7. 点击创建指标

  3. 如需查看 tool_calling_count 指标及其关联的日志,请在 Google Cloud 控制台中执行以下操作:

    1. 前往 Google Cloud 控制台中的 Metrics Explorer 页面:

      转到 Metrics Explorer

    2. 点击选择指标以打开搜索栏。

    3. 在搜索栏中输入 Vertex AI Reasoning Engine,然后点击 Vertex AI Reasoning Engine

    4. 点击基于日志的指标指标类别,然后点击 logging/user/tool_calling_count。如有必要,请调整时间范围。

    5. (可选)按标签 toolagent 过滤。

      • 如需获取所有代理的特定工具的总调用次数,请将过滤条件标签 tool 设置为相应工具 ID 的值。

      • 如需获取特定代理在所有工具中的总调用次数,请将过滤条件标签 agent 设置为相应代理 ID 的值。

      (可选)将求和依据设置为 toolagent,以按不同的工具或客服人员获取细分的总计数。

如需了解如何写入代理日志,请参阅记录代理;如需详细了解基于日志的指标,请参阅基于日志的指标概览

用户定义的指标

以下步骤演示了如何为示例工作流创建和使用自定义指标 (token_count),在该工作流中,多个代理调用多个模型,并且您希望计算消耗的令牌总数(假设您跟踪每个调用代理和目标模型自应用启动以来的令牌数量):

  1. 通过调用 projects.metricDescriptors.create 并使用以下参数来定义自定义指标类型:

    • name:网址字符串,例如 projects/PROJECT_ID

    • Request bodyMetricDescriptor 对象:

      {
        "name": "token_count",
        "description": "Token Consumed by models.",
        "displayName": "Token Count",
        "type": "custom.googleapis.com/token_count",
        "metricKind": "CUMULATIVE",
        "valueType": "INT64",
        "unit": "1",
        "labels": [
          {
            "key": "model",
            "valueType": "STRING",
            "description": "Model."
          },
          {
            "key": "agent",
            "valueType": "STRING",
            "description": "Agent."
          }
        ],
        "monitoredResourceTypes": [
          "generic_node"
        ]
      }
      

      新指标 token_count 的类型为 Cumulative,表示自应用启动以来的令牌总数。如需详细了解 Cumulative 指标,请参阅指标种类和类型。标签 modelagent 分别表示目标大语言模型 (LLM) 和调用代理的名称。

    1. 您可以在 Metrics Explorer 中找到 token_count 指标:

      1. 前往 Google Cloud 控制台中的 Metrics Explorer 页面:

      转到 Metrics Explorer

      1. 点击选择指标以打开搜索栏。

      2. 在搜索栏中输入通用节点,然后点击自定义指标

      3. 点击令牌数

  2. 通过调用 projects.timeSeries.create 并使用以下参数,将数据点写入新指标:

    • name:网址字符串,例如 projects/PROJECT_ID

    • Request bodyTimeSeries 对象的列表:

      {
        "timeSeries": [
          {
            "metric": {
              "type": "custom.googleapis.com/token_count",
              "labels": {
                "model": "model-1",
                "agent": "agent-1"
              }
            },
            "resource": {
              "type": "generic_node",
              "labels": {
                "project_id": "PROJECT_ID",
                "node_id": "RESOURCE_ID",
                "namespace": "",
                "location": "us-central1"
              }
            },
            "points": [
              {
                "interval": {
                  "startTime": "2025-03-26T10:00:00-08:00",
                  "endTime": "2025-03-26T10:01:00-08:00"
                },
                "value": {
                  "int64Value": 15
                }
              }
            ]
          },
          {
            "metric": {
              "type": "custom.googleapis.com/token_count",
              "labels": {
                "model": "model-1",
                "agent": "agent-2"
              }
            },
            "resource": {
              "type": "generic_node",
              "labels": {
                "project_id": "PROJECT_ID",
                "node_id": "RESOURCE_ID",
                "namespace": "",
                "location": "us-central1"
              }
            },
            "points": [
              {
                "interval": {
                  "startTime": "2025-03-26T10:00:00-08:00",
                  "endTime": "2025-03-26T10:01:00-08:00"
                },
                "value": {
                  "int64Value": 20
                }
              }
            ]
          }
          // ... more time series ...
        ]
      }
      
  3. 通过 Cloud Monitoring API 上传数据点后,您可以通过 Google Cloud 控制台查看新指标 token_count

    1. 前往 Google Cloud 控制台中的 Metrics Explorer 页面:

      转到 Metrics Explorer

    2. 点击选择指标以打开搜索栏。

    3. 在搜索栏中输入通用节点,然后点击自定义指标

    4. 点击令牌数量。根据需要调整时间范围,并为 modelagent 配置标签值。

为代理创建提醒

您可以将指标与提醒结合使用。如需了解详情,请参阅提醒概览

以下示例展示了如何为 request_latencies 指标创建阈值提醒,以便在延迟时间在指定时长内超过预定义值时收到通知:

  1. 前往 Google Cloud 控制台中的提醒页面:

    转到提醒

  2. 点击创建政策创建提醒政策页面随即打开。

    1. 政策配置模式部分,选择构建器

    2. 选择指标下拉菜单中,依次选择 Vertex AI Reasoning Engine -> reasoning_engine -> Request Latency

    3. 添加过滤条件部分,根据需要配置过滤条件(例如 reasoning_engine_idresponse_code)。

    4. 转换数据部分中,将滚动窗口滚动窗口函数切换为 5min99th percentile 等值(监控 5 分钟对齐周期内的第 99 百分位请求延迟时间)。

    5. 点击下一步

  3. 配置提醒触发器部分中,执行以下操作:

    1. 条件类型中,选择阈值

    2. 选择一个提醒触发器,例如任何时序违反

    3. 选择一个阈值位置,例如高于阈值

    4. 输入一个阈值,例如 5000ms

    5. 点击下一步

  4. 配置通知并最终确定提醒部分,执行以下操作:

    1. 选择一个或多个通知渠道。如需了解详情,请参阅管理通知渠道

    2. (可选)配置通知主题、突发事件自动关闭时长、应用标签、政策标签、严重程度和其他文档。

    3. 为提醒政策命名部分中设置政策名称,例如 latency-99p-alert

    4. 点击创建政策

如果发生突发事件,请参阅基于指标的提醒政策的突发事件,详细了解如何确认和调查突发事件以及将提醒设为静音。

您可以在 JSON 中的示例政策中找到更多提醒示例。

监控代理的指标

您可以使用 Vertex AI Agent Engine 概览信息中心来监控代理的运行状况和性能。

查看默认信息中心

  1. 前往 Google Cloud 控制台中的信息中心页面:

    转到“信息中心”

  2. 选择您的 Google Cloud 项目。

  3. 我的信息中心窗格中,添加过滤条件 Name:Vertex AI Agent Engine Overview

  4. 点击 Vertex AI Agent Engine 概览以显示默认智能体信息中心。

自定义默认信息中心

默认信息中心仅包含代理内置指标。如需向信息中心添加您自己的自定义指标,请按以下步骤复制并自定义默认信息中心:

  1. 打开默认信息中心

  2. 点击复制信息中心。在复制信息中心对话框中,点击复制。 系统会打开信息中心副本。您还可以在自定义类别下的我的信息中心窗格中找到信息中心副本。

  3. 在信息中心副本中,按以下步骤添加指标:

    1. 点击添加 widget。此时会显示添加 widget 侧边栏。

    2. 对于数据,选择指标。此时会显示配置 widget 侧边栏。

    3. 点击选择指标以打开搜索栏。

    4. 如果您的自定义指标是使用基于日志的指标创建的,则:

      1. 在搜索栏中输入 Vertex AI Reasoning Engine,然后点击 Vertex AI Reasoning Engine

      2. 点击基于日志的指标指标类别,然后点击一个指标,例如 Logging/user/tool_calling_count

      3. 点击应用

    5. 如果您的自定义指标是使用用户定义的指标创建的:

      1. 在搜索栏中输入通用节点,然后点击通用节点

      2. 点击自定义指标指标类别,然后点击一个指标,例如令牌数

      3. 点击应用

    6. 信息中心内会显示一个新图表,其中包含您的自定义指标。

  4. 您可以进一步调整信息中心的布局,例如:

    1. 按住微件标题,然后将其拖动到同一信息中心内的其他位置,即可移动微件。

    2. 按住微件的右下角并调整其大小,即可调整微件的大小。

如需详细了解如何使用 Prometheus 查询语言 (PromQL) 添加指标图表以及如何将指标制成表格,请参阅向自定义信息中心添加图表和表格

如果您已配置自定义提醒,请参阅在信息中心上显示提醒政策和提醒,将此类提醒添加到信息中心。