定义微服务

本文档介绍如何为 GKE 和 Cloud Run 等一些资源创建自定义服务和相关服务。

在 Cloud Monitoring 中,服务是一种您可以与 SLO 和提醒政策关联的构造。您可以为其创建 Monitoring 服务的一些资源也称为“服务”,但含义不同,例如:GKE 服务Cloud Run 服务

Monitoring 可以将基于 GKE 和 Cloud Run 的服务识别为 Monitoring 的候选服务。如需为它们创建服务,您需要指明哪些候选服务被视为 Monitoring 服务;Monitoring 会为您创建必要的基础架构。

您还可以定义任意自定义服务。

确定或创建服务

如需确定候选服务或创建自定义服务,请转到定义服务窗格:

  1. 在 Google Cloud 控制台中,转到 SLO 页面:

    前往 SLO

    如果您使用搜索栏查找此页面,请选择子标题为监控的结果。

  2. 服务概览页面上,执行以下任一操作:

    • 点击 定义服务

    • 当前状态窗格中,点击定义服务链接:

      使用**定义服务**创建自定义服务和用户确定的服务。

定义服务窗格中,您可以执行以下操作:

  • 从候选服务列表创建服务。
  • 定义自定义服务。

以下部分介绍了这些选项。

创建服务

Cloud Monitoring 可识别以下类型的潜在服务:

  • Cloud Service Mesh 服务
  • Google Kubernetes Engine 服务上的 Istio
  • App Engine 服务
  • GKE 命名空间
  • GKE 服务
  • GKE 工作负载
  • Cloud Run 服务

由于可能有多个这样的潜在服务,因此 Monitoring 不会认为您要将它们都被视为使用 SLO 的服务。如需指明 Monitoring 应将哪些潜在服务视为服务,您可以使用 Google Cloud 控制台或 API。

使用 Google Cloud 控制台创建服务

如需使用 Google Cloud 控制台创建服务,请执行以下操作:

  1. 服务概览页面上,点击定义服务

  2. 选择候选服务

    **候选服务**标签页中列出了可能的服务。

    列表中可能包含大量候选服务。您可以按如下方式过滤列表:

    1. 点击 过滤条件表。此时将显示过滤条件选项列表。

    2. 从过滤条件列表中选择一个选项。选中的选项将显示在过滤栏中。

    3. 点击过滤条件栏的选项旁边,然后开始输入内容。列表中提供了匹配的值。从列表中选择一个值。

  3. 点击潜在服务列表中的候选服务。

    点击条目时,系统将为您填写以下字段:

    • 显示名称设置为列表中的条目名称。您可以更改此值。

    • 根据候选服务生成用于配置新服务的 JSON 代码块。请勿更改此值。

  4. 点击提交。创建服务后,系统将显示成功通知。

使用 API 创建服务

您还可以使用 SLO API(属于 Cloud Monitoring API)创建服务。

要以编程方式创建服务,请将如下配置对象发布到 services.create 方法

GKE 命名空间

使用 GkeNamespace 结构,例如:

{
  "displayName": "test-kube-namespace",
  "gkeNamespace": {
    "location": "us-central1-c",
    "clusterName": "cluster-1",
    "namespaceName": "test-kube-namespace"
  }
}

GKE 服务

使用 GkeService 结构,例如:

{
  "displayName": "test-kube-service",
  "gkeService": {
    "location": "us-central1-c",
    "clusterName": "cluster-1",
    "namespaceName": "kube-system",
    "serviceName": "test-kube-service"
  }
}

GKE 工作负载

使用 GkeWorkload 结构,例如:

{
  "displayName": "frontend-a",
  "gkeWorkload": {
    "location": "us-central1-b",
    "clusterName": "cluster-2",
    "namespaceName": "default",
    "topLevelControllerType": "Deployment",
    "topLevelControllerName": "frontend-a"
  }
}

Cloud Run

使用 CloudRun 结构,例如:

{
  "displayName": "test-cloudrun-service",
  "cloudRun": {
    "serviceName": "test-cloudrun-service",
    "location": "us-central1"
  }
}

Cloud Service Mesh

使用 MeshIstio 结构,例如:

{
  "displayName": "test-mesh-istio-service",
  "meshIstio": {
    "meshUid": "mesh-identifier"
    "serviceName": "test-mesh-istio-service",
    "serviceNamespace": "default"
  }
}

Istio on GKE

使用 clusterIstio 结构,例如:

{
  "displayName": "test-cluster-istio-service",
  "clusterIstio": {
    "serviceName": "test-cloud-service",
    "clusterName": "cluster-2",
    "serviceNamespace": "default",
    "location": "us-central1"
  }
}

App Engine

使用 AppEngine 结构,例如:

{
  "displayName": "test-mesh-istio-service",
  "appEngine": {
    ""moduleId": "id-of-the-service"
  }
}

如需详细了解如何以编程方式管理服务,请参阅以下文档:

创建自定义服务

如果没有其他服务类型满足您的需求,请创建自定义服务。通过自定义服务,您可以采用对环境有意义的方式任意组合 SLO,或根据与现有微服务不对应的业务指标创建 SLO。

使用 Google Cloud 控制台创建自定义服务

如需使用 Google Cloud 控制台定义自定义服务,请执行以下操作:

  1. 点击服务概览页面上的定义服务以显示定义服务窗格。

  2. 选择自定义服务

    使用**自定义服务**标签页定义任意服务。

  3. 输入自定义服务的显示名称。

  4. 点击提交。创建服务后,系统将显示成功通知。

使用 API 创建自定义服务

要使用 SLO API 定义自定义服务,请将如下 Custom 配置对象发布到 services.create 方法

{
  "displayName": "hello-world-service",
  "custom": {}
}

如需详细了解如何以编程方式管理服务,请参阅使用 API

后续步骤

确定或创建新服务后,您可以执行以下操作:

  • 为新服务创建 SLO。您必须为新服务定义至少一个 SLO,以便服务正常运行。如需了解详情,请参阅创建 SLO
  • 转到新服务的信息中心。对于新服务,信息中心是空的,但您可以通过信息中心定义 SLO。如需了解详情,请参阅使用微服务信息中心