IBM Cloud Docs
定义路由规则

定义路由规则

要定义路由规则,必须指定 1 或更多目标作为度量的目标。 您还可以定义 1 或更多包含过滤器,这些过滤器用于定义如何将这些度量传递到这些目标的条件。

对于在帐户中定义的每个路径,最多可以配置 10 个规则。 这些规则指定在区域中路由的度量以及路由这些度量的位置。 有关更多信息,请参阅 了解路径在帐户中的工作方式

规则由 1 操作,1 或更多目标以及 0 或更多包含过滤器组成。

目标

目标定义在其中路由度量的目标标识的列表。

  • 每个规则最多可以指定三个目标标识。

  • 您可以为在配置路由的同一区域,不同区域和不同帐户中可用的资源定义目标标识。

例如,您可以定义目标列表,如下所示:

"targets": [{"id":"11111111-1111-1111-1111-111111111111"},{"id":"22222222-2222-2222-2222-222222222222"}]

目标必须是 IBM Cloud Monitoring 实例。

操作

操作定义 IBM Cloud® Metrics Routing 是包含还是排除路由上的度量。 支持两个操作: senddrop。 如果未指定,那么缺省操作是发送度量值。

send
将根据路由规则在定义的路由上发送度量值。
drop
在定义的路由上发送度量时,将根据路由规则排除度量。

包含过滤器

包含过滤器定义用于确定将哪些度量路由到规则中指定的目标的条件。

要路由所有度量,请在配置路由时排除 inclusion_filters 定义。

包含过滤器由 operandoperatorvalue 组成:

operand

操作数是目标中用于过滤数据的属性的名称。 支持以下操作数: locationservice_nameservice_instanceresource_typeresource。 将从目标 CRN 中抽取该值。

operator

支持两个运算符: inis

in

将操作数属性的值与值列表进行比较。

最多可以定义 20 个值。

is

将操作数属性的值与单个值进行比较。

使用 is 时,只能指定 1 值。

value

要与 operand 属性进行比较的字符串或字符串数组,以确定度量是否已路由。 使用 is operator 时,value 必须包含单个字符串。 使用 in operator 时,value 可以在数组中包含多个字符串。

有效值取决于 operand

location
IBM Cloud Metrics Routing 可用的任何位置。
service_name
[IBM Cloud 服务的 CRN 服务名称,用于生成通过IBM Cloud Metrics Routing 管理的度量
service_instanceresource_typeresource
适用于 [IBM Cloud 服务的值,该服务生成通过IBM Cloud Metrics Routing 管理的度量

配置包含过滤器时,请注意以下限制。

  • 最多可以为每个规则配置 7 个包含过滤器。

  • 最多可以为 inclusion_filter.values 配置 20 个值。

  • inclusion_filter.values 配置的每个值最多可以为 100 个字符。

IAM 访问权

用户必须具有相应的 IAM 角色才能使用路由规则。 有关 IAM 角色的信息,请参阅 管理 IAM 访问权

使用用户界面定义路由规则

更多信息,请参阅 管理路由

使用 CLI 定义路由规则

路由和包含过滤器的规则以 JSON 格式定义。 通过以下方式定义规则:

  • 通过使用 --rules 选项,将直接在命令上以 JSON 形式传递信息。
  • 使用 --files 选项信息作为 JSON 文件传递。

使用 --rules 选项的示例

以下示例直接在 --rules 选项上指定规则。 在此示例中,来自 us-east 的所有度量都将路由到 11111111-1111-1111-1111-1111111111111appconnectcloudantcontainers-kupernetes 中的所有度量都将路由到 22222222-2222-2222-2222-22222222222233333333-3333-3333-3333-3333333333333

[{"action": "send", "targets":[{"id":"11111111-1111-1111-1111-1111111111111"}], "inclusion_filters":[{"operand": "location","operator": "is","values": ["us-east"]}]},{"targets":[{"id":"22222222-2222-2222-2222-222222222222"},{"id":"33333333-3333-3333-3333-3333333333333"}], "inclusion_filters":[{"operand": "service_name","operator": "in","values": ["appconnect","cloudant","containers-kubernetes"]}]}]'

使用 --file选项的示例

以下示例通过在 --file 选项上传递名为 rules_def.json 的 JSON 文件来指定规则:

--file rules_def.json

rules_def.json 文件包含:

[
  {
    "action":"send",
    "targets": [
      {
        "id":"11111111-1111-1111-1111-111111111111"
      },
      {
        "id":"22222222-2222-2222-2222-222222222222"
      }
    ],
    "inclusion_filters": [
      {
          "operand": "service_name",
          "operator": "in",
          "values": [
            "appconnect",
            "cloudant",
            "containers-kubernetes"
          ]
        },
        {
          "operand": "location",
          "operator": "in",
          "values": [
            "us-south",
            "eu-de"
          ]
        }
    ]
  }
]

在此示例中,只有来自 us-southeu-de 区域的 appconnectcloudantcontainers-kubernetes 的度量才会路由到目标 11111111-1111-1111-1111-11111111111122222222-2222-2222-2222-222222222222

使用 API 定义路由规则

目标和包含过滤器是在 API 调用中使用 rules 定义的。 rules 是在 JSON 结构中定义的。

例如,以下示例创建名为 my-route 的路由,并将度量值从 us-east 区域中的 codeenginecontainer-registry 发送到目标 11111111-1111-1111-1111-11111111111122222222-2222-2222-2222-222222222222

curl -X POST https://private.<REGION>.metrics-router.cloud.ibm.com/api/v3/routes -H "Authorization: Bearer <IAM_TOKEN>" -H 'content-type: application/json' -d '{
    "name": "my-route",
    "rules": [
      {
        "action":"send",
        "targets": [{"id":"11111111-1111-1111-1111-111111111111"}, {"id":"22222222-2222-2222-2222-222222222222"}],
        "inclusion_filters": [
          {
            "operand": "location",
            "operator": "is",
            "values": ["us-east"]
          },
          {
            "operand": "service_name",
            "operator": "in",
            "values": ["codeengine","container-registry"]
          }
        ]
      }
    ]
  }'

有关更多信息,请参阅 API 参考。