通过微服务可观测性在 Google Cloud 上设置 gRPC 应用

借助微服务可观测性工具,您可以对应用进行插桩处理,以在 Cloud Monitoring、Cloud Logging 和 Cloud Trace 中从部署在 Google Cloud 和其他位置的 gRPC 工作负载收集和呈现遥测数据。微服务可观测性适用于通过启用 Microservices API 获得 Monitoring、Logging 和 Trace 的访问权限的任何部署。

在本教程中,您将了解如何使用 Compute Engine 在 Google Cloud 上构建简单的 gRPC 应用以利用微服务可观测性功能、通过微服务可观测性对应用进行插桩处理以及在 Monitoring 和 Logging 上进行实时查看。

目标

概括来讲,您需要执行以下步骤。

  • 作为服务开发者,您可以:

    • 使用您选择的语言(C++、Go 或 Java)创建 gRPC 应用。
    • 在您的应用中选择启用并控制微服务可观测性插件。
    • 在 Compute Engine 虚拟机上部署应用。
  • 作为服务运营商,您可以通过多种方式使用收集的数据:

    • 通过 Trace 查看跟踪记录。
    • 在名为微服务 (gRPC) Monitoring 的监控信息中心上查看指标。
    • 在 Metrics Explorer 上查看指标。
    • 在 Logs Explorer 上检查日志条目。

费用

在本文档中,您将使用 Google Cloud的以下收费组件:

如需根据您的预计使用量来估算费用,请使用价格计算器

新 Google Cloud 用户可能有资格申请免费试用

完成本文档中描述的任务后,您可以通过删除所创建的资源来避免继续计费。如需了解详情,请参阅清理

准备工作

