ストリーミング・データ・ルールの設定

DataPrime eXpression Language (DPXL) を使用してルールを定義し、IBM® Event Streams for IBM Cloud® インスタンスから IBM Cloud Logs にストリームされるデータをフィルタリングできます。

DataPrime eXpression Languageの詳細については、DataPrime Expression Language(DPXL)reference を参照してください。

1つ以上のフィールドの値に基づいて条件を定義するルールのみを定義できます。

サービス名でフィルタリングしたい場合は、logSourceCRN からサービス名などの特定の値を抽出する解析ルールが必要になるかもしれません。

以下のセクションでは、設定可能なさまざまなタイプのルールのサンプルを示します。

<v1> という接頭辞を含む例もあることに注意してください。 この接頭辞は、UIを使うときに自動的に含まれるので、指定する必要はない。 しかし、APIで使われるDPXL式は、<v1> という接頭辞で始まらなければなりません。

全データのストリーミング

ストリーミングを構成するときは、DataPrime ルールを定義しないでください。

フリー・テキストを含むストリーミング・データ

フリーテキストを含むデータをストリーミングするには、以下のようにルールを設定する必要がある:

$d.msg.contains('ENTER_FREE_TEXT')

たとえば、Error 1234 を検索するには、ルールに次のように記述する:

$d.msg.contains('Error1234')

1つ以上のアプリケーションのストリームデータ

IBM Cloud Logs インスタンスでは、複数のアプリケーションからデータを収集できます。

ストリーミングを設定すると、選択したデータをストリーミングするカスタムルールを定義できる。

監査イベントのストリーミング

すべての監査イベントをストリーミングするには、以下のDataPrimeルールを定義します:

<v1> $l.applicationname =='ibm-audit-event'

ストリーミング・プラットフォームのログ

すべてのプラットフォームログをストリームするには、以下のDataPrimeルールを定義する:

<v1> $l.applicationname =='ibm-platform-logs'

applicationNameによるログストリーミング

選択したアプリケーションのログをapplicationNameでストリームするには、DataPrimeルールを定義します。 例えば、3つのアプリケーションからデータをストリーミングするには、次のようにします:

<v1> $l.applicationname =='app1' || $l.applicationname =='app2' || $l.applicationname =='app3'

OR を示すには || を使います。

1つ以上のサブシステムのストリーム・データ

subsystemName, によってログをストリームするには、DataPrime ルールを定義します。 例えば、3つのサブシステムからデータをストリーミングするには、次のようにする:

<v1> $l.subsystemname =='subsystem1' || $l.subsystemname =='subsystem2' || $l.subsystemname =='subsystem3'

OR を示すには || を使います。

ログレコードに含まれるフィールドの複数の値に基づくストリームデータ

ログレコードのフィールド値に基づいてデータをストリーミングしたい場合、次のようにルールを定義することができる:

このサンプルは、ログレコードのフィールドの3つの異なる値に対するルールを定義する方法を示しています:

<v1> $d.<FIELD_NAME> =='value1' || $d.<FIELD_NAME> =='value2' || $d.<FIELD_NAME> =='value3'

ログレコードに含まれる1つ以上のフィールドの値に基づくストリームデータ

ログレコードの1つ以上のフィールドの値に基づいてデータをストリーミングしたい場合、以下のようにルールを定義することができる:

<v1> $d.<FIELD_NAME_1> =='value1' && $d.<FIELD_NAME_2> =='value2'

2つの条件に基づくストリーム・データ

例えば、1つのフィールドの値が同じで、もう1つのフィールドの値が異なる可能性がある2つの条件に基づいてデータをストリーミングするには、次のようにルールを定義することができる:

<v1> ( $d.<FIELD_NAME_1> =='value1' && $d.<FIELD_NAME_2> =='value2' ) || ( $d.<FIELD_NAME_1> =='value1' && $d.<FIELD_NAME_2> =='value3' )

例えば、選択したサービスから異なる重大度値を持つ監査イベントをフィルターするには、次のようにクエリーを定義します:

<v1> ( ( $l.applicationname =='ibm-audit-event' && ( $d.serviceName =='iam-am' ||  $d.serviceName =='cloud-object-storage' ) && $d.severity =='critical') )
|| ( $l.applicationname =='ibm-audit-event' && $d.serviceName =='iam-identity' && $d.severity =='normal')

ルールを検証する

ストリーミング・ルールを確認するには、左側のナビゲーションでログを検索をクリックします。 DataPrime クエリーを選択し、クエリーを以下のように変更する:

filter 'PASTE_YOUR_CONDITION'

クエリの出力は、ストリーミング設定を有効にすると、ストリーミ ングされるログレコードのリストを与えるはずである。

例えば、<v1> $l.applicationname =='ibm-audit-event' を次のように変更する:

filter $l.applicationname =='ibm-audit-event'