ストリーミング・データ・ルールの設定
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'