核心方法:使用 Cloud Logging (Stackdriver)
GCP 所有的 API 调用、管理活动和系统事件都会被记录到 Cloud Logging 中。Vertex AI API 的调用记录也不例外。
步骤一:确认日志权限和范围
您需要拥有足够的权限才能访问项目的日志。
IAM 权限确认:
至少需要 (Logs Viewer) 权限。
roles/logging.viewer
项目/组织范围确认:
确定您的服务器调用 Vertex AI API 时是在哪个 GCP 项目 (Project) 下发生的。您需要在这个项目下查询日志。
步骤二:访问 Cloud Logging 界面
登录 Google Cloud Console。
导航到 Logging > **Logs Explorer**(日志浏览器)。
步骤三:构建查询语句(Query)
查询的关键是识别 Vertex AI 相关的服务名称和调用方法。
1. 查找 Vertex AI 服务的日志
Vertex AI 服务通常使用 这个服务名称。
aiplatform.googleapis.com
基础查询语句(过滤所有 Vertex AI 相关的日志):
resource.type="audited_resource"
AND
protoPayload.serviceName="aiplatform.googleapis.com"
2. 识别发起调用的 IP 地址
在 GCP 审计日志中,发起请求的 IP 地址通常记录在 (如果调用者是服务账号)或
protoPayload.authenticationInfo.principalEmail 中。
protoPayload.requestMetadata.callerIp
完整查询语句(查找 Vertex AI API 调用及其 IP):
resource.type="audited_resource" AND
protoPayload.serviceName="aiplatform.googleapis.com" AND
(protoPayload.requestMetadata.callerIp != "" OR
protoPayload.authenticationInfo.principalEmail != "")

步骤四:分析日志结果
执行查询后,日志浏览器会列出匹配的日志条目。对于每个条目,展开它并查找以下字段:
|
字段名称 |
描述 |
|
|
外部客户端的 IP 地址。 如果调用是从互联网或非 GCP 环境发起的,这是您要找的 IP。 |
|
|
如果调用是通过服务账号 (Service Account) 发起的,这里会显示服务账号的邮箱。 |
|
|
发生调用的项目 ID。 |
|
|
调用的时间。 |
|
|
调用的具体 API 方法(例如: |
如果您发现 是一个私有 IP 或 GCP 内部 IP (例如
callerIp 或
10.x.x.x):
172.x.x.x
这意味着调用是从 GCP 内部发起的,例如 GKE、Compute Engine (VM)、Cloud Function 或 Cloud Run。
在这种情况下,您可能需要查看日志条目中的 或其他元数据,以确定是哪个 GCP 资源发起的调用(例如,如果是 VM,日志中可能关联了 VM 的实例 ID)。
resource.type
针对性建议和高级查询技巧
1. 过滤特定 API 方法
如果您只关心模型预测(最常见的调用),可以进一步过滤:
resource.type="audited_resource" AND
protoPayload.serviceName="aiplatform.googleapis.com" AND
protoPayload.methodName:"Predict" // 或 Search, BatchPredict, etc.
2. 使用 Log Analytics (如果需要大规模分析)
如果您的日志量非常大,并且需要进行聚合分析(例如,统计TOP 10 访问 IP),建议切换到 Log Analytics 界面,并使用 SQL 语句查询:
Log Analytics SQL 示例:统计访问量最大的 IP:
SELECT JSON_VALUE(proto_payload, '$.requestMetadata.callerIp') AS caller_ip,
count(JSON_VALUE(proto_payload, '$.requestMetadata.callerIp')) AS total_calls FROM
`[YOUR_PROJECT_ID].[YOUR_LOG_BUCKET_NAME]._AllLogs` WHERE resource.type =
"audited_resource" AND JSON_VALUE(proto_payload, '$.serviceName') =
"aiplatform.googleapis.com" GROUP BY caller_ip ORDER BY total_calls DESC LIMIT 10
注意: 首次使用 Log Analytics 需要启用并创建日志存储桶(Log Bucket)。
3. 处理服务账号调用(内部调用)
如果日志显示调用是通过服务账号发起的,但 缺失或不准确,您需要找到**哪个资源正在使用这个服务账号**。
callerIp
如果调用来自 GKE/VM: 检查该服务账号最近的元数据访问或身份验证日志,看是哪个 Compute Engine 实例或 K8s Pod 正在使用它。
如果调用来自 Cloud Function/Run: 在 Function/Run 的执行日志中,通常可以直接看到是哪个实例或请求触发了 Vertex AI API 调用。
通过上述步骤和查询方法,您可以有效地在 Google Cloud Logging 中定位并识别所有访问您 Vertex AI API 的服务器 IP 地址。


