使用 gcloud CLI 写入和查询日志条目
本文档介绍 Cloud Logging 的一些功能,并展示如何执行以下操作:
- 使用 Google Cloud CLI 写入日志条目。
- 使用 gcloud CLI 列出日志条目。
- 使用 Logging API 列出日志条目。
- 使用日志浏览器查看和查询日志条目。
准备工作
您必须有启用了结算功能的 Trusted Cloud 项目才能完成此快速入门。如果您没有 Trusted Cloud 项目,或者没有为 Trusted Cloud 项目启用结算功能,请执行以下操作:-
Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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.
-
-
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 提供了命令行界面。
将含非结构化数据的日志条目写入日志
my-test-log
,运行gcloud logging write
命令:gcloud logging write my-test-log "A simple entry."
命令完成后,您会看到消息:
Created log entry
。将含结构化数据的日志条目写入日志
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 写入的日志条目,请执行以下操作:
-
在 Trusted Cloud 控制台中,转到 Logs Explorer 页面:
如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。
确保在 Trusted Cloud by S3NS导航栏中已选中您的 Trusted Cloud 项目。如有必要,请使用 Trusted Cloud 项目下拉列表选择您的 Trusted Cloud 项目。
在资源菜单中,选择全局。
如果您没有看到全局菜单选项或者没有看到日志条目,请等待几分钟,然后刷新该页面。Logging 可能需要几分钟才能收到日志条目。
如需查看日志条目的详细信息,请点击其chevron_right 菜单。
第一个日志条目的数据存储在
textPayload
中。第二个日志条目的结构化数据存储在jsonPayload
中。结构化载荷包含键message
和weather
。
如需了解日志条目的数据格式,请参阅 LogEntry
类型。
在日志浏览器中查询日志条目
您可以使用查询编辑器查询日志条目;对于结构化日志,也可以使用键和值查询日志条目。例如,若要显示包含文本 simple
的所有日志条目,请执行以下操作:
-
在 Trusted Cloud 控制台中,转到 Logs Explorer 页面:
如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。
在资源菜单中,选择全局。
在查询编辑器中,输入字符串
simple
(加引号)。日志显示区仅会显示日志条目A simple entry.
当您查看完日志后,移除您添加的查询字符串,然后点击运行查询。显示区将重新显示这两个日志条目。
如需显示包含结构化数据、键为 weather
并且 value
字段包含 partly
的所有日志条目,请执行以下操作:
查询编辑器中包含
resource.type="global"
这一行。 输入以下命令:jsonPayload.weather:partly
点击运行查询。结果为一条日志条目
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 读取权限:
- 转到虚拟机实例的虚拟机实例详情页面。点击停止。完成此操作可能需要一两分钟时间。
- 若要修改配置,请点击编辑。
- 搜索标题 Cloud API 访问权限范围,然后点击详情以显示每个 API 的设置。将来自 Cloud Logging API 的条目更改为全部。点击保存。
- 如需重新启动虚拟机实例,请点击启动。片刻之后,您的虚拟机就可以使用了。
清理
为避免因本页面中使用的资源导致您的 Trusted Cloud 账号产生费用,请删除包含这些资源的 Trusted Cloud 项目。
(可选)若要删除您创建的日志条目,请运行以下
gcloud
命令:gcloud logging logs delete my-test-log
如果您不删除日志条目,它们会过期,然后被移除。如需了解保留信息,请参阅配额和限制。
后续步骤
- 如需详细了解 Logging 命令行界面,请参阅
gcloud logging
命令组的参考页面。 - 如需获取 Logging API 的相关文档,请参阅 Cloud Logging API。
- 如需详细了解 Logs Explorer,请参阅使用 Logs Explorer。