本文档介绍了如何在 Google Kubernetes Engine 上运行 Google 构建的 OpenTelemetry 收集器,以从插桩的应用中收集 OTLP 日志、指标和跟踪记录,然后将这些数据导出到 Google Cloud。
准备工作
运行 Google 构建的 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:
Kubernetes 集群。如果您没有 Kubernetes 集群,请按照 GKE 快速入门中的说明进行操作。
以下命令行工具:
gcloud
kubectl
gcloud
和kubectl
工具是 Google Cloud CLI 的一部分。如需了解如何安装这些工具,请参阅管理 Google Cloud CLI 组件。如需查看已安装的 gcloud CLI 组件,请运行以下命令:gcloud components list
为收集器配置权限
如果您已停用 GKE Workload Identity,则可以跳过本部分。
如需确保 OpenTelemetry 收集器的 Kubernetes 服务账号拥有导出遥测数据所需的权限,请让您的管理员为 OpenTelemetry 收集器的 Kubernetes 服务账号授予项目的以下 IAM 角色:
-
Monitoring Metric Writer (
roles/monitoring.metricWriter
) -
Logging Log Writer (
roles/logging.logWriter
) -
Cloud Trace Agent (
roles/cloudtrace.agent
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您的管理员也可以通过自定义角色或其他预定义角色向 OpenTelemetry 收集器的 Kubernetes 服务账号授予所需的权限。
如需配置权限,请使用以下 add-iam-policy-binding
命令:
gcloud projects add-iam-policy-binding projects/PROJECT_ID \ --role=roles/logging.logWriter \ --member=principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector gcloud projects add-iam-policy-binding projects/PROJECT_ID \ --role=roles/monitoring.metricWriter \ --member=principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector gcloud projects add-iam-policy-binding projects/PROJECT_ID \ --role=roles/cloudtrace.agent \ --member=principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector
在运行这些命令之前,请替换以下变量:
- PROJECT_ID:项目的标识符。
- PROJECT_NUMBER: Google Cloud 项目编号。
部署收集器
可以直接从自行管理的 OTLP Kubernetes 注入代码库提供的经过审查的示例部署收集器流水线。在将 PROJECT_ID 替换为您的 Google Cloud 项目的 ID 后,您可以使用以下命令直接从 GitHub 部署:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID export PROJECT_NUMBER=PROJECT_NUMBER kubectl kustomize https://github.com/GoogleCloudPlatform/otlp-k8s-ingest.git/k8s/base | envsubst | kubectl apply -f -
在运行这些命令之前,请替换以下变量:
- PROJECT_ID:项目的标识符。
- PROJECT_NUMBER:项目的数字标识符。
配置收集器
我们提供了 OpenTelemetry 收集器配置,供您与 Google 构建的收集器搭配使用。此配置旨在传递大量 OTLP 指标、日志和跟踪记录,并附加一致的 GKE 和 Kubernetes 元数据。 此配置还可用于防止常见的注入问题。您可以向配置添加元素,但我们强烈建议您不要移除元素。
本部分介绍了所提供的配置、关键组件(例如导出器、处理器、接收器)和其他可用组件。
提供的收集器配置
您可以在otlp-k8s-ingest
代码库中找到适用于 Kubernetes 环境的收集器配置:
导出器
收集器配置包含以下导出器:
googlecloud
导出器,用于日志和跟踪记录。此导出器配置了默认日志名称。googlemanagedprometheus
导出器,用于指标。此导出器不需要任何配置,但具有配置选项。如需了解googlemanagedprometheus
导出器的配置选项,请参阅 Google Cloud Managed Service for Prometheus 文档中的 OpenTelemetry 收集器使用入门。
处理器
收集器配置包括以下处理器:
batch
:配置为在达到每个请求的 Google Cloud 条目数量上限时,或按照每 5 秒的 Google Cloud 最小时间间隔(以先发生者为准)来批处理遥测请求。memory_limiter
:限制收集器的内存用量,当超过限制时,通过丢弃数据点来防止内存不足崩溃。resourcedetection
:自动检测 Google Cloud 资源标签,例如project_id
和cluster_name
。k8sattributes
:自动将 Kubernetes 资源属性映射到遥测标签。transform
:重命名与 Google Cloud受监控的资源上的标签发生冲突的指标标签。
接收器
收集器配置仅包含 otlp
接收器。
如需了解如何对应用进行插桩以将 OTLP 跟踪记录和指标发送到收集器的 OTLP 端点,请参阅选择插桩方法。
可用组件
Google 构建的 OpenTelemetry 收集器包含大多数用户在 Google Cloud Observability 中实现丰富体验所需的组件。如需查看可用组件的完整列表,请参阅 opentelemetry-operations-collector
代码库中的组件。
如需请求更改或添加可用组件,请在 opentelemetry-operations-collector
代码库中打开功能请求。
生成遥测数据
本部分介绍如何部署一个示例应用并将该应用指向收集器的 OTLP 端点,以及在Google Cloud中查看遥测数据。示例应用是一个小型生成器,用于将跟踪记录、日志和指标导出到收集器。
如果您已有使用 OpenTelemetry SDK 进行插桩处理的应用,则可以改为将相应应用指向收集器的端点。
如需部署示例应用,请运行以下命令:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/main/sample/app.yaml
如需将使用 OpenTelemetry SDK 的现有应用指向收集器的端点,请将 OTEL_EXPORTER_OTLP_ENDPOINT
环境变量设置为 http://opentelemetry-collector.opentelemetry.svc.cluster.local:4317
。
几分钟后,应用生成的遥测数据会开始通过收集器流向 Google Cloud 控制台以用于每个信号。
查看遥测数据
Google 构建的 OpenTelemetry 收集器会将插桩应用中的指标、日志和跟踪记录发送到 Google Cloud Observability。Collector 还会发送自我可观测性指标。以下部分介绍了如何查看此遥测数据。
查看指标
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 查看日志。
观察和调试收集器
Google 构建的 OpenTelemetry 收集器会自动提供自我可观测性指标,可帮助您监控性能并确保 OTLP 注入流水线的持续正常运行时间。
如需监控收集器,请安装收集器的示例信息中心。此信息中心可让您一目了然地了解来自收集器的多个指标,包括正常运行时间、内存用量以及对 Google Cloud Observability 的 API 调用。
如需安装信息中心,请执行以下操作:
-
在 Google Cloud 控制台中,前往
信息中心页面:
如果您使用搜索栏查找此页面,请选择子标题为监控的结果。
- 点击信息中心模板。
- 搜索 OpenTelemetry 收集器信息中心。
- 可选:如需预览信息中心,请选择相应信息中心。
点击 playlist_add 将信息中心添加到您的列表,然后完成对话框。
您可以通过该对话框选择信息中心的名称,并向信息中心添加标签。
如需详细了解如何安装信息中心,请参阅安装信息中心模板。