查看路由到 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 与第三方集成

Logging 可与第三方(如 Splunk)进行日志集成。如需查看最新的集成列表,请参阅适用于 Google Cloud Observability 集成的合作伙伴

您通过 Pub/Sub 主题路由日志,而第三方通过订阅相同的主题来接收日志。

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

  1. 从第三方获取一个基于其 Google Cloud 项目创建的 Google Cloud 服务帐号名称。例如 12345-xyz@developer.gserviceaccount.com。您将使用此名称向第三方授予接收日志的权限。

  2. 在包含日志的项目中,启用 Pub/Sub API。

  3. 启用 Pub/Sub API。

    启用 API

  4. 创建 Pub/Sub 主题。您可以在配置日志接收器时创建主题,也可以通过以下步骤创建主题:

    1. 在 Google Cloud 控制台的导航面板中,选择 Pub/Sub,然后选择主题

      前往主题

    2. 选择创建主题,并输入主题名称,例如 projects/my-project-id/topics/my-pubsub-topic。您可以将日志路由到此主题。

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

      "attributes": {
        "logging.googleapis.com/timestamp": "2018-10-01T00:00:00Z"
      }
      
    3. 点击创建主题

    4. 授权 Logging 将日志路由到该主题。有关说明,请参阅设置目标位置权限

  5. 授权第三方订阅主题:

    1. 在 Google Cloud 控制台的导航面板中,选择 Pub/Sub,然后选择主题

      前往主题

    2. 选择您的主题。
    3. 选择权限
    4. 选择添加权限,然后输入第三方的服务帐号名称。
    5. 选择角色菜单中,选择 Pub/Sub Subscriber
    6. 点击保存
  6. 向第三方提供 Pub/Sub 主题的名称;例如 projects/my-project-number/topics/my-pubsub-topic。第三方先订阅该主题,然后您才能开始路由。

  7. 在第三方订阅主题后开始路由日志:

    1. 在 Google Cloud 控制台的导航面板中,选择 Logging,然后选择日志路由器

      前往日志路由器

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

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

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

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

问题排查

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

价格

在将日志路由到受支持的目标位置时,Cloud Logging 不会产生费用;但是,目标位置可能会产生费用。除 _Required 日志存储桶外,Cloud Logging 会针对将日志流式传输到日志存储桶,以及对超出日志存储桶默认保留期限的存储收费。

Cloud Logging 不对日志复制或通过 Logs Explorer 页面或 Log Analytics 页面发出的查询收费。

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