Cloud Logging 概览

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

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

您可以使用客户端库检测应用,从而从自己编写的应用中收集日志。但是,并非始终需要进行应用插桩。例如,对于某些配置,您可以使用 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 信息中心。

例如,如果您希望在特定消息(例如与安全相关的重大事件)发生时收到通知,则可以创建基于日志的提醒政策。基于日志的提醒政策可监控您的日志中是否存在特定模式。如果找到该模式,Monitoring 会发送通知并创建突发事件。基于日志的提醒政策适用于重要但罕见的事件,例如:

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

或者,您可能希望监控随时间变化的趋势或事件发生次数。对于这些情况,您可以创建基于日志的指标。基于日志的指标可以统计与某些条件匹配的日志条目的数量,也可以提取响应时间等信息并将其整理成直方图。您还可以配置提醒政策,以便在出现性能变化(例如响应时间增加到不可接受的水平)时向您发出通知。基于日志的指标适用于以下任一情况:

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

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

日志存储

您无需配置日志的存储位置。默认情况下,您的 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 存储分区的日志
  • BigQuery 数据集:提供 BigQuery 数据集中日志条目的存储。您可以对存储的日志条目使用大数据分析功能。如需将 Cloud Logging 数据与其他数据源合并,我们建议您升级日志存储分区以使用 Log Analytics,然后创建关联的 BigQuery 数据集。如需了解如何查看路由到 BigQuery 的日志条目,请参阅查看路由到 BigQuery 的日志
  • Cloud Storage 存储桶:提供 Cloud Storage 中的日志条目存储。日志条目存储为 JSON 文件。如需了解如何查看路由到 Cloud Storage 的日志条目,请参阅查看路由到 Cloud Storage 的日志
  • Pub/Sub 主题:为第三方集成提供支持。日志条目会格式化为 JSON,然后路由到 Pub/Sub 主题。如需了解如何查看路由到 Pub/Sub 的日志条目,请参阅查看路由到 Pub/Sub 的日志
  • Splunk:提供对 Splunk 的支持。您必须将日志条目路由到 Pub/Sub 主题,然后使用 Splunk 订阅该主题。
  • Google Cloud 项目:将日志条目路由到其他 Google Cloud 项目。将日志条目路由到其他 Google Cloud 项目时,目标项目的日志路由器会接收并处理日志条目。目标项目中的接收器决定了所接收日志条目的路由方式。当目标项目将日志条目路由到目标项目拥有的日志存储桶时,Error Reporting 可以分析这些日志条目。
  • 其他资源:将您的日志条目路由到其他项目中受支持的目标位置。如需了解要使用的路径,请参阅目标路径格式

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

日志类别

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

  • 平台日志是您的 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 费用控制