本文档介绍如何在 Container-Optimized OS 上运行 Google 构建的 OpenTelemetry 收集器,以从插桩的应用中收集 OTLP 日志、指标和轨迹,然后将这些数据导出到 Google Cloud。
准备工作
运行 OpenTelemetry 收集器需要以下资源:
启用了 Cloud Monitoring API、Cloud Trace API 和 Cloud Logging API 的 Google Cloud 项目。
如果您没有 Google Cloud 项目,请执行以下操作:
在 Google Cloud 控制台中,转到新建项目:
在项目名称字段中,为您的项目输入一个名称,然后点击创建。
转到结算:
在页面顶部选择您刚刚创建的项目(如果尚未选择)。
系统会提示您选择现有付款资料或创建新的付款资料。
默认情况下,系统会为新项目启用 Monitoring API、Trace API 和 Logging API。
如果您已有 Google Cloud 项目,请确保已启用 Monitoring API、Trace API 和 Logging API:
Container-Optimized OS 虚拟机 (VM)。如果您没有 Container-Optimized OS 虚拟机,请按照创建和配置实例中的说明操作。
安装了
gcloud
。如需了解如何安装gcloud
,请参阅安装 Google Cloud CLI。
为收集器配置权限
默认情况下,容器优化型操作系统虚拟机使用 Compute Engine 默认服务账号 PROJECT_NUMBER-compute@developer.gserviceaccount.com
。此服务账号通常具有写入本文档中所述的指标和日志所需的 Identity and Access Management (IAM) 角色:
- Monitoring Metric Writer (
roles/monitoring.metricWriter
) - Logging Log Writer (
roles/logging.logWriter
)
如果您要为实例配置自定义服务账号,请参阅管理对服务账号的访问权限。
部署收集器
如需运行 Google 构建的 OpenTelemetry Collector,您需要为 Container-Optimized OS 虚拟机提供配置文件。您可以使用 cloud-init
工具编写配置文件。以下是使用 Google 构建的 Collector 的建议 cloud-init
文件:
我们建议您创建一个 Docker bridge
网络,以便收集器容器与系统上将发送遥测数据的任何其他容器之间能够顺利通信。如需创建网络,请运行以下命令:
docker network create -d bridge otel otel
使用以下命令运行 Collector 容器:
上述命令会执行以下操作:
- 在后台运行收集器容器。
- 将 Collector 容器附加到之前创建的 otel 桥接网络。其他容器可以连接到桥接,以发送遥测数据。
- 将配置文件挂载到容器上,以便访问该文件以配置 Collector。
配置收集器
我们提供了一个 OpenTelemetry 收集器配置,供您与 Google 构建的收集器搭配使用。此配置旨在传递大量 OTLP 指标、日志和跟踪记录。此配置还可用于防止常见的提取问题。您可以向配置中添加元素,但我们强烈建议您不要移除元素。
本部分介绍了提供的配置、关键组件(例如导出器、处理器、接收器)以及其他可用组件。
提供的收集器配置
您可以在opentelemetry-operations-collector
代码库的 google-built-opentelemetry-collector
目录中找到 Collector 配置:
导出器
收集器配置包括以下导出程序:
googlecloud
导出器,适用于日志和跟踪记录。此导出器配置了默认日志名称。googlemanagedprometheus
导出器,用于指标。此导出器无需任何配置,但有配置选项。如需了解googlemanagedprometheus
导出器的配置选项,请参阅 Google Cloud Managed Service for Prometheus 文档中的 OpenTelemetry 收集器使用入门。
处理器
收集器配置包括以下处理器:
batch
:配置为在达到每个请求的 Google Cloud 条目数量上限时,或按照每 5 秒的 Google Cloud 最小时间间隔(以先发生者为准)来批处理遥测请求。memory_limiter
:将收集器的内存用量限制在合理的级别,以便在超出限制时丢弃数据点来防止内存不足崩溃。resourcedetection
:自动检测 Google Cloud 资源标签,例如project_id
。
接收器
收集器配置仅包含 otlp
接收器。如需了解如何对应用进行插桩处理以将 OTLP 跟踪记录和指标发送到收集器的 OTLP 端点,请参阅选择插桩方法。
可用组件
Google 构建的 OpenTelemetry 收集器包含大多数用户在 Google Cloud Observability 中实现丰富体验所需的组件。如需查看可用组件的完整列表,请参阅 opentelemetry-operations-collector
代码库中的组件。
如需请求对可用组件进行任何更改或添加,请在 opentelemetry-operations-collector
代码库中提交功能请求。
生成遥测数据
您可以使用开源 telemetrygen
工具测试配置。OpenTelemetry 项目在 GitHub Container Registry 中提供了一个容器。
如果您更改了部署收集器中 Docker 命令中使用的默认值,请在运行以下命令之前替换以下占位符:
- otel:您在创建 Docker
bridge
网络时指定的名称。 - opentelemetry-collector:您在运行容器时指定的名称。
生成日志
如需使用 telemetrygen
工具生成日志,请运行以下命令:
docker run \ --net=otel \ ghcr.io/open-telemetry/opentelemetry-collector-contrib/telemetrygen:v0.105.0 \ logs --otlp-insecure --rate=3 --duration=5m \ --otlp-endpoint=opentelemetry-collector:4317
生成指标
如需使用 telemetrygen
工具生成指标,请运行以下命令:
docker run \ --net=otel \ ghcr.io/open-telemetry/opentelemetry-collector-contrib/telemetrygen:v0.105.0 \ metrics --otlp-insecure --rate=0.1 --duration=5m \ --otlp-endpoint=opentelemetry-collector:4317
生成指标
如需使用 telemetrygen
工具生成轨迹,请运行以下命令:
docker run \ --net=otel \ ghcr.io/open-telemetry/opentelemetry-collector-contrib/telemetrygen:v0.105.0 \ traces --otlp-insecure --rate=3 --duration=5m \ --otlp-endpoint=opentelemetry-collector:4317
几分钟后,应用生成的遥测数据会开始通过收集器流向 Google Cloud 控制台以用于每个信号。
查看遥测数据
Google 构建的 OpenTelemetry 收集器会将插桩应用的指标、日志和轨迹发送到 Google Cloud Observability。收集器还会发送自可观测性指标。以下部分介绍了如何查看此遥测数据。
查看指标
Google 构建的 OpenTelemetry 收集器会收集 Prometheus 指标,您可以使用 Metrics Explorer 查看这些指标。收集的指标取决于应用的插桩,不过 Google 构建的 Collector 也会写入一些自定义指标。
如需查看 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 的结果。
找到插桩应用中的日志条目。如需查看详细信息,请展开日志条目。
点击包含跟踪消息的日志条目中的
Traces,然后选择 View trace details(查看跟踪记录详情)。
跟踪记录详情面板随即会打开并显示所选跟踪记录。
如需详细了解如何使用 Logs Explorer,请参阅使用 Logs Explorer 查看日志。
观察和调试收集器
Google 构建的 OpenTelemetry 收集器会自动提供自我可观测性指标,可帮助您监控其性能并确保 OTLP 注入流水线的持续正常运行时间。
如需监控收集器,请安装收集器的示例信息中心。此信息中心可让您一目了然地了解来自收集器的多个指标,包括正常运行时间、内存用量以及对 Google Cloud Observability 的 API 调用。
如需安装信息中心,请执行以下操作:
-
在 Google Cloud 控制台中,转到
信息中心页面:
如果您使用搜索栏查找此页面,请选择子标题为监控的结果。
- 点击信息中心模板。
- 搜索 OpenTelemetry Collector 信息中心。
- 可选:如需预览信息中心,请选择该信息中心。
点击 playlist_add 将信息中心添加到列表,然后完成对话框。
您可以在该对话框中选择信息中心的名称,并为信息中心添加标签。
如需详细了解如何安装信息中心,请参阅安装信息中心模板。