C++ 和 OpenTelemetry

本页面适用于希望使用 OpenTelemetry 收集 C++ 应用的 Cloud Trace 数据的应用开发者。OpenTelemetry 是一种供应商中立的插桩框架,可用于收集跟踪记录和指标数据。如需了解如何检测代码,请参阅插桩和可观测性

本页将引导您完成以下步骤:

  • 安装 OpenTelemetry 软件包。
  • 配置应用以将 span 导出到 Cloud Trace。
  • 配置您的平台。

如需了解版本信息,请参阅以下内容:

如需查看 OpenTelemetry 参考内容,请参阅以下内容:

有关适用于 C++ 的 OpenTelemetry 的最新详细信息以及其他文档和示例,请参阅 OpenTelemetry

准备工作

启用 Cloud Trace API。

启用 API 所需的角色

如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

启用 API

安装 OpenTelemetry 软件包

配置将 span 导出到 Cloud Trace

如需配置轨迹数据导出,请在 main() 方法中调用 google::cloud::otel::ConfigureBasicTracing(...) 方法:

namespace gc = ::google::cloud;
[](std::string project_id) {
  auto project = gc::Project(std::move(project_id));
  auto configuration = gc::otel::ConfigureBasicTracing(project);

  MyApplicationCode();
}

字段 project_id 是您要存储轨迹的 Google Cloud 项目。

方法 ConfigureBasicTracing(...) 会实例化一个实现 Cloud Trace 导出器的 TracerProvider 对象。如果对 ConfigureBasicTracing(...) 的调用返回的对象超出范围,则会恢复之前的 TracerProvider 对象(如果存在)。

配置采样率

应用可能会生成大量跟踪数据。以下示例展示了如何配置采样率:

namespace gc = ::google::cloud;
[](std::string project_id) {
  auto project = gc::Project(std::move(project_id));
  auto options = gc::Options{}.set<gc::otel::BasicTracingRateOption>(.001);
  auto