本文档介绍了为 Go、Java、Node.js 和 Python 语言提供的插桩示例的结构。这些示例提供了有关如何插桩应用的指南。
您可能对其他示例感兴趣,这些示例展示了不同的配置:
使用范例将指标和跟踪记录相关联介绍了如何配置 Go 应用以生成范例。范例是附加到指标数据点的示例数据点。您可以使用范例来关联跟踪记录数据和指标数据。
使用 Ops Agent 和 OpenTelemetry 协议 (OTLP)介绍了如何配置 Ops Agent 和 OTLP 接收器以从应用收集指标和轨迹。
示例的运作方式
Go、Java、Node.js 和 Python 示例使用 OpenTelemetry 协议收集跟踪记录和指标数据。这些示例会将日志记录框架配置为写入结构化日志,并将 OpenTelemetry 收集器配置为从应用的 stdout
流读取数据。如需框架建议,请参阅选择插桩方法。
应用是使用 Docker 构建和部署的。使用 OpenTelemetry 对应用进行插桩时,您无需使用 Docker。
您可以在 Cloud Shell、 Google Cloud资源或本地开发环境中运行这些示例。
深入探究
这些示例使用 OpenTelemetry 收集器作为边车来接收和丰富应用的遥测数据,然后使用 Google Cloud exporter 将这些数据发送到您的 Google Cloud 项目。导出器会将遥测数据转换为与 Cloud Trace API、Cloud Monitoring API 或 Cloud Logging API 兼容的格式。接下来,它们会通过发出 API 命令将转换后的数据发送到您的 Google Cloud 项目。
示例展示了如何执行以下操作:
使用 OpenTelemetry 收集器配置 OpenTelemetry 以收集指标和轨迹。
如果您查看示例,会发现此步骤的复杂性取决于语言。例如,对于 Go,此步骤会配置
main
函数以调用用于配置指标和轨迹集合的函数。对于 Go,HTTP 服务器和客户端也会更新。配置日志记录框架以写入结构化日志。
我们建议您的应用写入结构化日志,这会导致日志载荷采用 JSON 对象格式。对于这些日志,您可以构建用于搜索特定 JSON 路径的查询,还可以为日志载荷中的特定字段编制索引。
某些服务(例如 Google Kubernetes Engine)具有内置代理,可抓取结构化日志并将这些日志发送到您的 Google Cloud 项目。其他服务(例如 Compute Engine)则需要您安装代理,以抓取和发送日志。如需了解您安装的代理,请参阅 Ops Agent 概览。
您无需安装任何代理即可使用这些示例。
配置 Docker 文件。所有示例都包含以下 yaml 文件:
docker-compose.yaml
:为应用、OpenTelemetry 收集器和负载生成器配置服务。例如,OpenTelemetry 收集器otelcol
的服务指定了映像、卷和环境变量。OpenTelemetry 收集器的端点由OTEL_EXPORTER_OTLP_ENDPOINT
环境变量设置,该变量在app
服务中指定。otel-collector-config.yaml
:配置接收器、导出器、处理器和流水线。telemetry
服务定义了跟踪记录、指标和日志数据的流水线。每个流水线条目都指定了接收器、处理器和导出器。指标和轨迹使用相同的接收器otlp
。exporters
部分介绍了如何将收集的数据导出到 Google Cloud 项目。对于所有遥测数据,系统都会使用 Google Cloud 导出器。导出器会将遥测数据转换为与 Cloud Trace API、Cloud Monitoring API 或 Cloud Logging API 兼容的格式。接下来,它会通过发出 API 命令将转换后的数据发送到您的 Google Cloud 项目。docker-compose.creds.yaml
:此文件可选择性地在otelcol
容器中挂载Google Cloud 凭据文件。在本地机器上运行示例时,如果应用默认凭据 (ADC) 仅以文件形式提供,则需要此文件。
所需权限
如果您在 Cloud Shell、 Google Cloud资源或本地开发环境中运行示例,则只需具备本部分列出的权限即可。对于生产应用,服务账号通常会提供用于写入日志、指标和轨迹数据的凭据。
-
如需获得让示例应用写入日志、指标和轨迹数据所需的权限,请让您的管理员为您授予项目的以下 IAM 角色:
-
Logs Writer (
roles/logging.logWriter
) -
Monitoring Metric Writer (
roles/monitoring.metricWriter
) -
Cloud Trace Agent (
roles/cloudtrace.agent
)
-
Logs Writer (
-
如需获得查看日志、指标和轨迹数据所需的权限,请让您的管理员向您授予项目的以下 IAM 角色:
-
Logs Viewer (
roles/logging.viewer
) -
Monitoring Viewer (
roles/monitoring.viewer
) -
Cloud Trace User (
roles/cloudtrace.user
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
Logs Viewer (
必需的 API
以下部分介绍了向 Google Cloud 项目发送遥测数据所需的 API:
Google Cloud 控制台
Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.
Google Cloud CLI
Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs:
gcloud services enable logging.googleapis.commonitoring.googleapis.com cloudtrace.googleapis.com