将 Cloud Monitoring、Logging 和 Trace 与可观测性和提醒解决方案集成

本文档提供了相关资源,介绍如何将 Cloud Logging、Cloud Monitoring 和 Cloud Trace 与第三方可观测性和提醒开源解决方案集成。本指南是站点可靠性工程师 (SRE)、系统管理员、网络操作、监控专业人员以及其他负责系统可靠性、可用性和性能的从业者的参考指南。本文档假定您具有在 Google Cloud 中开发解决方案的经验。

您可以利用许多工具,帮助您在系统的性能和可用性降低时生成提醒,从而监控和诊断企业 IT 系统。在您和贵组织将计算范围扩展到 Google Cloud 时,您可以通过执行以下操作将 Google Cloud 集成到可观测性和提醒做法中:

  • 从 Google Cloud 中提取数据:将 Cloud Monitoring 和 Logging 中的数据发送到现有工具。
  • 将数据提取到 Google Cloud:将数据从现有工具发送到 Cloud Monitoring 和 Logging。

提取 Monitoring 和 Logging 数据

您可以将 Google Cloud 资源的可观测性和事件数据发送到您使用的第三方监控、提醒和通知工具。Google Cloud 服务会自动生成可观测性数据,例如指标、日志和跟踪记录数据,帮助提供完整的可观测性概览。通过提取 Cloud Monitoring 和 Cloud Logging 数据,您可以将数据集成到现有的可靠性、提醒和突发事件管理流程中。

Cloud Monitoring 可观测性数据

Cloud Monitoring 会根据收集数据的服务类型将指标分类为常规组。如需了解 Monitoring 中的指标类型、资源、标签和聚合,请参阅理解指标和构建图表时间序列的结构

Cloud Monitoring 会通过 Google Cloud、Amazon Web Services (AWS)、托管的正常运行时间探测和应用插桩收集指标、事件和元数据。来自以下来源的指标会记录在 Cloud Monitoring 中:

以编程方式提取指标

利用 Monitoring API,您能够以编程方式读取和写入 Cloud Monitoring 中收集的所有指标。以下参考指南提供了可用于从 Monitoring API 读取指标的架构和代码示例:

使用第三方工具进行监控

您可以直接使用 DatadogSignalFX 等第三方解决方案直接读取 Monitoring API,这些解决方案提供内置监控功能。

Cloud Logging 可观测性数据

Google Cloud 服务、用户资源和代码会自动生成记录状态或事件的日志。如需了解如何提取、存储和导出日志,请参阅 Cloud Logging 基本概念

Cloud Logging 架构包括以下组件:

  • 日志生成方:在 Cloud Logging 中生成日志的资源。
  • 日志路由器:Cloud Logging 及其导出内容。
  • 日志消费者:从 Cloud Logging 中提取日志的第三方和开源工具。

如需了解数据如何从生成方通过日志路由器流向日志消费者,请参阅日志路由器概览

如需了解如何构建应用,以便以编程方式读取日志,请参阅使用日志查看器导出使用 Logging API

设置向第三方工具的导出

您可以将日志导出到 Pub/Sub、Cloud Storage 和 BigQuery,并为要使用的工具创建订阅。

我们建议使用 Pub/Sub 将日志导出到第三方工具,因为 Cloud Logging 会管理导出流水线,并且您只需处理通过流水线到达的日志。

如需详细了解如何将日志导出到特定工具,请参阅以下指南:

以编程方式提取日志

您可以使用 Logging API 读取日志并列出日志条目,来获取特定日志集的分页列表。

将可观测性数据提取到 Monitoring 中

您可以使用 Cloud Monitoring 从本地和第三方工具中提取可观测性数据,然后使用信息中心、图表和提醒生成数据洞见。

监控 AWS 资源

要监控在 AWS 中运行的资源,您可以使用 Cloud Monitoring AWS 帐号集成将这些资源的相关信息直接提取到 Cloud Monitoring 中,包括来自 Amazon CloudWatch 的指标。如需了解详情,请参阅 AWS 快速入门AWS 指标

监控 Azure、AWS 和本地资源

要监控 Microsoft Azure 中运行的资源、Monitoring 未自动包含的 AWS 资源或本地资源,您可以使用 Blue Medora 的 BindPlane 产品。BindPlane 提供了直接从许多不同来源提取指标数据的集成解决方案。如需详细了解 BindPlane 集成,请参阅以下指南:

通过 Prometheus 进行监控

Prometheus 是一个用于 Kubernetes 集群的常见开源时间序列监控框架。您可以使用 Prometheus 集成,将基础架构和自定义应用指标提取到 Cloud Monitoring 中。如需了解详情,请参阅以下指南:

使用 Istio 进行监控

Istio 可观察性让您可导出 Istio 指标。您可以使用 GKE on Istio 插件自动配置 Monitoring 适配器,也可以在集群中手动安装 Istio,然后配置 Monitoring 适配器。如需详细了解如何将 Istio 与 Cloud Monitoring 搭配使用,请参阅以下指南:

自定义监控

您可以向应用添加自定义遥测数据,并将指标提取到 Cloud Monitoring 中,以便在图表、信息中心和提醒政策中使用。

如果您的应用是使用库支持的语言编写的,我们建议您使用 OpenCensus。如需了解详情,请参阅使用 OpenCensus 的自定义指标

