记录 Apigee 访问日志

本页面适用于 Apigee,但不适用于 Apigee Hybrid

查看 Apigee Edge 文档。

Apigee 订阅和随用随付客户可以为其组织中的每个 Apigee 实例启用 Cloud Logging 入站流量访问日志。启用此功能后,您可以查看 Apigee 基础设施中的入站流量网关(例如外部应用负载均衡器或 Anthos 网关)生成的日志,以协助排查 Apigee API 调用问题。

请务必注意,如果为一个或多个 Apigee 实例启用了此功能,则您需要为发送到项目的日志支付费用。如需详细了解 Google Cloud 日志记录费用,请参阅 Cloud Logging 价格

本主题介绍了 Apigee 客户如何为其组织中的 Apigee 实例启用和使用 Cloud Logging 入站流量访问日志。

准备工作

如需启用此功能,您必须具有以下角色和权限:

  • 角色:Apigee Organization Admin (roles/apigee.admin)
  • 权限
    • apigee.instances.create
    • apigee.instances.update

检查角色

  1. 在 Google Cloud 控制台中,转到 IAM 页面。

    前往 IAM
  2. 选择项目。
  3. 主账号列中,找到您的电子邮件地址所在的行。

    如果您的电子邮件地址不在此列,则表示您没有任何角色。

  4. 在您的电子邮件地址所在的行对应的角色列中,检查角色列表是否包含所需的角色。

授予角色

  1. 在 Google Cloud 控制台中,转到 IAM 页面。

    前往 IAM
  2. 选择项目。
  3. 点击 授予访问权限
  4. 新的主账号字段中,输入您的电子邮件地址。
  5. 选择角色列表中,选择一个角色。
  6. 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
  7. 点击保存

为 Apigee 实例启用入站流量访问日志记录

使用 Cloud 控制台中的 Apigee 界面或 API 创建或修改 Apigee 实例时,您可以启用 Cloud Logging 入站流量访问日志记录。

如需在创建或更新 Apigee 实例时启用该功能,请按照管理实例中的说明开始创建或修改实例。

Cloud 控制台中的 Apigee

创建实例修改实例页面的日志记录部分中,执行以下操作:

  1. 点击启用日志记录切换开关以启用该功能。
  2. (可选)从响应代码框中选择一个 HTTP 响应代码,充当访问日志的过滤条件。

    如果您要包含所有日志,而不考虑 HTTP 响应代码,请选择 None (all HTTP responses)

    如需创建自定义过滤条件,请选择 Custom,然后按以下格式输入过滤条件:

    status_code > XX && status code <= YY

    例如:

    status_code >= 500 && status_code < 504

  3. 提供创建或修改实例所需的所有信息后,点击保存

Apigee API

如需使用 Apigee API 更新现有实例,请使用以下命令:

curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances/INSTANCE_NAME?updateMask=access_logging_config.enabled,access_logging_config.filter" \
    -X PATCH -H "Authorization: Bearer $TOKEN" \
    -H 'Accept: application/json' -H 'Content-Type: application/json' \
    -d '{
      "name": "INSTANCE_NAME",
      "accessLoggingConfig":
        {
          "enabled": "true",
          "filter": "status_code >= 0 && status_code < 600 "
        }
      }'

其中:

  • ORG_NAME 是您的 Apigee 组织的名称。
  • INSTANCE_NAME 是您要修改的 Apigee 实例的名称。

请注意,在此命令中,为 filter 属性指定的值会返回所有日志。如果您要根据 HTTP 或其他状态代码过滤日志,可以调整 filter 值。

成功创建或更新实例后,该实例的入站流量访问日志应该会在几分钟之内在项目中可用。

查看入站流量访问日志

启用该功能后,您便可以在几分钟内使用 Google Cloud 控制台中的 Logs Explorer 查看项目中实例的入站流量访问日志。

如需在 Logs Explore 中查看日志条目,请执行以下操作:

  1. 在 Google Cloud 控制台中,选择 Logging > Logs Explorer

    进入 Logs Explorer

  2. 确保您的 Google Cloud 项目处于选中状态。
  3. 查询标签页中,使用以下任一方法在查询编辑器字段中输入日志名称:
    • 如需使用日志名称选择框,请执行以下操作:
      1. 点击日志名称选择框,以打开日志名称窗格。
      2. 选择日志名称框中输入 ingress_instance
      3. 点击应用
      4. 日志名称会显示在查询编辑器字段中。
    • 查询编辑器字段中,直接输入日志名称:

      logName="projects/ORG_NAME/logs/apigee.googleapis.com/ingress_instance"

  4. 查询编辑器字段中构建查询的其余部分。日志会显示在查询结果列表中。
  5. 点击任意日志条目以查看更多详情。

排查入站流量访问日志问题

启用该功能且日志在 Logs Explorer 中可用后,您可以利用 Cloud Logging 的多种功能来协助进行问题排查,包括:

  • 使用 Cloud Logging 查询语言构建查询

    使用 Logs Explorer 时,您可以通过在查询编辑器字段中编写查询并从日志条目包含的过滤条件菜单选项中进行选择来检索和分析日志。如需详细了解如何在 Logs Explorer 中构建查询和分析数据,请参阅使用 Cloud Logging 查询语言构建和保存查询

  • 启用基于日志的指标和提醒

    您可以定义自己的基于日志的指标来捕获特定于 Apigee 实例的信息。如需了解详情,请参阅基于日志的指标概览

    您可以通过 Logs Explorer 创建基于日志的提醒政策。如需了解详情和详细步骤,请参阅使用 Logs Explorer 创建基于日志的提醒政策

  • 按 HTTP 状态代码过滤

    您可以在 Logs Explorer 中优化查询,以按 HTTP 状态代码过滤,即使您在启用该功能时未选择按 HTTP 状态代码过滤入站流量访问日志也是如此。如需向查询添加此过滤条件,请使用以下格式:

    status_code > XX && status code <= YY

    例如:

    status_code >= 500 && status_code < 504

  • 按入站流量状态代码过滤

    除了按 HTTP 状态代码过滤之外,您还可以创建查询来过滤 ingress status_code 0。此代码通常表明存在网络或连接问题,导致客户端无法接收服务器响应。

如需详细了解 Logs Explorer 中提供的所有功能,请参阅使用 Logs Explorer 查看日志

停用该功能

完成 Apigee 实例的问题排查后,您可以修改实例以停用该功能。停用此功能会关闭对项目中的 ingress_instance 日志的访问权限,并且会停止计费。

您可以使用 Cloud 控制台中的 Apigee 界面或 API 修改实例以停用该功能。

Cloud 控制台中的 Apigee

如需使用 Cloud 控制台中的 Apigee 停用该功能,请执行以下操作:

  • 在浏览器中打开 Cloud 控制台中的 Apigee 界面
  • 依次选择管理 > 实例
  • 点击您要修改的实例。
  • 实例详情页面中,点击修改
  • 修改实例页面中,点击启用日志记录切换开关以停用该功能。
  • 点击保存
  • Apigee API

    使用以下命令在实例中停用该功能:

    curl "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances/INSTANCE_NAME?updateMask=access_logging_config.enabled,access_logging_config.filter" \
        -X PATCH -H "Authorization: Bearer $TOKEN" \
        -H 'Accept: application/json' -H 'Content-Type: application/json' \
        -d '{
          "name": "INSTANCE_NAME",
          "accessLoggingConfig":
            {
                "enabled": "false"
            }
            }'

    其中:

    • ORG_NAME 是您的 Apigee 组织的名称。
    • INSTANCE_NAME 是您要修改的 Apigee 实例的名称。