控制台

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 启用 Compute Engine 和 Microservices API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色

    启用 API

  5. 确保您拥有 Create Service Accounts IAM 角色 (roles/iam.serviceAccountCreator) 和 Project IAM Admin 角色 (roles/resourcemanager.projectIamAdmin)。了解如何授予角色
  6. 在 Google Cloud 控制台中,前往创建服务账号页面。

    转到“创建服务账号”
  7. 选择您的项目。
  8. 服务账号名称字段中,输入一个名称。 Google Cloud 控制台会根据此名称填充服务账号 ID 字段。

    服务账号说明字段中,输入说明。例如,Service account for quickstart

  9. 点击创建并继续
  10. 向服务账号授予以下角色:Logging > Logs Viewer > Logs Writer、Monitoring > Monitoring Editor > Metrics Writer、Trace > Trace Admin > Trace Agent

    如需授予角色,请找到选择角色列表,然后选择相应角色。

    如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。

  11. 点击继续
  12. 服务账号用户角色字段中,输入将服务账号挂接到其他资源(例如 Compute Engine 实例)的正文的标识符。

    这通常是 Google 账号的电子邮件地址。

  13. 点击完成以完成服务账号的创建过程。

  • In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  • Verify that billing is enabled for your Google Cloud project.

  • 启用 Compute Engine 和 Microservices API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色

    启用 API

  • 确保您拥有 Create Service Accounts IAM 角色 (roles/iam.serviceAccountCreator) 和 Project IAM Admin 角色 (roles/resourcemanager.projectIamAdmin)。了解如何授予角色
  • 在 Google Cloud 控制台中,前往创建服务账号页面。

    转到“创建服务账号”
  • 选择您的项目。
  • 服务账号名称字段中,输入一个名称。 Google Cloud 控制台会根据此名称填充服务账号 ID 字段。

    服务账号说明字段中,输入说明。例如,Service account for quickstart

  • 点击创建并继续
  • 向服务账号授予以下角色:Logging > Logs Viewer > Logs Writer、Monitoring > Monitoring Editor > Metrics Writer、Trace > Trace Admin > Trace Agent

    如需授予角色,请找到选择角色列表,然后选择相应角色。

    如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。

  • 点击继续
  • 服务账号用户角色字段中,输入将服务账号挂接到其他资源(例如 Compute Engine 实例)的正文的标识符。

    这通常是 Google 账号的电子邮件地址。

  • 点击完成以完成服务账号的创建过程。

  • 阅读微服务可观测性概览
  • 了解两个支持的环境变量,决定要使用的环境变量,并确定环境变量所需的值。
  • cli

    1. 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
    2. 安装 Google Cloud CLI。

    3. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

    4. 如需初始化 gcloud CLI,请运行以下命令:

      gcloud init
    5. 创建或选择 Google Cloud 项目

      选择或创建项目所需的角色

      • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
      • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予角色
      • 创建 Google Cloud 项目:

        gcloud projects create PROJECT_ID

        PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

      • 选择您创建的 Google Cloud 项目:

        gcloud config set project PROJECT_ID

        PROJECT_ID 替换为您的 Google Cloud 项目名称。

    6. 验证是否已为您的 Google Cloud 项目启用结算功能

    7. 启用 Compute Engine 和 Microservices API:

      启用 API 所需的角色

      如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色

      gcloud services enable compute.googleapis.com microservices.googleapis.com
    8. 设置身份验证:

      1. 确保您拥有 Create Service Accounts IAM 角色 (roles/iam.serviceAccountCreator) 和 Project IAM Admin 角色 (roles/resourcemanager.projectIamAdmin)。了解如何授予角色
      2. 创建服务账号:

        gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

        SERVICE_ACCOUNT_NAME 替换为服务账号的名称。

      3. 向服务账号授予角色。对以下每个 IAM 角色运行以下命令一次:roles/logging.logWriter, roles/monitoring.metricWriter, roles/cloudtrace.agent

        gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

        请替换以下内容:

        • SERVICE_ACCOUNT_NAME:服务账号的名称
        • PROJECT_ID:您在其中创建服务账号的项目的 ID
        • ROLE:要授予的角色
      4. 向将服务账号关联到其他资源的主账号授予所需角色。

        gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

        请替换以下内容:

        • SERVICE_ACCOUNT_NAME:服务账号的名称
        • PROJECT_ID:您在其中创建服务账号的项目的 ID
        • USER_EMAIL:Google 账号的电子邮件地址
    9. 安装 Google Cloud CLI。

    10. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

    11. 如需初始化 gcloud CLI,请运行以下命令:

      gcloud init
    12. 创建或选择 Google Cloud 项目

      选择或创建项目所需的角色

      • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
      • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予角色
      • 创建 Google Cloud 项目:

        gcloud projects create PROJECT_ID

        PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

      • 选择您创建的 Google Cloud 项目:

        gcloud config set project PROJECT_ID

        PROJECT_ID 替换为您的 Google Cloud 项目名称。

    13. 验证是否已为您的 Google Cloud 项目启用结算功能

    14. 启用 Compute Engine 和 Microservices API:

      启用 API 所需的角色

      如需启用 API,您需要拥有 Service Usage Admin IAM 角色 (roles/serviceusage.serviceUsageAdmin),该角色包含 serviceusage.services.enable 权限。了解如何授予角色

      gcloud services enable compute.googleapis.com microservices.googleapis.com
    15. 设置身份验证:

      1. 确保您拥有 Create Service Accounts IAM 角色 (roles/iam.serviceAccountCreator) 和 Project IAM Admin 角色 (roles/resourcemanager.projectIamAdmin)。了解如何授予角色
      2. 创建服务账号:

        gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

        SERVICE_ACCOUNT_NAME 替换为服务账号的名称。

      3. 向服务账号授予角色。对以下每个 IAM 角色运行以下命令一次:roles/logging.logWriter, roles/monitoring.metricWriter, roles/cloudtrace.agent

        gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

        请替换以下内容:

        • SERVICE_ACCOUNT_NAME:服务账号的名称
        • PROJECT_ID:您在其中创建服务账号的项目的 ID
        • ROLE:要授予的角色
      4. 向将服务账号关联到其他资源的主账号授予所需角色。

        gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

        请替换以下内容:

        • SERVICE_ACCOUNT_NAME:服务账号的名称
        • PROJECT_ID:您在其中创建服务账号的项目的 ID
        • USER_EMAIL:Google 账号的电子邮件地址
    16. 阅读微服务可观测性概览
    17. 了解两个支持的环境变量,决定要使用的环境变量,并确定环境变量所需的值。