ルーティング・ルールの定義
ルーティング・ルールを定義するには、メトリックの宛先として 1 つ以上のターゲットを指定する必要があります。 また、それらのメトリックがそれらの宛先にルーティングされる方法の条件を定義する 1 つ以上の包含フィルターを定義することもできます。
アカウントで定義するルートごとに、最大 10 個のルールを構成できます。 ルールは、領域内でルーティングされるメトリックと、それらのルーティング先を指定します。 詳しくは、 アカウントでの経路の機能について を参照してください。
ルールは、1 つのアクション、1 つ以上のターゲット、および 0 個以上の包含フィルターで構成されます。
ターゲット
ターゲットは、メトリックがルーティングされるターゲット ID のリストを定義します。
-
ルールごとに最大 3 つのターゲット ID を指定できます。
-
ルートを構成しているのと同じ地域、別の地域、および別のアカウントで使用可能なリソースに対して、ターゲット ID を定義できます。
例えば、次のようにターゲットのリストを定義できます。
"targets": [{"id":"11111111-1111-1111-1111-111111111111"},{"id":"22222222-2222-2222-2222-222222222222"}]
ターゲットは IBM Cloud Monitoring インスタンスでなければなりません。
アクション
アクションは、 IBM Cloud® Metrics Routing が経路上のメトリックを含めるか除外するかを定義します。 send
と drop
の 2 つのアクションがサポートされています。 指定しない場合、デフォルトのアクションはメトリックの送信です。
send
- メトリックは、ルーティング・ルールに基づいて、定義された経路で送信されます。
drop
- メトリックは、定義された経路でメトリックが送信されるときに、ルーティング・ルールに基づいて除外されます。
包含フィルター
包含フィルターは、ルールで指定されたターゲットにルーティングされるメトリックを決定するために使用される条件を定義します。
すべてのメトリックを経路指定するには、経路の構成時に inclusion_filters
定義を除外します。
包含フィルターは、 operand
、 operator
、および value
で構成されます。
operand
-
オペランドは、データのフィルター処理に使用されるターゲット内のプロパティーの名前です。 サポートされるオペランドは、
location
、service_name
、service_instance
、resource_type
、およびresource
です。 値はターゲット CRN から抽出されます。 operator
-
in
とis
の 2 つの演算子がサポートされています。in
-
オペランド・プロパティーの値は、値のリストと比較されます。
最大 20 個の値を定義できます。
is
-
オペランド・プロパティーの値は、単一値と比較されます。
is
を使用する場合、指定できる値は 1 つのみです。
value
-
メトリックが経路指定されるかどうかを決定するために
operand
プロパティーと比較されるストリングまたはストリングの配列。is
operator
を使用する場合、value
には単一ストリングを含める必要があります。in
operator
を使用する場合、value
は配列に複数のストリングを含めることができます。有効な値は、
operand
によって異なります。location
- IBM Cloud Metrics Routing が使用可能な任意のロケーション。
service_name
- IBM Cloud Metrics Routing を介して管理されるメトリックを生成する [IBM Cloud サービスの CRN サービス名
service_instance
、resource_type
、およびresource
- IBM Cloud Metrics Routing で管理されるメトリックを生成する [IBM Cloud サービスに該当する値
包含フィルターを構成する場合は、以下の制限に注意してください。
-
ルールごとに最大 7 つの包含フィルターを構成できます。
-
inclusion_filter.values
には最大 20 個の値を構成できます。 -
inclusion_filter.values
用に構成された各値は、最大 100 文字にすることができます。
IAM アクセス権限
ルーティング・ルールを使用するには、適切なIAMロールが必要です。 IAM 役割について詳しくは、 IAM アクセス権限の管理 を参照してください。
UIを使ったルーティングルールの定義
詳しくは、ルートの管理 を参照してください。
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 を使用したルーティング・ルールの定義
ターゲットおよび包含フィルターは、 rules
を使用して API 呼び出しで定義されます。 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 リファレンス を参照してください。