查看路由到 Pub/Sub 的日志

本文档介绍如何查找从 Cloud Logging 路由到 Pub/Sub 主题(近乎实时)的日志条目。 我们建议使用 Pub/Sub 将 Cloud Logging 日志与第三方软件集成。

将日志条目路由到 Pub/Sub 主题后,Logging 会在收到各个日志条目后立即将该日志条目作为 Pub/Sub 消息发布。路由的日志条目通常在到达 Logging 后几秒钟内可用,而 99% 的日志条目在 60 秒内可用。

准备工作

如需查看接收器的概念讨论,请参阅路由和存储模型概览:接收器

如需了解如何路由日志条目,请参阅 将日志路由到支持的目标位置

查看日志

如需在通过 Pub/Sub 流式传输日志时查看日志, 执行以下操作:

  1. 在 Google Cloud 控制台中,前往主题页面:

    前往主题

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

  2. 针对日志接收器中使用的主题查找或创建订阅,并从中提取日志条目。您可能需要等待一段时间,新的日志条目才会发布。

组织日志

每条消息的 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 集成。

要执行集成,您需要执行如下操作:

  1. 在日志条目所属的项目中,创建 Pub/Sub 主题 默认订阅

    1. 启用 Pub/Sub API。

      Enable the API

    2. 在 Google Cloud 控制台中,前往主题页面:

      前往主题

      如果您使用搜索栏找到此页面,请选择子标题为 Pub/Sub

    3. 点击创建主题

    4. 主题 ID 字段中,输入主题 ID。 例如 projects/my-project-id/topics/my-pubsub-topic

      发送到该主题的每条消息都包含 Pub/Sub 消息 attributes 中路由的日志条目的时间戳;例如:

      "attributes": {
        "logging.googleapis.com/timestamp": "2024-07-01T00:00:00Z"
      }
      
    5. 保留添加默认订阅选项。请勿选择任何其他选项 选项。

    6. 点击创建主题

  2. 在日志条目所属的项目中,配置 进行日志记录以将日志条目路由到您的主题:

    1. 在 Google Cloud 控制台中,转到日志路由器页面:

      前往日志路由器

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

    2. 点击创建接收器,为接收器输入名称和说明,然后点击下一步
    3. 接收器服务菜单中,选择 Cloud Pub/Sub 主题。 选择 Pub/Sub 主题,然后点击下一步
    4. 选择要包含在接收器中的日志条目,然后点击下一步
    5. 可选:选择要排除的日志条目。
    6. 点击创建接收器

      此时会出现一个对话框并显示已创建接收器消息。此消息表示您已成功创建接收器,且该接收器有权将未来的匹配日志条目路由到您选择的目标位置。

    7. 授予 Pub/Sub 发布者 (roles/pubsub.publisher) 接收器的写入者身份。如需详细了解如何获取 写入者身份和授予角色,请参阅 设置目标位置权限

    Cloud Logging 现在正在向您的 Pub/Sub 发送日志条目 主题。

  3. 创建订阅。

    例如,如果您使用 Dataflow 从 Pub/Sub 主题中提取数据并将其发送到 Datadog,则需要执行以下两个步骤:

    1. 创建或获取服务账号,然后向其授予 订阅您的主题所需的 IAM 角色。服务账号至少需要具有以下角色:

      有关详情,请参阅以下文档:

    2. 基于模板创建作业,然后运行该作业。在此示例中,您应使用 Pub/Sub to Datadog 模板

您的第三方应该立即开始接收日志条目。

如需了解使用 Pub/Sub 的常见日志路由场景,请参阅Cloud Logging 数据导出场景:Splunk

问题排查

如果接收器的目标位置缺少日志条目,或者您怀疑接收器未正确路由日志条目,请参阅排查日志路由问题

价格

Cloud Logging 不会对将日志路由到受支持的目标位置收费;但目标位置可能会收费。除了 _Required 日志存储桶外,Cloud Logging 会对将日志流式传输到日志存储桶以及存储时间超过日志存储桶默认保留期限的部分收费。

Cloud Logging 不会对复制日志、定义日志范围或通过日志浏览器Log Analytics 页面发出的查询收费。

有关详情,请参阅以下文档: