Cloud Logging 概览

本文档简要介绍了 Cloud Logging,它是一个支持存储、搜索、分析和监控的实时日志管理系统。Cloud Logging 会自动从 Google Cloud 资源收集日志。您还可以从应用、本地资源以及其他云服务提供商的资源中收集日志。您可以配置提醒,以便在日志中报告了某些类型的事件时获得通知,并且出于监管或安全原因,您可以确定日志数据的存储位置。

从应用和第三方软件收集日志

您可以使用客户端库对应用进行插桩处理,从而从您编写的应用中收集日志。不过,并不总是需要对您的应用进行插桩。例如,对于某些配置,您可以使用 Ops Agent 将写入 stdoutstderr 的日志发送到您的 Google Cloud 项目。

您还可以从第三方应用(如 nginx)收集日志数据,方法是安装 Ops Agent,然后将其配置为将该应用中的日志写入您的 Google Cloud 项目。

请参阅您应该使用哪一个:Logging 代理还是客户端库?,了解可以帮助您确定哪种方法最符合您的要求的信息。

排查和分析日志问题

您可以使用 Google Cloud 控制台(通过 Logs Explorer 或 Log Analytics 页面)查看和分析日志数据。您可以使用这两种界面查询和查看日志;不过,它们使用的查询语言不同,功能也不同。

如需排查和分析服务和应用的性能问题,我们建议您使用 Logs Explorer。此界面旨在让您查看各个日志条目并查找相关日志条目。例如,如果日志条目是错误组的一部分,则该条目带有一个选项菜单,您可以通过这些选项菜单访问有关该错误的更多信息。

如果您想要对日志执行汇总操作(例如,要计算发送到特定网址的 HTTP 请求在一段时间内的平均延迟时间),请使用 Log Analytics 界面。借助此接口,您可以使用 SQL 查询日志数据,因此可以利用 SQL 的功能来帮助您理解日志数据。

如果您希望以编程方式查询日志数据,可以使用 Cloud Logging API 或 Google Cloud CLI 从 Google Cloud 项目导出日志数据。

如需了解详情,请参阅查询和查看日志概览

监控日志

您可以配置 Cloud Logging,使其在您的日志中发生某些类型的事件时通知您。当日志条目中出现特定格式或在日志数据中检测到趋势时,系统可能会发送这些通知。如果您想要查看 Google Cloud 服务的错误率,可以查看预先配置的 Cloud Logging 信息中心。

例如,如果您希望在发生特定消息(例如重要的安全相关事件)时收到通知,则可以创建基于日志的提醒。基于日志的提醒会监控特定模式的日志,如果发现该模式,则会发送通知并创建突发事件。基于日志的提醒非常适合重要但罕见的事件,例如:

  • 您希望在某个事件出现在审核日志中时收到通知;例如,当用户访问某个服务帐号的安全密钥时。
  • 您的应用将部署消息写入日志,并且您希望在记录部署更改时收到通知。

或者,您可能想要监控一段时间内的趋势或事件发生次数。对于这些情况,您可以创建基于日志的指标。基于日志的指标可以统计符合某些条件的日志条目的数量,也可以提取响应时间等信息,并将其整理成直方图。您还可以配置提醒,以便在出现性能变化时向您发出通知,例如,响应时间增加到不可接受的水平。如果您想执行以下任一操作,则基于日志的指标比较合适:

  • 统计日志中消息(如警告或错误)的出现次数,并在出现次数超过阈值时收到通知。
  • 观察数据趋势(例如日志中的延迟时间值),并在值以不可接受的方式发生变化时收到通知。
  • 创建图表以显示从日志中提取的数字数据。

如需了解详情,请参阅监控日志

日志存储

您无需配置日志的存储位置。默认情况下,您的 Google Cloud 项目会自动将收到的所有日志存储在 Cloud Logging 日志存储桶中。例如,如果您的 Google Cloud 项目包含一个 Compute Engine 实例,则系统会自动为您存储 Compute Engine 生成的所有日志。但如果需要,您可以配置有关日志存储的多个方面,例如存储哪些日志、舍弃哪些日志,以及存储在何处。

您可以将日志条目路由到或转发至以下目的地,这些目的地可以位于同一 Google Cloud 项目中,也可以位于不同的 Google Cloud 项目中:

  • Cloud Logging 日志存储分区:在 Cloud Logging 中提供存储空间。日志存储桶可以存储多个 Google Cloud 项目接收的日志。如需将 Cloud Logging 数据与其他数据合并,您可以升级日志存储桶以使用 Log Analytics,然后创建关联的 BigQuery 数据集。如需了解如何查看存储在日志存储分区中的日志,请参阅查询和查看日志概览查看路由到 Cloud Logging 存储分区的日志
  • Google Cloud 项目:将日志条目路由到其他 Google Cloud 项目。当您将日志路由到其他 Google Cloud 项目时,目标项目的日志路由器会接收并处理这些日志。目标项目中的接收器确定收到的日志条目的路由方式。Error Reporting 无法分析由日志存储分区路由到其他 Google Cloud 项目的日志条目。
  • Pub/Sub 主题:支持第三方集成,例如 Splunk。日志条目会格式化为 JSON,然后路由到 Pub/Sub 主题。如需了解如何查看路由到 Pub/Sub 的日志,请参阅查看路由到 Pub/Sub 的日志
  • BigQuery 数据集:提供 BigQuery 数据集中日志条目的存储服务。您可以对存储的日志使用大数据分析功能。如需将 Cloud Logging 数据与其他数据源相结合,我们建议您升级日志存储分区以使用 Log Analytics,然后创建关联的 BigQuery 数据集。如需了解如何查看路由到 BigQuery 的日志,请参阅查看路由到 BigQuery 的日志
  • Cloud Storage 存储分区:在 Cloud Storage 中提供日志数据存储。日志条目以 JSON 文件的形式存储。如需了解如何查看路由到 Cloud Storage 的日志,请参阅查看路由到 Cloud Storage 的日志

如需了解详情,包括数据区域性支持,请参阅路由和存储概览

日志类别

日志类别旨在帮助描述您可以使用的日志记录信息;这些类别并不互斥:

  • 平台日志是指您的 Google Cloud 服务写入的日志。这些日志可帮助您调试和排查问题,并帮助您更好地了解正在使用的 Google Cloud 服务。例如,VPC 流日志记录了虚拟机实例发送和接收的网络流样本。

  • 组件日志与平台日志类似,但它们是由在您的系统上运行的 Google 提供的软件组件生成的。例如,GKE 提供的软件组件可供用户在自己的虚拟机或数据中心运行。日志由用户的 GKE 实例生成,并发送到用户的 Google Cloud 项目。GKE 使用日志或其元数据为用户提供支持。

  • 安全日志可帮助您了解谁在何时何地执行了什么操作:

    • Cloud Audit Logs 提供有关 Google Cloud 资源中的管理活动和访问的信息。启用审核日志有助于安全、审核和合规性实体监控 Google Cloud 数据和系统,以防出现漏洞或外部数据滥用。如需查看 Google Cloud 支持的服务列表,请参阅具有审核日志的 Google 服务

    • Access Transparency 可为您提供 Google 员工在访问您的 Google Cloud 内容时所执行操作的日志。Access Transparency 日志可帮助您跟踪对组织法律法规要求的遵从情况。如需查看 Google Cloud 支持的服务列表,请参阅具有 Access Transparency 日志的 Google 服务

  • 用户写入的日志是由自定义应用和服务写入的日志。 通常,您可以使用以下某种方法将这些日志写入 Cloud Logging:

  • 多云日志混合云日志是指来自其他云服务商(如 Microsoft Azure)的日志和来自本地基础架构的日志

日志的数据模型

Cloud Logging 用于整理日志数据的数据模型决定了您可以根据哪些维度查询这些数据。例如,由于日志是各个条目的命名集合,因此您可以按日志名称查询数据。同样,由于每个日志都由日志条目组成,这些日志条目采用 LogEntry 对象的格式,因此您可以编写查询,仅检索 LogEntry 字段的值符合某些条件的日志条目。例如,您可以仅显示 severity 字段的值为 ERROR 的日志条目。

每个日志条目都会记录状态或描述一个特定事件(例如创建虚拟机实例),并且至少包含以下内容:

  • 时间戳,用于指示事件发生的时间或 Cloud Logging 收到事件的时间。
  • 有关日志条目来源的信息。此来源称为“受监控的资源”。受监控的资源的示例包括各个 Compute Engine 虚拟机实例和 Google Kubernetes Engine 容器。如需查看受监控的资源类型的完整列表,请参阅受监控的资源和服务
  • 载荷也称为消息,可作为非结构化文本数据或 JSON 格式的结构化文本数据提供。
  • 其所属日志的名称。日志的名称包含日志条目所属的资源的完整路径,后跟标识符。以下是日志名称示例:

    • projects/my-project/logs/stderr
    • projects/my-project/logs/stdout
    • projects/my-project/compute.googleapis.com/activity

访问权限控制

Identity and Access Management 角色用于控制主帐号访问日志的权限。 您可以向主账号授予预定义角色,也可以创建自定义角色。如需详细了解所需权限,请参阅访问权限控制

保留

日志条目会在日志存储分区中存储指定的时长,然后被删除。如需了解详情,请参阅路由和存储概览:保留

定价和费用控制

如需了解价格,请参阅 Cloud Logging 价格

如需了解降低 Logging 费用的策略,请参阅 Logging 费用控制