本组文档介绍了 Google 构建的 OpenTelemetry 收集器,并说明了如何部署该收集器以从插桩的应用中收集 OpenTelemetry 协议 (OTLP) 跟踪记录、指标和日志,并将这些数据导出到 Google Cloud Observability 和其他后端。
Google 构建的 OpenTelemetry 收集器是使用上游 OpenTelemetry 收集器组件构建的开源、可用于生产用途的上游 OpenTelemetry 收集器版本。OpenTelemetry 是 Cloud Native Computing Foundation 的一部分,提供了开源 API、库和 SDK,用于收集分布式跟踪记录、指标和日志,以便进行应用监控。
借助 Google 构建的 OpenTelemetry 收集器,您可以将相关的 OTLP 跟踪记录、指标和日志从使用 OpenTelemetry SDK 插桩的应用发送到 Google Cloud Observability 和其他后端。收集器还会捕获 Google Cloud 资源的元数据,以便您将应用性能数据与基础架构遥测数据相关联。将 Google 构建的收集器与 Google Cloud Observability 搭配使用,可提供数据分析,帮助您提升应用和基础架构的性能。如需详细了解收集器,请参阅 Google 构建的 OpenTelemetry 收集器说明。
使用 Google 构建的 OpenTelemetry 收集器
您可以使用 Google 构建的收集器从在 Kubernetes(包括 Google Kubernetes Engine)、Container-Optimized OS 或独立容器上运行的应用中收集遥测数据。本部分中的文档介绍了如何在以下环境中配置和部署 Google 构建的收集器:
如果您没有准备好使用收集器的应用,则可以使用 Google 构建的收集器部署 OpenTelemetry 演示版。如需了解详情,请参阅试用 OpenTelemetry 演示版。
如需了解如何使用 OpenTelemetry 插桩从应用中生成跟踪记录、指标和日志,请参阅以下文档:
Google 构建的 OpenTelemetry 收集器的说明
Google 构建的 OpenTelemetry 收集器是使用上游 OpenTelemetry 组件和工具构建的,同时完全从 Google 构建-测试-发布基础架构 (Artifact Registry) 构建和检索。Google 构建的收集器与来自上游代码库的 OpenTelemetry 收集器版本兼容。它还以 Docker 映像的形式托管,以便在任何基于容器的系统(包括 Kubernetes 和 GKE)上灵活部署。
Google 构建的收集器提供了一个由 Google 精选的软件包,其中包含大多数用户在 Google Cloud上获得丰富的可观测性体验所需的组件。您无需选择组件并手动构建自己的收集器。 通过使用 Google 构建的收集器,您可以:
- 收集 Google Cloud 资源的元数据,以便您将应用性能数据与基础架构遥测数据相关联。
- 使用导出器(包括原生支持 OpenTelemetry 的后端)将遥测数据路由到 Google Cloud Observability 或您选择的后端。
- 通过建议的配置和最佳实践自我监控(包括健康检查和批处理)来简化初始配置。
- 使用托管式 Docker 映像,在任何基于容器的系统(包括 Kubernetes 和 GKE)上灵活部署。
最佳做法
OpenTelemetry 维护了配置 OpenTelemetry 收集器和扩缩收集器的最佳实践列表。本部分提供了一些其他建议。
使用健康检查扩展程序
健康检查扩展程序会启用一个 HTTP 网址,该网址可用于探测 OpenTelemetry 收集器的状态。使用此扩展程序可提供以下优势:
- 早期问题检测:健康检查有助于主动监控收集器的状态,从而能够在潜在问题对遥测数据产生负面影响之前检测到这些问题。此预防措施有助于确保可观测性流水线的可靠性。
- 改进了问题排查:当出现问题时,健康检查可提供有关收集器当前状态的有价值的分析洞见。此信息简化了诊断和解决过程,减少了停机时间并简化了问题排查工作。
- 提高了可靠性:持续监控收集器的运行状况可确保一致运行并防止意外故障。此主动措施可提高可观测性系统的整体可靠性,并最大限度地降低数据丢失或遥测数据缺失的风险。
在 Kubernetes 和 GKE 上,健康检查扩展程序与 Kubernetes 活跃性探测和就绪性探测兼容。如需了解如何设置这些探测,请参阅 Kubernetes 最佳实践:使用就绪性探测和活跃性探测设置健康检查。
在 Cloud Run 上,单个健康检查扩展程序可以作为 Cloud Run 服务配置中的启动探测和活跃探测的端点。
使用批处理器
批处理会收集跟踪记录、指标或日志,并将其捆绑到批量中以进行传输。使用批处理器可提供以下优势:
- 最大限度地减少传出连接数:通过将数据传输分组到批次,OpenTelemetry 收集器可显著减少传出连接数。这种整合方法可降低配额用量,并有可能降低整体网络费用。
- 改进了数据压缩:批处理可实现更高效的数据压缩,从而缩减传输数据的总大小。
- 灵活的批处理策略:支持基于大小的批处理和基于时间的批处理,可灵活地针对不同场景进行优化。基于大小的批处理可确保批次在发送前达到一定的大小,而基于时间的批处理则在特定时间间隔过去后发送批次。这种灵活性可让您根据数据的具体特征和应用的特定要求,对批处理策略进行微调。
使用 googlesecretmanager
提供程序
借助 googlesecretmanager
提供程序,您可以在 Secret Manager 中存储配置文件所需的敏感信息。这项服务专为安全存储、访问和管理敏感数据而设计。使用 googlesecretmanager
提供程序具有以下优势:
- 增强安全性:您的配置文件不包含密码等敏感信息。
- 降低泄露风险:Secret Manager 会在收集器初始化期间提取 Secret,从而防止明文 Secret 意外记录在日志中。
如需了解如何使用此提供程序,请参阅在收集器配置中管理 Secret。
版本说明
Google 构建的 OpenTelemetry 收集器的版本与上游 OpenTelemetry 收集器的版本保持同步。当前版本为 v0.128.0;存储在 Artifact Registry 中的相应 Docker 映像为 us-docker.pkg.dev/cloud-ops-agents-artifacts/google-cloud-opentelemetry-collector/otelcol-google:0.128.0。 对于每个新版本,我们会在此页面中列出与 Google Cloud 用户最相关的更改。
0.128.0:
- Google 构建的 OpenTelemetry 收集器:更新到 OpenTelemetry 收集器核心和 OpenTelemetry 收集器贡献版本 v0.128.0。
- OpenTelemetry 收集器核心代码库:版本说明 (v0.127.0)
- OpenTelemetry 收集器贡献代码库:版本说明 (v0.127.0)
0.127.0:
- Google 构建的 OpenTelemetry 收集器:更新到 OpenTelemetry 收集器核心和 OpenTelemetry 收集器贡献版本 v0.127.0。
- OpenTelemetry 收集器核心代码库:版本说明 (v0.127.0)
- OpenTelemetry 收集器贡献代码库:版本说明 (v0.127.0)
0.126.0:
- Google 构建的 OpenTelemetry 收集器:更新到 OpenTelemetry 收集器核心和 OpenTelemetry 收集器贡献版本 v0.126.0。
- 添加了以下新组件:
- 处理器:
metricstarttime
- 提供程序:
googlesecretmanager
。如需了解如何使用此提供程序在收集器配置中消除明文 Secret,请参阅在收集器配置中管理 Secret。
- 处理器:
- OpenTelemetry 收集器核心代码库:
- OpenTelemetry 收集器贡献代码库:
0.124.1:
- Google 构建的 OpenTelemetry 收集器:更新到 OpenTelemetry 收集器核心版本 v0.124.0 和 OpenTelemetry 收集器贡献版本 v0.124.1。
- 添加了以下新组件:
- 接收器:
dockerstats
、jmx
、redis
、statsd
、syslog
- 处理器:
metricsgeneration
- 接收器:
- OpenTelemetry 收集器核心代码库:
- OpenTelemetry 收集器贡献代码库:
0.122.1:
- Google 构建的 OpenTelemetry 收集器:更新到 OpenTelemetry 收集器核心版本 v0.122.1 和 OpenTelemetry 收集器贡献版本 v0.122.0。
- 添加了以下新组件:
googleclientauthextension
- 已知问题咨询:
- 如果您使用 OTLP 导出收集器自遥测数据,请注意以下 OpenTelemetry 收集器问题:https://github.com/open-telemetry/opentelemetry-collector/issues/12701
- OpenTelemetry 收集器核心代码库:版本说明
- OpenTelemetry 收集器贡献代码库:版本说明
0.121.0:
可支持性
对于所有 Google 构建的 OpenTelemetry 收集器客户端问题(包括功能请求、bug 报告和常规问题),请在相应的 GitHub 代码库中提交问题。Google 会监控这些代码库,并尽最大努力对问题进行分类和解决。
Google 构建的 OpenTelemetry 收集器打包代码库,用于解决以下相关问题:
- 打包
- 在 Google Cloud上部署
- Google Cloud内进行身份验证
- 请求添加新的 OpenTelemetry 组件
OpenTelemetry 收集器贡献代码库,用于解决以下相关问题:
- Google 特定的 OpenTelemetry 组件,例如:
googlecloudexporter
googlemanagedprometheusexporter
googleclientauthextension
resourcedetectionprocessor
- 由上游社区管理的非 Google 特定的 OpenTelemetry 组件
- Google 特定的 OpenTelemetry 组件,例如:
对于与 Google 构建的 OpenTelemetry 收集器使用 Google Cloud Observability 服务和 API 相关的问题(例如服务器错误或配额),请与 Cloud Customer Care 联系。
价格
部署和使用 Google 构建的 OpenTelemetry 收集器不收取任何费用。
向 Google Cloud发送遥测数据时,您需要按提取量付费。如需了解与跟踪记录、日志和 Google Cloud Managed Service for Prometheus 指标提取关联的费用,请参阅 Google Cloud Observability 价格。
试用 OpenTelemetry 演示版
本部分介绍了如何使用 Google 构建的 OpenTelemetry 收集器部署和运行适用于Google Cloud的 OpenTelemetry 演示版。
此部分为可选。如果您已准备好将 Google 构建的收集器集成到您自己的部署中,请参阅以下文档:
- 在 Google Kubernetes Engine 上部署收集器
- 在 Container-Optimized OS 上部署收集器
- 在 Cloud Run 上部署收集器
准备工作
OpenTelemetry 演示版需要一个已配置工作负载身份联合的 Kubernetes 集群。如需了解如何为 OpenTelemetry 演示版设置工作负载身份联合,请参阅Workload Identity 前提条件。
更新演示版以使用 Google 构建的收集器
默认情况下,OpenTelemetry 演示版使用上游 OpenTelemetry 收集器。如需改用 Google 构建的 OpenTelemetry 收集器,请执行以下操作:
克隆 OpenTelemetry 演示版代码库:
git clone https://github.com/GoogleCloudPlatform/opentelemetry-demo.git
转到
kubernetes
目录。cd kubernetes
修改文件
opentelemetry-demo.yaml
,以替换要使用的收集器映像的行。该行看起来如下所示,但版本可能不同:image: "otel/opentelemetry-collector-contrib:0.108.0"
将
image:
字段的值替换为us-docker.pkg.dev/cloud-ops-agents-artifacts/google-cloud-opentelemetry-collector/otelcol-google:0.128.0
,使该行如下所示,然后保存文件:image: "us-docker.pkg.dev/cloud-ops-agents-artifacts/google-cloud-opentelemetry-collector/otelcol-google:0.128.0"
部署演示版
通过应用更新的 opentelemetry-demo.yaml
文件来部署演示版:
kubectl apply --namespace otel-demo -f opentelemetry-demo.yaml
连接到演示版
应用更新的配置后,您可以将数据转发到本地端口。例如,如需连接到 localhost:8080
中的演示版,请发出以下命令:
kubectl port-forward --n otel-demo svc/opentelemetry-demo-frontendproxy 8080:8080
然后,您可以使用浏览器连接到 localhost:8080
的演示版。
查看遥测数据
OpenTelemetry 演示版使用 Google 构建的 OpenTelemetry 收集器将指标、跟踪记录和日志发送到 Google Cloud 。如需了解演示版发送的特定遥测数据,请参阅演示版文档中的查看遥测数据。
查看指标
Google 构建的 OpenTelemetry 收集器会收集 Prometheus 指标,您可以使用 Metrics Explorer 查看这些指标。收集的指标取决于应用的插桩,但 Google 构建的收集器也会写入一些自身指标。
如需查看 Google 构建的 OpenTelemetry 收集器收集的指标,请执行以下操作:-
在 Google Cloud 控制台中,前往 leaderboard Metrics Explorer 页面:
如果您使用搜索栏查找此页面,请选择子标题为监控的结果。
- 在 Google Cloud 控制台的工具栏中,选择您的 Google Cloud 项目。对于 App Hub 配置,请选择 App Hub 宿主项目或已启用应用的文件夹的管理项目。
- 在指标元素中,展开选择指标菜单,在过滤条件栏中输入
Prometheus Target
,然后使用子菜单选择一个特定资源类型和指标:- 在活跃资源菜单中,选择 Prometheus 目标。
- 如需选择指标,请使用活跃指标类别和活跃指标菜单。
Google 构建的 OpenTelemetry 收集器收集的指标具有前缀
prometheus.googleapis.com
。 - 点击应用。
- 配置数据的查看方式。
如果指标的测量结果是累积的,则 Metrics Explorer 会自动按校准时间段对测量数据进行归一化,从而使图表显示速率。如需了解详情,请参阅种类、类型和转换。
测量整数或双精度值时(例如使用
counter
指标),Metrics Explorer 会自动对所有时序求和。如需更改此行为,请将汇总条目的第一个菜单设置为无。如需详细了解如何配置图表,请参阅使用 Metrics Explorer 时选择指标。
查看跟踪记录
如需查看跟踪记录数据,请执行以下操作:
-
在 Google Cloud 控制台中,前往 Trace 探索器页面:
您也可以使用搜索栏查找此页面。
- 在 Google Cloud 控制台的工具栏中,选择您的 Google Cloud 项目。对于 App Hub 配置,请选择 App Hub 宿主项目或已启用应用的文件夹的管理项目。
- 在页面的表格部分,选择一行。
在跟踪记录详细信息面板的甘特图中,选择一个 span。
此时会打开一个面板,其中显示跟踪请求的相关信息。这些详细信息包括方法、状态代码、字节数以及调用方的用户代理。
如需查看与此跟踪记录关联的日志,请选择日志和事件标签页。
该标签页会显示各个日志。如需查看日志条目的详细信息,请展开日志条目。您还可以点击查看日志,并使用 Logs Explorer 查看日志。
如需详细了解如何使用 Cloud Trace 探索器,请参阅查找和探索跟踪记录。
查看日志
在 Logs Explorer 中,您可以检查日志,还可以查看关联的跟踪记录(如果存在)。
-
在 Google Cloud 控制台中,转到 Logs Explorer 页面:
如果您使用搜索栏查找此页面,请选择子标题为 Logging 的结果。
在插桩应用中找到日志条目。如需查看详细信息,请展开日志条目。
点击包含跟踪记录消息的日志条目中的
跟踪记录,然后选择查看跟踪记录详细信息。
跟踪记录详情面板随即会打开并显示所选跟踪记录。
如需详细了解如何使用 Logs Explorer,请参阅使用 Logs Explorer 查看日志。