定义路由规则
要定义路由规则,必须指定 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 是包含还是排除路由上的度量。 支持两个操作: send
和 drop
。 如果未指定,那么缺省操作是发送度量值。
send
- 将根据路由规则在定义的路由上发送度量值。
drop
- 在定义的路由上发送度量时,将根据路由规则排除度量。
包含过滤器
包含过滤器定义用于确定将哪些度量路由到规则中指定的目标的条件。
要路由所有度量,请在配置路由时排除 inclusion_filters
定义。
包含过滤器由 operand
,operator
和 value
组成:
operand
-
操作数是目标中用于过滤数据的属性的名称。 支持以下操作数:
location
,service_name
,service_instance
,resource_type
和resource
。 将从目标 CRN 中抽取该值。 operator
-
支持两个运算符:
in
和is
。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_instance
、resource_type
和resource
- 适用于 [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-1111111111111
。 appconnect
,cloudant
和 containers-kupernetes
中的所有度量都将路由到 22222222-2222-2222-2222-222222222222
和 33333333-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-south
和 eu-de
区域的 appconnect
,cloudant
和 containers-kubernetes
的度量才会路由到目标 11111111-1111-1111-1111-111111111111
和 22222222-2222-2222-2222-222222222222
。
使用 API 定义路由规则
目标和包含过滤器是在 API 调用中使用 rules
定义的。 rules
是在 JSON 结构中定义的。
例如,以下示例创建名为 my-route
的路由,并将度量值从 us-east
区域中的 codeengine
和 container-registry
发送到目标 11111111-1111-1111-1111-111111111111
和 22222222-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 参考。