ルーティングプロセッサ

reroute プロセッサは、ドキュメントを別のターゲットインデックスまたはデータストリームにルーティングすることを可能にします。主に2つのモードがあります:

destination オプションを設定すると、ターゲットが明示的に指定され、dataset および namespace オプションは設定できません。

destination オプションが設定されていない場合、このプロセッサはデータストリームモードになります。このモードでは、reroute プロセッサは データストリーム命名規則 に従うデータストリームでのみ使用できます。非準拠の名前を持つデータストリームでこのプロセッサを使用しようとすると、例外が発生します。

データストリームの名前は、<type>-<dataset>-<namespace> の3つの部分で構成されています。詳細については、データストリーム命名規則 のドキュメントを参照してください。

このプロセッサは、静的値またはドキュメントからのフィールド参照の両方を使用して、新しいターゲットの dataset および namespace コンポーネントを決定できます。詳細については、表38、「ルーティングオプション」 を参照してください。

reroute プロセッサを使用してデータストリームの type を変更することはできません。

reroute プロセッサが実行された後、現在のパイプラインの他のすべてのプロセッサはスキップされ、最終パイプラインも含まれます。現在のパイプラインが パイプライン のコンテキストで実行されている場合、呼び出し元のパイプラインもスキップされます。これは、パイプライン内で最大1つの reroute プロセッサが実行されることを意味し、if、else-if、else-if、… 条件に似た相互排他的なルーティング条件を定義できます。

ルーティングプロセッサは、data_stream.<type|dataset|namespace> フィールドが新しいターゲットに従って設定されることを保証します。ドキュメントに event.dataset 値が含まれている場合、それは data_stream.dataset と同じ値に更新されます。

クライアントは最終ターゲットへの権限を持っている必要があることに注意してください。そうでない場合、ドキュメントは次のようなセキュリティ例外で拒否されます:

Js

  1. {"type":"security_exception","reason":"action [indices:admin/auto_create] is unauthorized for API key id [8-dt9H8BqGblnY2uSI--] of user [elastic/fleet-server] on indices [logs-foo-default], this action is granted by the index privileges [auto_configure,create_index,manage,all]"}


表38. ルーティングオプション

名前 必須 デフォルト 説明
destination いいえ - ターゲットの静的値。dataset または namespace オプションが設定されている場合は設定できません。
dataset いいえ {{data_stream.dataset}} データストリーム名のデータセット部分のフィールド参照または静的値。インデックス名 の基準に加えて、- を含むことはできず、100文字を超えてはなりません。例の値は nginx.accessnginx.error です。


フィールド参照は、{{double}} または {{{triple}}} 中括弧で示されるマスタッシュのような構文をサポートします。フィールド参照を解決する際、プロセッサは無効な文字を _ に置き換えます。すべてのフィールド参照が null、欠落、または非文字列値に解決される場合、インデックス名の <dataset> 部分をフォールバックとして使用します。 |
| namespace | いいえ | {{data_stream.namespace}} | データストリーム名のネームスペース部分のフィールド参照または静的値。インデックス名 の基準に従って許可される文字を参照してください。100文字を超えてはなりません。

フィールド参照は、{{double}} または {{{triple}}} 中括弧で示されるマスタッシュのような構文をサポートします。フィールド参照を解決する際、プロセッサは無効な文字を _ に置き換えます。すべてのフィールド参照が null、欠落、または非文字列値に解決される場合、インデックス名の <namespace> 部分をフォールバックとして使用します。 |
| description | いいえ | - | プロセッサの説明。プロセッサの目的や設定を説明するのに役立ちます。 |
| if | いいえ | - | プロセッサを条件付きで実行します。条件付きでプロセッサを実行する を参照してください。 |
| ignore_failure | いいえ | false | プロセッサの失敗を無視します。パイプラインの失敗を処理する を参照してください。 |
| on_failure | いいえ | - | プロセッサの失敗を処理します。パイプラインの失敗を処理する を参照してください。 |
| tag | いいえ | - | プロセッサの識別子。デバッグやメトリクスに役立ちます。 |

if オプションは、ドキュメントが新しいターゲットにルーティングされる条件を定義するために使用できます。

Js

  1. {
  2. "reroute": {
  3. "tag": "nginx",
  4. "if" : "ctx?.log?.file?.path?.contains('nginx')",
  5. "dataset": "nginx"
  6. }
  7. }

データセットおよびネームスペースオプションは、単一の値またはフォールバックとして使用される値のリストを含むことができます。フィールド参照が null に評価され、ドキュメントに存在しない場合、次の値またはフィールド参照が使用されます。フィールド参照が非 String 値に評価される場合、プロセッサは失敗します。

次の例では、プロセッサは最初に service.name フィールドの値を解決して dataset の値を決定しようとします。そのフィールドが null に解決されるか、欠落しているか、非文字列値である場合、リストの次の要素を試みます。この場合、これは静的値 "generic です。namespace オプションは、単一の静的値で構成されています。

Js

  1. {
  2. "reroute": {
  3. "dataset": [
  4. "{{service.name}}",
  5. "generic"
  6. ],
  7. "namespace": "default"
  8. }
  9. }