使用 gcloud CLI 写入和查询日志条目

本文档介绍 Cloud Logging 的一些功能,并展示如何执行以下操作:

  • 使用 Google Cloud CLI 写入日志条目。
  • 使用 gcloud CLI 列出日志条目。
  • 使用 Logging API 列出日志条目。
  • 使用日志浏览器查看和查询日志条目。

准备工作

您必须有启用了结算功能的 Trusted Cloud 项目才能完成此快速入门。如果您没有 Trusted Cloud 项目,或者没有为 Trusted Cloud 项目启用结算功能,请执行以下操作:

  1. Install the Google Cloud CLI.

  2. Configure the gcloud CLI to use your federated identity.

    For more information, see Sign in to the gcloud CLI with your federated identity.

  3. To initialize the gcloud CLI, run the following command:

    gcloud init
  4. Create or select a Trusted Cloud project.

    • Create a Trusted Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Trusted Cloud project you are creating.

    • Select the Trusted Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Trusted Cloud project name.

  5. Make sure that billing is enabled for your Trusted Cloud project.

使用 gcloud CLI 写入日志条目

Logging 支持包含结构化和非结构化数据的日志条目。结构化数据由 JSON 数据结构组成;例如 {"weather": "partly cloudy"}。非结构化数据是一串字符;例如 "A simple entry"

在接下来的步骤中,您将使用 gcloud CLI 写入含非结构化数据的日志条目和含结构化数据的日志条目。gcloud CLI 为 Cloud Logging API 提供了命令行界面。

  1. 将含非结构化数据的日志条目写入日志 my-test-log,运行 gcloud logging write 命令:

    gcloud logging write my-test-log "A simple entry."
    

    命令完成后,您会看到消息:Created log entry

  2. 将含结构化数据的日志条目写入日志 my-test-log

    gcloud logging write --payload-type=json my-test-log '{ "message": "My second entry", "weather": "partly cloudy"}'
    

    当您写入含结构化数据的日志条目时,必须包括 --payload-type=json。如果省略此字段,Logging 会将载荷解释为非结构化数据。

如果日志 my-test-log 不存在,则 Logging 会在收到日志条目时创建该日志。

使用 gcloud CLI 列出日志条目

您可以从 Logging 中检索日志条目,并使用 gcloud CLI 显示它们。例如,要检索并显示资源类型为 global 的日志条目,请运行以下命令:

gcloud logging read "resource.type=global"

该命令会返回类似于如下所示的结果:

---
insertId: jpj9zjf73t1mn
jsonPayload:
  message: My second entry
  weather: partly cloudy
logName: projects/myloggingproject/logs/my-test-log
receiveTimestamp: '2018-11-01T18:39:31.114507977Z'
resource:
  labels:
    project_id: myloggingproject
  type: global
timestamp: '2018-11-01T18:39:31.114507977Z'
---
insertId: vd4m1if7h7u1a
logName: projects/myloggingproject/logs/my-test-log
receiveTimestamp: '2018-11-01T18:39:19.718100792Z'
resource:
  labels:
    project_id: myloggingproject
  type: global
textPayload: A simple entry
timestamp: '2018-11-01T18:39:19.718100792Z'

如需了解如何读取日志,请参阅 gcloud logging read 参考文档。

在日志浏览器中查看日志条目

如需在 Trusted Cloud 控制台中查看日志条目,您可以使用 Logs Explorer。大多数 Trusted Cloud 项目都会存储大量日志;您可以通过编写查询来选择某些日志条目。

如需查看您使用 Logs Explorer 写入的日志条目,请执行以下操作:

  1. 在 Trusted Cloud 控制台中,转到 Logs Explorer 页面:

    前往 Logs Explorer

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

    确保在 Trusted Cloud by S3NS导航栏中已选中您的 Trusted Cloud 项目。如有必要,请使用 Trusted Cloud 项目下拉列表选择您的 Trusted Cloud 项目。

  2. 资源菜单中,选择全局

    如果您没有看到全局菜单选项或者没有看到日志条目,请等待几分钟,然后刷新该页面。Logging 可能需要几分钟才能收到日志条目。

  3. 如需查看日志条目的详细信息,请点击其 菜单

    第一个日志条目的数据存储在 textPayload 中。第二个日志条目的结构化数据存储在 jsonPayload 中。结构化载荷包含键 messageweather

如需了解日志条目的数据格式,请参阅 LogEntry 类型

在日志浏览器中查询日志条目

您可以使用查询编辑器查询日志条目;对于结构化日志,也可以使用键和值查询日志条目。例如,若要显示包含文本 simple 的所有日志条目,请执行以下操作:

  1. 在 Trusted Cloud 控制台中,转到 Logs Explorer 页面:

    前往 Logs Explorer

    如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。

  2. 资源菜单中,选择全局

  3. 在查询编辑器中,输入字符串 simple(加引号)。日志显示区仅会显示日志条目 A simple entry.

  4. 当您查看完日志后,移除您添加的查询字符串,然后点击运行查询。显示区将重新显示这两个日志条目。

如需显示包含结构化数据、键为 weather 并且 value 字段包含 partly 的所有日志条目,请执行以下操作:

  1. 查询编辑器中包含 resource.type="global" 这一行。 输入以下命令:

    jsonPayload.weather:partly
    
  2. 点击运行查询。结果为一条日志条目 My second entry

日志浏览器还提供保存的查询、建议的查询和最新查询。如需详细了解查询,请参阅在日志浏览器中构建查询

如需查看示例查询,请参阅使用日志浏览器的查询示例

问题排查

  • 输入错误和未知字段名称导致 gcloud CLI 命令完成时显示消息参数无效。例如,如果您忘记输入 resource.type 中的英文句点,则会导致以下错误:

     ERROR: (gcloud.logging.read) INVALID_ARGUMENT: Field not found: 'resourcetype'.
    
  • 当 Cloud Logging 未被授予所需的访问权限时,gcloud CLI 命令完成时会显示消息权限遭拒。例如,如果 Compute Engine 虚拟机实例配置了默认的 API 设置,则 list 命令完成时显示“权限遭拒”错误:

     ERROR: (gcloud.logging.read) PERMISSION_DENIED: Request had insufficient authentication scopes.
    

    如需解决此问题,请通过执行以下操作修改您的 Compute Engine 虚拟机实例权限以授予 Cloud Logging 读取权限:

    1. 转到虚拟机实例的虚拟机实例详情页面。点击停止。完成此操作可能需要一两分钟时间。
    2. 若要修改配置,请点击编辑
    3. 搜索标题 Cloud API 访问权限范围,然后点击详情以显示每个 API 的设置。将来自 Cloud Logging API 的条目更改为全部。点击保存
    4. 如需重新启动虚拟机实例,请点击启动。片刻之后,您的虚拟机就可以使用了。

清理

为避免因本页面中使用的资源导致您的 Trusted Cloud 账号产生费用,请删除包含这些资源的 Trusted Cloud 项目。

  1. (可选)若要删除您创建的日志条目,请运行以下 gcloud 命令:

    gcloud logging logs delete my-test-log
    

    如果您不删除日志条目,它们会过期,然后被移除。如需了解保留信息,请参阅配额和限制

后续步骤