本文档介绍如何查找从 Cloud Logging 路由到 Pub/Sub 主题(近乎实时)的日志条目。 我们建议使用 Pub/Sub 将 Cloud Logging 日志与第三方软件集成。
将日志条目路由到 Pub/Sub 主题后,Logging 会在收到各个日志条目后立即将该日志条目作为 Pub/Sub 消息发布。路由的日志条目通常在到达 Logging 后几秒钟内可用,而 99% 的日志条目在 60 秒内可用。
准备工作
如需查看接收器的概念讨论,请参阅路由和存储模型概览:接收器。
如需了解如何路由日志条目,请参阅将日志路由到支持的目的地。
查看日志
若要查看通过 Pub/Sub 流式传输的日志,请执行以下操作:
-
在 Google Cloud 控制台中,前往主题页面:
如果您使用搜索栏查找此页面,请选择子标题为 Pub/Sub 的结果。
针对日志接收器中使用的主题查找或创建订阅,并从中提取日志条目。您可能需要等待一段时间,新的日志条目才会发布。
组织日志
每条消息的 data
字段都是采用 base64 编码的 LogEntry
对象。例如,Pub/Sub 订阅者可能会从正在接收日志条目的主题中提取以下对象。显示的对象中有一个含单条消息的列表,但如果有多个日志条目可用,Pub/Sub 可能会返回多条消息。data
值(大约 600 个字符)和 ackId
值(大约 200 个字符)都缩短了,这可以提高示例的易读性:
{ "receivedMessages": [ { "ackId": "dR1JHlAbEGEIBERNK0EPKVgUWQYyODM...QlVWBwY9HFELH3cOAjYYFlcGICIjIg", "message": { "data": "eyJtZXRhZGF0YSI6eyJzZXZ0eSI6Il...Dk0OTU2G9nIjoiaGVsbG93b3JsZC5sb2cifQ==", "attributes": { "compute.googleapis.com/resource_type": "instance", "compute.googleapis.com/resource_id": "123456" }, "messageId": "43913662360" } } ] }
如果您解码 data
字段并设置其格式,则会获得以下 LogEntry
对象:
{ "log": "helloworld.log", "insertId": "2015-04-15|11:41:00.577447-07|10.52.166.198|-1694494956", "textPayload": "Wed Apr 15 20:40:51 CEST 2015 Hello, world!", "timestamp": "2015-04-15T18:40:56Z", "labels": { "compute.googleapis.com\/resource_type": "instance", "compute.googleapis.com\/resource_id": "123456" }, "severity": "WARNING" } }
Pub/Sub 与第三方集成
您将日志条目路由到 Pub/Sub 主题。第三方通过订阅同一主题来接收您的日志条目。Logging 可与第三方(如 Splunk 或 Datadog)进行日志集成。如需查看当前的集成列表,请参阅 合作伙伴了解 Google Cloud Observability 集成。
要执行集成,您需要执行如下操作:
在日志条目来源的项目中,创建具有默认订阅的 Pub/Sub 主题:
启用 Pub/Sub API。
-
在 Google Cloud 控制台中,前往主题页面:
如果您使用搜索栏查找此页面,请选择子标题为 Pub/Sub 的结果。
点击创建主题。
在主题 ID 字段中,输入主题 ID。 例如
projects/my-project-id/topics/my-pubsub-topic
。发送到该主题的每条消息都包含 Pub/Sub 消息
attributes
中路由的日志条目的时间戳;例如:"attributes": { "logging.googleapis.com/timestamp": "2024-07-01T00:00:00Z" }
保留添加默认订阅选项。请勿选择任何其他选项。
点击创建主题。
在日志条目源自的项目中,配置 Logging 以将日志条目路由到您的主题:
-
在 Google Cloud 控制台中,转到日志路由器页面:
如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。
- 点击创建接收器,为接收器输入名称和说明,然后点击下一步。
- 在接收器服务菜单中,选择 Cloud Pub/Sub 主题,选择 Pub/Sub 主题,然后点击下一步。
- 选择要包含在接收器中的日志条目,然后点击下一步。
- 可选:选择要排除的日志条目。
点击创建接收器。
此时会出现一个对话框并显示已创建接收器消息。此消息表示您已成功创建接收器,且该接收器有权将未来的匹配日志条目路由到您选择的目标位置。
向接收器的写入者身份授予 Pub/Sub Publisher (
roles/pubsub.publisher
) 角色。如需详细了解如何获取写入者身份和授予角色,请参阅设置目标位置权限。
Cloud Logging 现在会将日志条目发送到您的 Pub/Sub 主题。
-
创建订阅。
例如,如果您使用 Dataflow 从 Pub/Sub 主题中提取数据并将其发送到 Datadog,则需要执行以下两个步骤:
创建或获取一个服务账号,然后向其授予订阅您的主题所需的 IAM 角色。服务账号至少需要具有以下角色:
- Pub/Sub Subscriber (
roles/pubsub.subscriber
) - Dataflow Admin (
roles/dataflow.admin
) - Dataflow Worker (
roles/dataflow.worker
)
有关详情,请参阅以下文档:
- Pub/Sub Subscriber (
通过模板创建作业,然后运行该作业。对于此示例,您将使用 Pub/Sub to Datadog 模板。
您的第三方应该立即开始接收日志条目。
如需了解使用 Pub/Sub 的常见日志路由场景,请参阅Cloud Logging 数据导出场景:Splunk。
问题排查
如果接收器的目标位置缺少日志条目,或者您怀疑接收器未正确路由日志条目,请参阅排查日志路由问题。
价格
Cloud Logging 不会对将日志路由到受支持的目标位置收费;但目标位置可能会收费。除了 _Required
日志存储桶外,Cloud Logging 会对将日志流式传输到日志存储桶以及存储时间超过日志存储桶默认保留期限的部分收费。
Cloud Logging 不会对复制日志、定义日志范围或通过日志浏览器或 Log Analytics 页面发出的查询收费。
有关详情,请参阅以下文档:
- Cloud Logging 价格摘要
目标位置费用:
- 如果您在发送 Virtual Private Cloud 流日志后又从 Cloud Logging 中排除这些日志,则需支付 VPC 流日志生成费用。