如果您的应用在 GKE 上运行,您可以使用本文档前面介绍的 Prometheus

您可以使用 Monitoring API 向代码中添加自定义指标插桩。Monitoring API 可为您提供最佳的灵活性和控制力,但使用比 OpenCensus 或 Prometheus 更复杂。如需了解详情,请参阅 Monitoring API 简介

直观显示 Monitoring 数据

Cloud Monitoring 提供以下选项用于直观显示数据:

Google Cloud Console 中的 Monitoring 页面让您可使用以下工具直观显示数据:

  • 监控概览预定义的信息中心,显示 Google Cloud 资源、应用或 AWS 资源的图表。您可以修改这些信息中心的图表配置和显示时间段。
  • 自定义信息中心您可以创建的可自定义信息中心,以显示您指定的服务或资源组的运行状况。
  • Metrics Explorer一种网页视图,让您可创建在工作区中收集的指标的自定义视图。您可以共享 Metrics Explorer 图表来支持实时问题排查和协作用例。

如需了解详情,请参阅 Qwiklab 的使用 Cloud Monitoring 监控多个项目

将可观测性数据提取到 Logging 中

您可以使用 Cloud Logging 从本地和第三方工具提取日志数据,然后存储、搜索、分析和监控日志数据和事件,并相应地发出提醒。

记录 AWS 资源

要从 Amazon EC2 中运行的虚拟机提取日志,请配置虚拟机权限,然后在虚拟机上安装 Cloud Logging 代理。如需详细了解如何将 AWS 日志与 Cloud Logging 搭配使用,请参阅 AWS 快速入门

记录 Azure 和本地资源

要从 Microsoft Azure 或本地环境中运行的资源提取日志,您可以使用 Blue Medora 的 BindPlane 集成解决方案。如需了解详情,请参阅使用 BlueMedora 记录本地资源的指南。

自定义日志记录

要将日志直接发送到 Cloud Logging,您可以使用 Logging 客户端库。如需详细了解如何使用 Logging 客户端库提取日志,请参阅 Logging API 示例

将跟踪记录提取到 Cloud Trace 中

Cloud Trace 可以提供应用插桩、存储后端以及用于提取的跟踪记录的可视化和分析层,从而帮助您分析应用延迟时间。Cloud Trace 是一个分布式跟踪系统,可用于分析应用延迟时间,尤其是对于基于微服务的复杂架构。

使用 Zipkin 跟踪

如果您的应用已使用 Zipkin 进行插桩,并且您不想运行自己的跟踪记录后端,或者您希望使用 Cloud Trace 的高级分析工具,则可以将跟踪记录提取到 Cloud Trace 中。Zipkin 项目保留此功能,而 Google 未正式支持。如需了解详情,请参阅将 Cloud Trace 与 Zipkin 搭配使用

使用 OpenTelemetry 跟踪

如果您目前没有跟踪插桩,并且想要使用 Cloud Trace 作为跟踪分析工具,我们建议您使用 OpenTelemetry。Open Telemetry 是一个支持多种语言的开源跟踪和指标库。如需详细了解如何将 OpenTelemetry 与 Cloud Trace 搭配使用,请参阅 OpenTelemetry 文档。如需查看使用 Go 的示例,请参阅跟踪记录导出器软件包。

使用客户端库跟踪

在 Google Cloud,在其他云提供商上或本地在 Google Cloud 中运行虚拟机或容器时,您可以使用 Cloud Trace 客户端库进行应用插桩。Google 正在改为使用 OpenTelemetry。如果要开始使用分布式跟踪,我们建议您使用本文档中前面所述的 OpenTelemetry

提醒和通知

您可以使用 Google Cloud 和外部工具为从外部系统提取的数据发送提醒和通知。

Cloud Monitoring 提供提醒和管理突发事件和事件管理的功能。要监控系统,您可以将 Monitoring 中的提醒集成到您已获取或自行构建的工具中。

要实现 Monitoring 集成,请使用以下一个或多个选项:

  • 使用 Cloud Monitoring 内置通知集成将通知发送到其他系统。
  • 对于未提供内置集成的系统,请使用合作伙伴解决方案
  • 构建与网络钩子的自定义集成,以向其他系统传送 Cloud Monitoring 通知。

从 Monitoring 发送提醒

您可以根据日志和提取的指标创建 Cloud Monitoring 提醒政策,并将通知发送到不同渠道(如电子邮件或短信)。以下指南提供了 Slack 和 PagerDuty 的实现示例:

如需详细了解提醒,请参阅提醒政策详解

从第三方解决方案发送提醒

您可以使用第三方解决方案将 Cloud Monitoring 提醒发送到您的系统。有关示例,请参阅以下指南:

从自定义集成发送提醒

您可以使用网络钩子创建与许多第三方监控系统的自定义集成。设置自定义集成时,Cloud Monitoring 会针对您提供的网址通过 JSON 载荷传送提醒通知。以下指南提供了自定义网络钩子集成的示例:

从 Monitoring 发送错误通知

如前所述将数据提取到 Monitoring 时,您可以为外部系统配置 Error Reporting 功能,以将提醒作为错误写入并触发通知。如需了解详情,请参阅以下指南:

后续步骤