イベント処置ファイルについて

内容
casp1032jp
内容
CA Spectrum
 が SNMP トラップを受信し、モデルに対して生成される
CA Spectrum
イベントにマッピングされる場合、イベントを処理する方法を決定するのに
イベント処置ファイル
が使用されます。イベント処置ファイル(ASCII テキスト ファイル)の処理手順には、以下の情報を含めることができます。
  • イベントがログに記録されるかどうか
  • イベントの重大度
  • イベントが特定の重大度のアラームを生成するかどうか
  • イベントが 1 つ以上のアラームをクリアするかどうか
  • イベントがイベント ルール(監視され、特定のパターンまたはタイム フレームで発生したときに別のイベントをトリガする一連のイベント)をトリガするかどうか
CA Spectrum
 のすべての事前定義されたイベントには、グローバルおよびモデル タイプ固有のイベント処置ファイルで定義されている処理命令があります。さらに、(MIB ツールを使用してトラップを新しいイベントにマッピングするか、後でイベント設定を使用して)新しいカスタム イベントを作成するたびに、カスタム イベント処置ファイルが自動的に作成されます。通常、イベント処置ファイルを手動作成する必要はありません。
重要:
イベント マップへのイベント処理手順の追加など、いくつかのタイプの変更は、テキスト エディタで実施する必要があります。その他のほとんどのイベント変更については、イベント設定を使用して処理手順を指定することをお勧めします。イベント設定ユーティリティでは、1 つ以上のランドスケープにカスタマイズ内容を保存できます。
新しいデバイスのトラップ サポートを追加する場合は、まず MIB ツールを使用して新しい
CA Spectrum
 イベントにトラップをマッピングし、基本的なイベント設定を指定します。その後、イベント設定を起動(MIB ツールから直接起動できます)し、イベントの設定を実施することができます。このワークフローによって、イベント処置ファイルの手動変更の大部分を回避できます。ただし、手動で変更が必要な場合に使用する適切な構文についてのリファレンス情報も用意されています。
イベント処置ファイルの場所
すべてのイベント処置(EventDisp)ファイルの名前は、常に EventDisp です。
注:
Windows 環境では、ファイル拡張子は使用されません。
CA Spectrum
 で提供されるイベントをサポートする EventDisp ファイルは、以下のディレクトリにインストールされます。
  • $SPECROOT
    /SS/CsVendor/
    vendor_directory
    この場所の EventDisp ファイルにより、スコープが 
    global
     の、開発者によって作成されるすべてのイベントの処理が定義されます。
    vendor_directory
     変数は、EventDisp ファイルが使用されている開発者、ベンダー、または製造元の名前です。
    注:
     場合によっては、開発者固有のディレクトリに開発者の名前以外の文字列が使用されます。たとえば、IETF ディレクトリには、標準の RFC トラップの結果であるイベントの処理を指定する、EventDisp ファイルが含まれています。
  • $SPECROOT
    /SS/CSVendor/
    vendor_directory
    /
    model_type_name
    この場所の EventDisp ファイルにより、スコープが 
    model_type_name
     で表される
    モデル タイプに限定される
    開発者が作成する、すべてのイベントの処理が定義されます。この場合、
    vendor_directory
    は、モデル タイプが作成された開発者、ベンダー、または製造元の名前です(たとえば、Cisco)。
注:
 グローバル EventDisp ファイルと、モデル タイプ固有の EventDisp ファイルの両方にイベント マップ エントリが存在する場合、モデル タイプ固有のファイル内のイベント マップ エントリが優先されます。
事前定義済みの
CA Spectrum
 イベントのイベント処理をカスタマイズする場合、または MIB ツールまたはイベント設定を使用して、新しいカスタム イベントを作成する場合は、以下のディレクトリ、またはそのサブディレクトリのいずれかに、カスタム EventDisp ファイルが作成されます。
$SPECROOT
/custom/Events
注:
 カスタム EventDisp ファイル内のイベント マップ エントリは、事前定義済みの
CA Spectrum
の EventDisp ファイル内のこれらのエントリより優先されます。
イベント処置ファイルのファイル構文
イベント処置(EventDisp)ファイルの各行は
イベント マップ
と呼ばれます。各イベント マップでは、イベントをログに記録するかどうか、またはイベントを生成するかどうかなど、1 つ以上のイベント処理動作を指定できます。イベント マップでは以下の構文が使用されます。
<eventcode> E <eventseverity> <processing parameters> S <sbgw processing flag>
  • <eventcode>
    処理の動作が定義されている
    CA Spectrum
    イベントのイベント コードを指定します。イベント コードは、トラップをイベントにマップする AlertMap ファイルで定義されるか、またはイベントを生成するコード内で指定されます。
    CA Spectrum
    がイベントを処理するには、イベント コードを指定する必要があります。
  • E
    (オプション)イベント データをアーカイブ マネージャによって分散データ マネージャ(DDM)データベースに記録する必要があることを示します。E フラグを使用しない場合、イベント データは一時的に記録されますが、
    SpectroSERVER
    がシャットダウンされてから再起動されると保存されません。
  • <eventseverity>
    イベントの相対的な重大度を 0 〜 100 のスケールで指定します。0 は重大度が最も低く、100 は最も高いことを示します。イベント重大度の値が指定されていない場合、
    CA Spectrum
    はデフォルト値の 0 を使用します。
    注:
    イベント重大度パラメータは、現在、イベント管理システムによって使用されていません。ただし、イベントをログに記録している場合は、このパラメータの使用が将来のイベント処理に組み込まれる可能性があるため、イベント重大度の値を割り当てることをお勧めします。イベントをログに記録していない場合は、イベント重大度の値を割り当てるべきではありません。
  • <processing parameters>
    イベントでアラームを生成するかどうか、または 1 つ以上のアラームをクリアするかどうかなど、追加のイベント処理動作を指定します。このセクションのトピックでは、さまざまなイベント処理動作の適切な構文について詳しく説明します。
  • S <sbgw processing flag>
    (オプション) Southbound ゲートウェイ処理のためにイベントを登録するかどうかを指定します。これは、モデルタイプに固有のエントリと、southbound モデルタイプ フラグメントから派生したモデルタイプにのみ適用されます。S の後に以下の sbgw 処理フラグのいずれかが続きます。
    • + (Southbound ゲートウェイを処理します: S+)
    • - (Southbound ゲートウェイを処理しません: S-)
デフォルトの sbgw 処理フラグ設定は「+」であるため、「S」フラグがないエントリは常に Southbound ゲートウェイによって処理されます。エントリを「S-」に設定すると、モデルタイプ固有の EventDisp アクションが Southbound ゲートウェイによって処理されずに追加されます。
イベントには EventDisp ファイルのイベント マップは必要ありませんが、ほとんどのイベントにはイベント マップがあります。イベントに EventDisp のイベント マップが
ない
場合、そのイベントはデフォルトで DDM データベースに記録されますが(つまり、
SpectroSERVER
をシャットダウンして再起動してもイベントは保存されます)、追加の処理は行われません。イベントにイベント マップが
ある
場合、そのイベントはイベント マップに従って処理されます。
EventDisp ファイルについては以下の点に注意してください。
  • EventDisp ファイル内の空の行は無視されます。
  • 単一のイベント マップが複数の行にまたがっている場合は、
    CA Spectrum
    が次の行をイベント マップの一部として認識できるように、各行の末尾に円記号「\」を追加する必要があります。
アラームの生成
以下の構文を使用して、アラームを生成します。
<eventcode> E <eventseverity> A <alarmseverity>,<alarmcause>
  • A
    指定されたイベントが発生した場合にアラームが生成されることを示します。
  • <alarmseverity>
    アラームの重大度を識別する 0 〜 6 の数値を指定します。
    • 0 (正常)
    • 1 (マイナー)
    • 2 (メジャー)
    • 3 (重大)
    • 4 (保守)
    • 5 (抑制)
    • 6 (初期)
    上記のリストの各重大度は、色分けされた状態に関連付けられています。アラームがモデル上でアサートされると、関連付けられた状態色がモデルのアイコンに表示され、アラーム ステータスが反映されます。
    変数または条件付きのアラーム重大度を指定することもできます。それぞれの重大度は、いずれかの数値重大度レベルに評価されます。以下の構文は、変数の重大度レベルを示すために使用されます。
    { v <event_variable_ID> }
    • <event_variable_ID>
      評価するイベント内のイベント変数の ID を指定して、アラーム重大度レベルを決定します。
    同様に、以下の構文は、条件付き重大度レベルを示すために使用されます。
    { v <event_variable_ID> <folder_name>.<file_name> }
    • <event_variable_ID>
      評価するイベント内のイベント変数の ID を指定します。
    • <folder_name>
      アラーム重大度レベルを決定するために使用される重大度マッピング ファイルを指定します。
    • <file_name>
      アラーム重大度レベルを決定するために使用される重大度マッピング ファイルを指定します。
    注:
    イベント マップに重大度が指定されていない場合、
    CA Spectrum
    はデフォルト値の 0 (正常)を使用します。
  • <alarmcause>
    アラームに関連するメッセージが含まれる、想定される原因ファイルを識別するために使用される番号を指定します。
例:
以下のイベント マップを例として示します。
0x3e00002 E 50 A 2,0x3e00003
この例では、イベント コード 0x3e00002 のイベントについて以下のように指定しています。
  • 履歴およびレポートの目的で、アーカイブ マネージャによってイベントが分散データ マネージャ(DDM)データベースにログ記録されます。
    注:
    DDM データベースにログ記録されないモデルのイベントは、そのモデルの[イベント]タブが表示されている間に生成された場合にのみ、OneClick の[イベント]タブに表示されます。
  • 重大度レベルは 50 です。
  • アラーム原因コードが 0xe00003 のメジャー(オレンジ)アラームを生成します。
イベント変数の値に基づいてイベントのアラームを生成
イベント識別子
は、変数の値に基づいてイベントのアラームを生成するための、イベント変数への参照です。
以下の構文を使用して、イベント識別子を使用してアラームを生成します。
<eventcode> E <eventseverity> A <alarmseverity>,<alarmcause>,<eventdiscriminators>
ここで、<eventdiscriminators> は、1 つ以上のイベント変数 ID のカンマ区切りリストであり、アラームを生成するかどうかを決定するために確認するイベント変数を示しています。これらのイベント変数 ID は、トラップと共に送信される変数バインディングの OID に(AlertMap ファイル内で)マップされています。
以下のイベント マップを例として示します。
0x3b10011 E 70 A 1,0x3b10011,1,3
この例では、イベント コード 0x3b10011 のイベントが生成されたときに、アラーム原因コード 0x3b10011 を持つ既存のアラームがモデルにすでに存在する場合、同じイベントから生成されたモデル上の現在のアラームと比較して、新しいイベント内の
両方
のイベント変数 1 および 3 の値が
異なる
場合にのみ、同じイベントに対して別のアラームが生成されます。
イベント変数の値は、イベントに基づいて生成されるアラームにも格納されます。つまり、イベント識別子を使用して、アラームの複数の発生を区別し、変数の値に基づいてアラームをクリアすることもできます。
イベントごとに無条件にアラームを生成
デフォルトでは、特定のイベントに対してモデルにアラームが存在する場合、
CA Spectrum
は同じイベントが発生するたびに新しいアラームを生成することはありません。ただし、U フラグを使用してデフォルトの動作を変更し、同じイベントが発生するたびに、無条件に新しいアラームを生成できます。構文は以下のとおりです。
<eventcode> E <eventseverity> A <alarmseverity>,<alarmcause>,U
以下のイベント マップを例として示します。
0x3dc0000 E 50 A 1,0x3dc0000,U
ユーザがクリアできないアラームの生成
デフォルトでは、ユーザがアラームをクリアできます。ただし、N フラグを使用してデフォルトの動作を変更し、ユーザがアラームをクリアできないようにすることができます。構文は以下のとおりです。
<eventcode> E <eventseverity> A <alarmseverity>,<alarmcause>,N
以下のイベント マップを例として示します。
0x3dc0000 E 50 A 1,0x3dc0000,N
非永続アラームの生成
デフォルトでは、アラームは永続的です。つまり、
SpectroSERVER
をシャットダウンして再起動しても、アラームはメモリに保持されます。ただし、T フラグを使用してデフォルトの動作を変更し、非永続アラームを生成することができます。構文は以下のとおりです。
<eventcode> E <eventseverity> A <alarmseverity>,<alarmcause>,T
以下のイベント マップを例として示します。
0x3dc0000 E 50 A 1,0x3dc0000,T
U、N、および T フラグの組み合わせ
イベント マップ内では、U、N、および T フラグの任意の組み合わせを使用できます。
例として、以下のイベント マップでは、イベント コード 0x3dc0000 が含まれているイベントごとに固有のアラームが生成されます。このアラームはユーザがクリアすることはできず、永続的ではありません。
0x3dc0000 E 50 A 1,0x3dc0000,U,N,T
N フラグと T フラグは、以下の例に示すように、イベント識別子と共に使用できます。この例は、「イベント変数の値に基づいてイベントのアラームを生成」で説明したイベント マップのバリエーションです。
0x3b10011 E 70 A 1,0x3b10011,1,3,N,T
イベント頻度の指定
F フラグは、指定された期間内に異常な頻度でイベントが発生しているかどうかを検出するために使用できます。イベント レート ルールを使用して、この目的のためのイベントを生成します。このセクションで説明する構文は、バージョン 6.5 より前のバージョンの
CA Spectrum
 用に作成された EventDisp ファイルとの互換性を維持するためにのみサポートされています。
イベント マップで F フラグを使用する構文は以下のとおりです。
<EventCode> E <EventSeverity> F <OccurenceLimit> <Duration> <FrequencyEventCode>
  • F
    イベントが評価される頻度を示します。
  • <OccurenceLimit>
    イベントが発生する必要がある回数を指定します。
  • <Duration>
    イベントを生成するために <OccurenceLimit> で指定されたイベント数が発生する必要がある時間を秒単位で指定します。
  • <FrequencyEventCode>
    指定された数のイベントが指定された期間内に発生した場合に生成するイベントのイベント コードを指定します。
イベント期間の指定
D フラグを使用すると、指定された期間内にイベントのペアであると予想される 2 番目のイベントが発生していないことを検出できます。
注:
イベント ペア ルールを使用して、この目的のためのイベントを生成します。このセクションで説明する構文は、バージョン 6.5 より前のバージョンの
CA Spectrum
 用に作成された EventDisp ファイルとの互換性を維持するためにのみサポートされています。
イベント マップで D フラグを使用する構文は以下のとおりです。
<FirstEventCode> E <EventSeverity> D <SecondEventCode> <Duration> <DurationEventCode>
  • D
    イベント間の期間が評価されることを示します。
  • <SecondEventCode>
    発生する必要がある 2 番目のイベントのイベント コードを指定します。
  • <Duration>
    2 番目のイベントの発生を待機する時間を秒単位で指定します。
  • <DurationEventCode>
    指定された期間内に 2 番目のイベントが発生しない場合に生成するイベントのイベント コードを指定します。
アラームの解除
イベントが以下のタイプのアラームをクリアできるように指定できます。
  • イベント識別子なしで作成された、特定のアラーム原因コードを含むアラーム
  • アラームの変数値がアラームクリア イベントの変数と
    一致
    する場合にイベント識別子に基づいて作成された、特定のアラーム原因コードを含むすべてのアラーム
  • アラームの変数値がアラームクリア イベントの変数と一致するかどうかに
    関係なく
    、イベント識別子に基づいて作成された、特定のアラーム原因コードを含むすべてのアラーム
イベント識別子なしで作成されたアラームのクリア
以下の構文は、イベント識別子で作成されなかったアラームをクリアするために使用されます(つまり、アラームの 1 つだけのインスタンスが存在し、イベント変数のコピーは含まれていません)。
<eventcode> E <eventseverity> C <alarmtobecleared>
  • <eventcode>
    イベントのイベント コードを指定します。
  • E
    アーカイブ マネージャがイベント データを分散データ マネージャ(DDM)データベースに記録することを示します。
  • <eventseverity>
    イベントの相対的な重大度を 0 〜 100 のスケールで指定します。0 は重大度が最も低く、100 は最も高いことを示します。
  • C
    指定されたイベントが発生した場合にアラームがクリアされることを示します。
  • <alarmtobecleared>
    クリアするアラームのアラーム原因コードを指定します。
例:
0xfffff0000 A 1, 0xffff0000 0xfffff0001 C 0xffff0000
最初のイベント マップは、イベント 0xfffff0000 の発生時にアラーム 0xffff0000 を生成します。2 番目のイベント マップは、イベント 0xfffff0001 の発生時にアラーム 0xffff0000 をクリアします。
イベント識別子の値に基づいてアラームをクリア
アラーム クリアのコンテキストでは、イベント識別子は、イベントの結果としてアラームをクリアするかどうかを決定するためにアラームクリア イベントとアラームで確認するイベント変数の ID です。
イベント変数 ID は、トラップと共に送信される変数バインディングの OID に(AlertMap ファイル内で)マップされ、ID の値は、その値を確認した結果としてアラームが生成された場合に、アラーム生成イベントからアラームにコピーされます。
イベント変数の値は、イベントに基づいて生成されるアラームにも格納されるため、イベント識別子を使用して、アラームの複数の発生を区別し、変数の値に基づいてアラームをクリアすることができます。具体的には、アラームクリア イベントの値がアラームに格納されている値と
一致
した場合にアラームをクリアすることができます。
以下の構文を使用して、イベント識別子の値に基づいてアラームをクリアします。
<eventcode> E <eventseverity> C <alarmtobecleared>,<eventdiscriminators>
  • <eventcode>
    イベントのイベント コードを指定します。
  • E
    アーカイブ マネージャがイベント データを分散データ マネージャ(DDM)データベースに記録することを示します。
  • <eventseverity>
    イベントの相対的な重大度を 0 〜 100 のスケールで指定します。0 は重大度が最も低く、100 は最も高いことを示します。
  • C
    指定されたイベントが発生した場合にアラームがクリアされることを示します。
  • <alarmtobecleared>
    クリアするアラームのアラーム原因コードを指定します。
  • <eventdiscriminators>
    アラームをクリアするかどうかを決定するために確認する変数を示す、1 つ以上のイベント変数 ID のカンマ区切りリストを指定します。
例:
0xfffff0000 A 1, 0xffff0000, 1, 2 0xfffff0001 C 0xffff0000, 1, 2
アラーム 0xffff0000 は、アラームクリア イベント(0xffff0001)のイベント変数 1 および 2 の値が、アラームの生成時にアラーム生成イベント(0xffff0000)からコピーされた、アラームに格納されている変数の値と同一である場合にのみクリアされます。アラームクリア イベントにこれらのイベント変数が含まれて
いない
場合、アラームはクリアされません。
以下の構文を使用して、単一のイベントで複数のタイプのアラームをクリアするように指定することもできます。
<eventcode> C <alarmtobecleared>,<eventdiscriminators> C <alarmtobecleared>,<eventdiscriminators>,...
アラームをクリアするイベント マップの例
以下の例では、最初のイベント マップは、イベント 0x3dc0004 でアラーム 0x3dc0001 を生成することを指定しています。2 番目のイベント マップは、イベント 0x3dc0002 でアラーム 0x3dc0001 をクリアすることを指定します。
0x3dc0004 E 50 A 2,0x3dc0001 0x3dc0002 C 0x3dc0001
以下の 2 つのイベント マップは、両方ともイベント識別子を使用する以外は上記と同じです。最初のイベント マップは、イベント変数 1 および 3 の
両方
に固有の値を持つ 0x3dc0004 イベントごとに新しいアラームが生成されることを指定します。2 番目のイベント マップは、変数 1 および 3 のアラームの値がイベント 0x3dc0002 の同じ変数の値と
一致する
場合、アラーム原因コード 0x3dc0001 を持つすべてのアラームをクリアします。
0x3dc0004 E 50 A 1,0x3dc0001,1,3 0x3dc0002 C 0x3dc0001,1,3
アラームを作成するイベント マップがイベント識別子を使用しているが、アラームをクリアするイベント マップがイベント識別子を使用しない場合、アラームをクリアするときにイベント識別子が引き続き考慮されます。
以下のイベント マップでは、イベント識別子がアラームをクリアするイベント マップに明示的に記述されていない場合でも、上記の例と同じロジックを使用します。まとめると、イベント マップでは、変数 1 および 3 のアラームの値がイベント 0x3dc0002 の同じ変数の値と
一致する
場合に、アラーム原因コード 0x3dc0001 を持つすべてのアラームをクリアするように指定しています。
0x3dc0004 E 50 A 1,0x3dc0001,1,3 0x3dc0002 C 0x3dc0001
以下のイベント マップでは、U フラグを使用して、イベント 0x3dc0004 が発生するたびに固有のアラームを生成します。アラームをクリアするイベントである、イベント 0x3dc0002 は、アラーム原因コード 0x3dc0001 を持つすべてのアラームをクリアします。
0x3dc0004 E 50 A 1,0x3dc0001,U 0x3dc0002 C 0x3dc0001
以下の例では、最初の 2 つのイベント マップがアラームを生成します。3 番目のイベント マップでは、イベント 0x3dc0009 を使用して、さまざまなアラーム原因コードを持つアラームをクリアします。アラーム原因コード 0x3dc00010 を持つすべてのアラームがクリアされ、アラームの変数 1 および 3 の値がイベント 0x3dc0009 の同じ変数の値と一致する場合にアラーム原因コード 0x3dc00011 を持つすべてのアラームがクリアされます。
0x3dc0006 E 50 A 2,0x3dc00010 0x3dc0007 E 50 A 1,0x3dc00011,1,3 0x3dc0009 C 0x3dc00010 C 0x3dc00011,1,3
イベント識別子の値に関係なくアラームをクリア
アラームクリア イベントの値がアラーム インスタンスに格納されている値と一致するかどうかに関係なく、イベント識別子に基づいて生成されたアラームのすべてのインスタンスをクリアするには、以下の構文を使用します。
<eventcode> E <eventseverity> C <alarmtobecleared>,A
  • <eventcode>
    イベントのイベント コードを指定します。
  • E
    アーカイブ マネージャがイベント データを分散データ マネージャ(DDM)データベースに記録することを示します。
  • <eventseverity>
    イベントの相対的な重大度を 0 〜 100 のスケールで指定します。0 は重大度が最も低く、100 は最も高いことを示します。
  • C
    指定されたイベントが発生した場合にアラームがクリアされることを示します。
  • <alarmtobecleared>
    クリアするアラームのアラーム原因コードを指定します。
  • A
    イベントに格納されている変数の値に関係なく、すべてのアラーム インスタンスがクリアされることを指定します。
例:
0xffff0000 E 50 A 1,0xffff0000,1,2,3 0xffff0002 E 50 C 0xffff0000,A
この例では、イベント 0xffff0002 にイベント変数 1、2、および 3 が含まれているかどうかに関係なく、また、イベント変数が含まれていても、その値がアラームに格納されている値と一致するかどうかに関係なく、イベント 0xffff0002 が発生するとアラーム 0xffff0000 のすべてのインスタンスがクリアされます。
イベント ルールの定義について
イベント ルールを使用すると、複雑な意思決定システムを指定して、イベントの処理方法を示すことができます。イベント ルールは、特定のパターンやタイム フレームのモデルで発生する一連のイベントを検索します。ルールで指定したイベントが発生した場合、指定したモデルに対して別のイベントが生成されるため、その新しいイベントを EventDisp ファイルに定義して、
CA Spectrum
がイベントを適切に処理できるようにする必要があります。
重要:
イベント ルールは手動で作成することができますが、イベント設定アプリケーションを使用して作成することをお勧めします。このセクションは、EventDisp ファイル内でのルール定義に使用される基本的な構文のリファレンスとして提供されています。
イベント ルールの構文
イベント ルールは、以下の構文を使用してイベント マップを介して実装されます。
<EventCode> E <EventSeverity> R {<event_discriminators>} <event_rule_name>, <event_rule_parameter1>, ...<event_rule_parameterN>
  • R
    イベント ルールが使用されることを示します。
  • {<event_discriminators>}
    (オプション)ルール出力イベントを生成するかどうかを決定するために確認する変数を示す、1 つ以上のイベント変数 ID のカンマ区切りリスト。これらのイベント変数 ID は、トラップと共に送信される変数バインディングの OID に(AlertMap ファイル内で)マップされています。
    注:
     イベント識別子は、イベント ルール内の要因となる各イベントに適用されます。イベント ルールでイベント識別子を使用する例については、EventRateCounter ルールおよび EventCombo ルールを参照してください。
  • <event_rule_name>
以下の構文を使用して表されます。
CA.<RuleName>
<RuleName> では、以下のいずれかのルール タイプを指定します。
  • EventPair
  • EventRateWindow
  • EventRateCounter
  • EventSequence
  • EventCombo
  • EventCondition
  • EventCounter
  • ハートビート
  • SingleEvent
  • SoloEvent
<eventruleparameter>
どのルール タイプが使用されているかによって異なります。
EventPair ルール
イベント ペア ルールの構文は以下のとおりです。
<FirstEventCode> R CA.EventPair, <SecondEventCode>, <GeneratedEventCode>, <time>
たとえば、以下のイベント ペア ルールは、イベント 0x0001002a が発生した後 60 秒以内にイベント 0x0001002b が発生しないときにイベント 0x0001002f を生成します。
0x0001002a R CA.Eventpair, 0x0001002b, 0x0001002f, 60
イベント 0x0001002a をログに記録し、重大度レベル 50 を割り当てるには、以下の構文が使用されます。
0x0001002a E 50 R CA.Eventpair, 0x0001002b, 0x0001002f, 60
EventPairTimeAttr ルール
EventPairTimeAttr ルールは、EventPair ルールと似ています。相違点は、3 番目のパラメータが時間ウィンドウではなく属性 ID であることです。
イベント ペア ルールの構文は以下のとおりです。
<FirstEventCode> R CA.EventPairTimeAttr, <SecondEventCode>, <GeneratedEventCode>, <Attribute ID>
  • 属性 ID
    現在のモデル(イベントが生成されたモデル)の属性を指定します。この属性には、ペア ルールの時間値が保持されます。グローバルに定義されたハードコード値ではなく、ルールに対してモデル固有の個々の時間値を設定するために使用できます。
EventRateWindow ルール
EventRateWindow ルールは、時間のスライディング ウィンドウを使用するイベント レート ルールです。
EventRateWindow ルールの構文は以下のとおりです。
<TriggerEventCode> R CA.EventRateWindow, <NumberofOccurrences>, <time>, <GeneratedHighRateEventCode>, <GeneratedLowRateEventCode>
ここで、<GeneratedHighRateEventCode> は、指定されたタイム フレーム内に指定された間隔でトリガ イベントが発生した場合に生成するイベントです。また、
オプション
のパラメータである <GeneratedLowRateEventCode> のイベントを指定した場合、頻度がしきい値を下回るとルールによって低レート イベントが生成されます。ルールは、頻度のしきい値を再度超えた場合にのみ高レート イベントを再度生成します。
たとえば、以下の EventRateWindow ルールでは、60 秒以内にタイプ 0x0001002a の 5 つのイベントが発生した場合にイベント 0x0001002f が生成されます。
0x0001002a R CA.EventRateWindow, 5, 60, 0x0001002f, 0x000100030
頻度のしきい値を超えて高レート イベント(0x001002f)が生成されると、頻度が 60 秒以内に 5 イベントを下回るまで、別のルール出力イベントは生成されません。この頻度を下回ると、低レート イベント(0x000100030)が生成されます。頻度のしきい値を再度超えるまで、高レート イベントは再生成されません。
EventRateWindowAttrParams ルール
EventRateWindowAttrParams ルールは、時間のスライディング ウィンドウを使用するイベント レート ルールです。
EventRateWindowAttrParams ルールの構文は以下のとおりです。
<TriggerEventCode> R CA.EventRateWindow, <Attribute containing NumberofOccurrences>, <Attribute containing time window>, <GeneratedHighRateEventCode>, <GeneratedLowRateEventCode>, <GeneratedStopEventCode>
<GeneratedStopEventCode> は、ルールを停止するために生成されるイベントです。モデルの属性を更新し、この停止イベントを生成して、そのモデル上のルール インスタンスを停止します。次のレート ウィンドウ イベントで新しいルール インスタンスが開始され、新しい属性値が読み取られて使用されます。
EventRateWindowAttrParams ルールは、EventRateWindow ルールと似ています。ただし、このルールは、イベント発生パラメータと時間ウィンドウ パラメータで、直接の値の代わりに属性 ID を受け入れます。これらの属性は、イベントが生成されるモデルに存在する必要があり、整数値を含める必要があります。
EventRateWindowAttrParams ルールが最も役立つのは、発生頻度が低いときは重要でないが頻度が高くなると重要になるイベントを検出する場合です。一定のレートを超えてイベントが発生した場合、このルールは別のイベントを生成します。レートがしきい値以上である間は、追加のイベントは生成されません。レートがしきい値を下回り、その後にしきい値を超えると、別のイベントが生成されます。
イベントは、レートがしきい値を下回った場合にも生成できます。
注:
 <GeneratedHighRateEventCode> および <GeneratedLowRateEventCode> イベントの説明については、「EventRateWindow ルール」を参照してください。
EventRateCounter ルール
EventRateCounter ルールは、時間のシーケンシャル ウィンドウを使用するイベント レート ルールです。
EventRateCounter ルールの構文は次のとおりです。
<TriggerEventCode> R CA.EventRateCounter, <NumberofOccurrences>, <time>, <GeneratedEventCode>
例として、以下の EventRateCounter ルールでは、60 秒以内にタイプ 0x0001002a の 5 つのイベントが発生した場合にイベント 0x0001002f が生成されます。
0x0001002a R CA.EventRateCounter, 5, 60, 0x0001002f
イベント 0x0001002a をログに記録し、重大度レベル 50 を割り当てるには、以下の構文が使用されます。
0x0001002a E 50 R CA.EventRateCounter, 5, 60, 0x0001002f
例: EventRateCounter ルールでのイベント識別子の使用
以下の例は、EventRateCounter ルールでの 2 つのイベント識別子の使用を示しています。
0x10001 E 50 R {1,2} CA.EventRateCounter, 3, 60, 0xffff0000
イベント識別子リスト {1,2} には、変数 ID 1 および 2 が含まれています。そのため、イベント 0xffff000 を生成するには、イベント 0x10001 が 60 秒以内に 3 回発生し、3 つのインスタンスすべてに同じ値の変数 ID 1 および 2 が含まれている必要があります。
たとえば、イベント 0x10001 が 60 秒間に 3 回発生し、毎回の変数 ID 1 の値が 10.253.40.57 および変数 ID 2 の値が 65 の場合、イベント 0xffff0000 が発生します。ただし、イベント 0x10001 が 60 秒間に 3 回発生しても、最初の 2 回の変数 ID 1 の値が 10.253.30.57 で 3 回目の変数 ID 1 の値が 10.253.89.60 の場合、0xffff0000 は生成されません。
EventSequence ルール
EventSequence ルールは、一連のイベントが特定の順序で発生する必要があるイベント シリーズ ルールです。
EventSequence ルールの構文は次のとおりです。
<FirstEventCode> R CA.EventSequence, <GeneratedEventCode>, <time>, <SecondEventCode>, <ThirdEventCode>,...<NthEventCode>
例として、以下の EventSequence ルールは、イベント 0x00010002a、0x0001002b、および 0x0001002c が 60 秒以内にこの順序で発生した場合にイベント 0x0001002f を生成します。
0x0001002a R CA.EventSequence, 0x0001002f, 60, 0x0001002b, 0x0001002c
イベント 0x0001002a をログに記録し、重大度レベル 50 を割り当てるには、以下の構文が使用されます。
0x0001002a E 50 R CA.EventSequence, 0x0001002f, 60, 0x0001002b, 0x0001002c
EventCombo ルール
EventCombo ルールは、一連のイベントが順序に関係なく発生する必要があるイベント シリーズ ルールです。
EventCombo ルールの構文は以下のとおりです。
<FirstEventCode> R CA.EventCombo, <GeneratedEventCode>, <time>, <EventCodeA>, <EventCodeB>, ...<EventCodeN>
例として、以下の EventCombo ルールは、イベント 0x0001002a が発生し、その後、イベント 0x0001002b とイベント 0x0001002c の各インスタンスが少なくとも 1 つずつ、60 秒以内に任意の順序で発生した場合に、イベント 0x0001002f を生成します。
0x0001002a R CA.EventCombo, 0x0001002f, 60, 0x0001002b, 0x0001002c
新しいイベントを生成する必要があるときに、複数のイベントのうちの 1 つが最初にルールをトリガできるようにするには、一連の n 個のルールを作成します。ここで、n は組み合わせのイベント数で、各ルールはトリガに対して異なるイベントを使用します。たとえば、以下の 3 つのルールについて考えます。
0x0001002a R CA.EventCombo, 0x0001002f, 60, 0x0001002b, 0x0001002c 0x0001002b R CA.EventCombo, 0x0001002f, 60, 0x0001002a, 0x0001002c 0x0001002c R CA.EventCombo, 0x0001002f, 60, 0x0001002a, 0x0001002b
このルール セットを使用すると、イベント 0x0001002a、0x0001002b、および 0x0001002c の任意の組み合わせが 60 秒以内に任意の順序で少なくとも 1 回発生すると、イベント 0x0001002f が生成されます。
イベント 0x0001002a をログに記録し、重大度レベル 50 を割り当てるには、以下の構文を使用できます。
0x0001002a E 50 R CA.EventCombo, 0x0001002f, 60, 0x0001002b, 0x0001002c
例: EventCombo ルールでのイベント識別子の使用
以下の例は、EventCombo ルールでの 2 つのイベント識別子の使用を示しています。
0x10001 E 50 R {1} CA.EventCombo, 0xffff0000, 60, 0x10002
イベント識別子リスト {1} には、変数 ID 1 が含まれています。したがって、イベント 0xffff000 を生成するには、イベント 0x10001 が発生し、その後、イベント 0x10002 が 60 秒以内に発生する必要があり、それぞれのイベントには同じ値の変数 ID 1 が含まれている必要があります。
たとえば、イベント 0x10001 が発生して、変数 ID 1 の値が 10.253.40.57 であり、その 45 秒後にイベント 0x10002 が発生して、変数 ID 1 の値が 10.253.40.57 の場合、イベント 0xffff0000 が生成されます。ただし、イベント 0x10001 が発生して、変数 ID 1 の値が 10.253.40.50 であり、その 45 秒後にイベント 0x10002 が発生して、変数 ID 1 の値が 10.253.40.57 の場合、イベント 0xffff0000 は生成されません。
EventComboInclusive ルール
EventComboInclusive ルールは、EventCombo ルールに似ています。相違点は、ルールが定義されているものだけでなく、すべてのコンボ イベントを登録することです。
EventComboInclusive ルールの構文は以下のとおりです。
<FirstEventCode> R CA.EventComboInclusive, <GeneratedEventCode>, <time>, <EventCodeA>, <EventCodeB>, ...<EventCodeN>
例として、以下の EventComboInclusive ルールは、イベント 0x0001002a、00x0001002b、または 0x0001002c のいずれかが発生した場合にイベント 0x0001002f を生成します。
0x0001002a R CA.EventComboInclusive, 0x0001002f, 60, 0x0001002b, 0x0001002c
EventCondition ルール
EventCondition ルール内の条件式では、以下のような標準比較演算子を使用して、変数バインディング値または
CA Spectrum
 属性値をユーザ指定の値と比較できます。
<FirstEventCode> R CA.EventCondition, "<conditional expression 1>", <event to generate when 1 is TRUE>,"<conditional expression n>", <event to generate when n is TRUE>, "default", <default event>
  • “<条件式 x>”
    変数バインディング値または
    CA Spectrum
     属性値をユーザ定義値と比較する 1 つ以上の式で構成されます(x は 1 ~ n の任意の値を表します)。
  • <x が TRUE の場合に生成するイベント>
    条件式が TRUE と評価された場合に生成されるイベントを指定します。
  • “default”, <デフォルト イベント>
    (オプション)いずれの条件も満たされない場合に生成されるデフォルト イベントを指定します。たとえば、ルールの最後に以下の構文が含まれていた場合、ルールで指定されている他の条件がいずれも満たされなかったときにイベント 0xffff1234 が生成されます。
    "default", 0xffff1234
    注:
     デフォルトは「DEFAULT」、「default」、または「Default」で表すことができます。
条件式は左から右へと評価され、いくらか簡略化されていますが、C プログラミング スタイルの評価に従います。全体の条件が TRUE に評価されると、イベントが生成されます。
条件の構文
条件付きテキストは、以下のように常に引用符で囲みます。
“condition”
単純な条件は、データまたはオブジェクトと比較演算子またはメソッドで構成されます。
データまたはオブジェクト
条件で比較される各データ要素またはオブジェクトは中かっこで囲み、タイプと値の両方を指定する必要があります。
{ TYPE VALUE }
たとえば、整数値 2 を伴う比較は { I 2 } として表されます。
サポートされているタイプとその意味を以下に示します。
短い記号
代替名
意味
タイプの値
A
Addr
ADDR
address
IP Addr
IP アドレス
IP_ADDRESS
IP アドレスが含まれます
XXX.XXX.XXX.XXX
各 XXX 部分文字列は 0 〜 255 の数値であり、文字列全体は有効な IP アドレスとなります。
{ Addr 192.168.1.1 }
a
attr
ATTR
attribute(属性)
ATTRIBUTE
イベント ルールが処理されているモデルのモデル属性を参照します。
評価時に、属性の現在の値が読み取られます。属性のタイプを使用して、比較が有効かどうかが決定されます。
16 進数で指定される属性 ID です。先頭の 0x は任意です。文字 a 〜 f は小文字でも大文字でもかまいません。
オブジェクト ID または変数データをインデックスとして使用するテーブル属性の読み取りもサポートされています(例を参照)。
{ attr 0x11564 }
{ Attribute A00044 }
{ attr 0xffff0001 obj 1.1.6.8.0.1 }
OID サフィックス(インデックス)として「1.1.6.8.0.1」を含むテーブル属性 0xffff0001 を読み取ります。
{ attr 0xffff0001 VARDATA 2 }
OID サフィックス(インデックス)として 2 番目の変数バインディングに含まれるオブジェクト ID を使用してテーブル属性 0xffff0001 を読み取ります。
B
BOOL
Bool
ブール値
boolean
ブール値
False、true
この値は大文字と小文字を区別しません。
{ B True }
{ boolean false }
H
HEX
Hex
Hex_ID
HEX Id
16 進の属性 ID 値(これは単なる値であり、属性参照ではありません。その目的のためには「a」を使用します)
16 進数として指定された属性 ID です。先頭の 0x は任意です。文字 a 〜 f は小文字でも大文字でもかまいません。
{ Hexid 0xffff0123 }
{ H ABCD }
{ HEX 0X91 }
I
Int
整数
整数
INT
整数値
-214783648 ~ 214783647 の任意の数値
{ Int 10 }
{ I 98765 }
{ integer -300 }
L
Unsigned long int
LONG
long
UNSIGNED_LONG_INTEGER
LongInt
符号なし 64 ビット長整数
0 ~ 18446744073709551615 の任意の数値
{ L 0 }
{ LongInt 123456789098}
o
Object ID
obj
obj_id
OBJECT
オブジェクト ID
X
X.X
X.X.X など。X は符号なし整数(>= 0)
{ o 1.2.3.4.5.6 }
{ object_id 1.3.6.1.2.1 }
{ OBJ 100000.4.5 }
O
Octet
オクテット文字列
Decimal Octet String
DEC Oct_Str
Dec_OCTET_str
10 進値で構成されたタグ付きオクテット文字列
#.#.#....
# は 0 ~ 255 の任意の数値です。
{ Oct Str 1.2.3.4 }
{ OCTET_STR 255.0.1.20 }
{ OCTSTR 10.20.30.40.50 }
R
実数
real
実数
実数(倍精度)
「.」を含み、以下のような指数が続く可能性がある任意の数値
E|e +|- EXP
EXP 任意の数値
{ R 1. }
{ Real 3.1415 }
{ REAL -2.843E-17 }
{ R .00001e+20 }
S
String
str
Str
STRING
文字列
二重引用符で囲まれた任意の文字
{ S \” a string \” }
{ String \”another string\” }
{ str \”12345a@b?c*\” }
{ S \”\” }
U
unsigned
unsigned long
unsigned long int
ULONG
U INT
U_long_integer
符号なし長整数
0 ~ 4294967295 の任意の数値
{ uint 1234567890 }
{ UNSIGNED INT 0 }
v
variable data
VARDATA
Var_DATA
EventAttr
event_attr
現在のイベントからイベント属性(変数データ)を参照します。
モデル属性の参照と同様に、これは必要に応じて評価され、比較が有効かどうかを確認するためにイベント属性タイプが使用されます。
符号なし整数(> 0)
{v 1 }
{ VARDATA 2 }
{ event attr 3 }
X
Hex octet string
HEXOCT_STR
Hex_Octet
HEXOctet
タグ付き 16 進オクテット文字列
XX.XX.XX.....
XX は 0 ~ FF の 16 進数です。
{ X 12.01.AB.EF }
{ HEXOCT AB.CD.EF.01 }
{ Hex octet string 2.3 }
{ X a.b.c }
エスケープ文字の使用
条件全体を引用符で囲むだけでなく、文字列も引用符で囲む必要があります。また、条件全体が正しく解析されるようにするには、文字列を囲む前後の引用符の前に円記号を付ける必要があります。例として、文字列 xyz が含まれる以下の条件を示します。
"{ S \"xyz\" } == { v 1 }"
文字列自体に円記号「\」または二重引用符を含める場合は、以下の例のように、これらの文字の前に 3 つの円記号が必要です。
  • 円記号 3 は、リテラルの円記号または引用符のエスケープを表します。
  • 円記号 2 は、文字列内の円記号 3 をエスケープするために必要なエスケープ文字を表します。
  • 円記号 1 は、円記号 2 をエスケープするために必要なエスケープ文字を表します。
これと同じロジックは、二重引用符の例にも当てはまります。
spec--ec_doublequote_OTH
正規表現では、円記号「\」をエスケープ文字としても使用します。条件では正規表現を使用できるため、正規表現内でエスケープ文字として使用される円記号の前には、いくつかの円記号を付ける必要があります。
文字列の比較
strcmp メソッドは、文字列(文字列、オクテット文字列、IP アドレスなど)内の文字を比較するために使用されます。このメソッドの実装は、C 言語による標準の strcmp 実装とは若干異なることに注意してください。このメソッドは、2 つの文字列が等しい場合に TRUE を返し、2 つの文字列が等しくない場合に FALSE を返します。
このメソッドを使用するには、以下の形式を使用します。
"strcmp({ TYPE <string> }, { TYPE <string> })"
たとえば、以下の条件では、IP アドレスと、値が IP アドレスである
CA Spectrum
 属性を比較します。2 つの文字列が同じ場合、この条件は TRUE を返します。
"strcmp({ A 179.82.253.01 }, { attr 0x00011aec })"
この例では、以下の点に注意してください。
  • 比較される各タイプ/文字列のペアは中かっこで囲まれています
  • 2 つのタイプ/文字列のペアはカンマで区切られ、かっこで囲まれています
  • メソッドの名前 strcmp は、かっこの左側に配置されます
  • 条件全体が引用符で囲まれています
正規表現
regexp または REGEXP メソッドは、文字列を入力パターンと比較するために使用されます。この操作を行うために、正規表現では、検索している文字のパターンを表すことができる一連のメタ文字を使用します。正規表現の入力パターンが入力文字列と一致する場合、このメソッドは TRUE を返します。それ以外の場合は FALSE を返します。
このメソッドを使用するには、以下の形式を使用します。
"regexp({ TYPE <string> }, { TYPE <input pattern> })"
EventCondition ルールでは、Perl Compatible Regular Expression (PCRE)パッケージの構文をサポートしています。以下に、PCRE パッケージでサポートされている基本的なメタ文字の一部とその使用例を示します。
メタ文字
意味
^
行の先頭を示します。
以下の例は、イベント変数 1 内の行の先頭にある文字列「CA」を検索します。
“regexp({ VARDATA 1 }, { S \“^CA\” })”
$
行の終わりを示します。
以下の例は、イベント変数 1 内の文字列「CA」で終わる行を検索します。
“regexp({ VARDATA 1 }, { S \“CA$\” })”
[]
文字クラスを囲みます。文字クラスは、文字列内の特定の位置を表すリテラル テキストを示します。
この例では、イベント変数 1 内で文字列「port」の後に値 1、2、または 3 が続く箇所を検索します。
“regexp({ VARDATA 1 }, { S \“port [1-3] \” })”
*
指定された先行する文字が 0 個以上存在することを示します。
この例では、属性 0x00011aec の値から 172 が 0 個以上存在する箇所を検索します。
“regexp({ attr 0x00011aec }, { S \“(172)*\” })”
+
指定された先行する文字が 1 つ以上存在することを示します。
この例では、属性 0x00011aec の値から 172 が 1 つ以上存在する箇所を検索します。
“regexp({ attr 0x00011aec }, { S \“(172)+\” })”
改行文字を除く任意の 1 文字を表します。
この例では、イベント変数 1 内で単語「port」の後に半角スペース 1 つと任意の 1 文字が続く箇所を検索します。
“regexp({ VARDATA 1 }, { S \“port . \” })”
|
代替パターンを区切ります。
“regexp({ VARDATA 1 }, { S\“interface|port\” })”
この例では、イベント変数 1 内の単語「interface」または「port」のいずれかを検索します。
\
一般的なエスケープ文字として使用され、メタ文字の文字どおりの意味を使用できるようにします。正規表現内でエスケープ文字を使用する場合は、文字列と条件のコンテキスト内で使用される必要なエスケープ文字についても考慮する必要があります。
この例では、イベント変数 1 内の文字列「172.55」を検索します。
“regexp({ VARDATA 1 }, { S\“172\\\\.55\” })”
「.」 文字は通常、正規表現内でメタ文字として扱われます。「.」文字を文字どおりの意味として扱うには、エスケープ文字(円記号)を 使用する必要があります。正規表現レベルでは、これにより次の構文が得られます: 172\.55。
ただし、この正規表現を文字列内で使用しているため、円記号の前に追加の円記号を配置する必要があります。式を左から右に読むと、最初の円記号は文字列内の 2 番目の円記号をエスケープするのに必要なエスケープ文字を表します。これにより、次の構文が得られます: 172\\.55。
さらに、条件のコンテキスト内で文字列を使用しているため、既存のそれぞれの「\」に対応する円記号をエスケープとして使用する必要があります。これにより、次の構文が得られます: 172\\\\.55。
比較演算子
数値またはブール値の場合、以下の比較演算子がサポートされています。
  • ==
    等しい
  • !=
    等しくない
  • >
    より大きい
  • <
    より小さい
  • <=
    以下
  • >=
    以上
ほとんどの数値は、同じ種類でない場合でも互いに比較できます。たとえば、以下の条件では、整数 2 を
CA Spectrum
 属性の値と比較します。
"{ I 2 } = = { attr 0x000117dc }"
Exists 演算子
exists 演算子を使用して、変数バインディング値またはその他の値の存在を確認できます。
exists( <expression> )
この演算子は、たとえば、値が存在する場合は評価し、そうでない場合はイベント条件ルールを終了したいときに役立ちます。以下のような演算子名のバリエーションがサポートされています。
exists
Exists
EXISTS
exists 条件式は、式が有効で値を含むときに TRUE を返します。たとえば、“exists( { v 1 } )” は、イベント変数 1 が存在し、値を含むときに TRUE を返します。
exists 条件式が FALSE を返したときにアクションなしでイベント条件ルールを終了するには、「no action」アクション(0x00010000 NULL イベントを送信)を使用します。以下のアクション名のバリエーションが、すべて小文字、すべて大文字、または頭文字のみ大文字でサポートされています。
no action
no-action
no_action
例として、以下のイベント条件ルールは、イベント変数 1 がイベント 0xffff0000 に存在するかどうかを確認します。存在しない場合、no action が実行されます。存在する場合は、イベント 0xffff0001 が生成されます。
0xffff0000 E 50 R CA.EventCondition,           \      " ! Exists( { v 1 } )", "No-Action",      \      " { v 1 } == { I 1 } ", 0xffff0001
論理否定(!)
論理否定(!)演算子を使用して、式の論理値を逆にすることができます。論理否定(!)は、C++ コードを記述するときと同じ方法で適用されます。たとえば、以下の条件は、変数バインディング 1 と変数バインディング 2 を比較します。論理否定(!)が比較結果に適用されます。したがって、変数バインディング 1 が変数バインディング 2 と等しい場合、式全体が false と評価されます。
"! ({ v 1 } = = { v 2 })"
複雑な条件
論理演算子とかっこを使用して簡単な条件を組み合わせて、より複雑な条件を作成できます。有効な論理演算子は以下のとおりです。
&& は AND を表します
|| は OR を表します
以下の条件には、中かっこで囲まれており論理演算子を使用してリンクされた複数のサブ条件が含まれています。
"({ I 2 } = = { I 2 }) && ({ I 2 } != { I 3 })"
この条件が TRUE と評価されるには、&& の左右のサブ条件が両方とも TRUE と評価される必要があります。2 の整数値は 2 の整数値に等しいので、条件の左側は TRUE です。2 の整数値は 3 の整数値と等しくないので、条件の右側も TRUE と評価されます。つまり、条件全体が TRUE と評価されます。
"({ I 3 } = = { I 4 } ) || ({ I 4 } > { I 2 })"
この条件が TRUE と評価されるには、|| の左側のサブ条件または || の右側のサブ条件のいずれかが TRUE と評価される必要があります。3 は 4 と等しくなく、4 は 2 より大きいため、式全体が TRUE と評価されます。
複数のサブ条件を使用して必要な式を作成できます。たとえば、4 は 2 より大きく、3 は 8 より小さいので、以下の条件は TRUE と評価されます。
"({ I 3 } = = { I 2 } || { I 4 } > { I 2 }) && ({ I 3 } < { I 8 } || { I 2 } = = { I 4 })"
ネストした条件
論理演算子を使用して単純な条件を組み合わせて複雑な条件を作成することはできますが、単純な条件を他の式の一部として使用することはできません。単純な条件には比較演算子を 1 つだけ含めることができます。
たとえば、以下の構文はサポートされていません。strcmp() の結果は、等号(==)演算子の引数として使用できません。
"strcmp ( { S \"a\" }, {S \"a" } ) = = { B TRUE }"
例: 基本的な EventCondition ルール
以下の例は、前のセクションで説明した条件構文の一部を使用する基本的な EventCondition ルールを示しています。TRUE と評価される最初の条件が使用され、その条件の直後にイベント コードが生成されます。
0x00045678 R CA.EventCondition, \ "regexp({ VARDATA 1 }, { S \"port [1-3] \" })", \ 0x00012345,"{ VARDATA 2 } == { attr0x000117dc }", \ 0x00012344, "strcmp({ A 179.82.253.01 }, \{ attr 0x00011aec } \ )", \ 0x00122334
例: (複雑な EventCondition ルール)変数バインディング値に基づいてイベントを生成
以下の例は、トラップと共に送信される変数バインディングのいずれかの値に基づいてアラームを生成する EventCondition ルールを示しています。変数バインディング 1 の値が次のいずれかの値と等しい場合、イベント条件ルールは 2 番目のイベント 0xffff0000 を生成します: DAT0005、DAT0006、DAT0007、DAT0008、DAT0011、DAT0012、DAT0013、DAT0014、DAT0021、DAT0022、または DAT0023。
0x1030f E 50 R CA.EventCondition, \ "regexp( { v 1 }, \ { S \"DAT00(05|06|07|08|11|12|13|14|21|22|23) \" } \ )", \ "0xffff0000 -:-"
正規表現の最後にはスペースがあるため、各パターンはスペースで終わる必要があることを示しています。
正規表現は、最初に、変数バインディング 1 と DAT00 にかっこの中の選択肢のいずれか(05、06、07 など)が組み合わされた文字列との間の一致を検索します。
イベント条件の最後には「-:-」があります。この記号は、元のイベント(0x1030f)からのすべての変数バインディング値が新しいイベント(0xffff0000)にコピーされることを指定します。
イベント条件が true と評価されたときにアラームを生成するには、アラームの生成を指定する新しいイベント(0xffff0000)のイベント マップが EventDisp ファイル内に必要です。
EventCounter ルール
EventCounter ルールは、「アップ」イベントでカウントアップし、「ダウン」イベントでカウントダウンするカウンタを実装します。このルールは、特定のしきい値に達するとイベントを作成します。
EventCounter ルールの構文は以下のとおりです。
<CountUpEventCode> R CA.EventCounter, <CountDownEventCode>, <threshold>, <ThresholdBreachedEventCode>, <ThresholdResetEventCode>
  • CountUpEventCode
    1 つカウントアップします。最初のカウントアップでカウンタ ルールが開始されます。
  • CountDownEventCode
    1 つカウントダウンします。
  • しきい値
    カウンタのしきい値(整数)。カウントがそのしきい値に達する(しきい値と等しくなる)と、ターゲット イベントが生成されます。
  • ThreaholdBreachedEventCode
    カウントがしきい値に達した場合に生成されます。
  • ThresholdResetEventCode
    カウントが再度しきい値を下回った場合に生成されます。
例: EventCounter ルール
0x0f420001 E 50 R CA.EventCounter, 0x0f420002, 3, 0x0f420003, 0x0f420004
カウントアップするにはイベント 0x0f420001 を使用し、カウントダウンするにはイベント 0x0f420002 を使用します。カウンタが 3 以上の場合、イベント 0x0f420003 が生成されます。カウントが再度 3 を下回ると、イベント 0x0f420004 が生成されます。
Heartbeat ルール
Heartbeat ルールは、「ハートビート」イベントを監視するために設定されます。このイベントが一定の間隔で確認されます。ハートビートのインスタンスが見つからない場合、このルールによってイベントが生成されます。
<TriggerEventCode> R CA.Heartbeat, <HeartbeatEventCode>, <MissingHeartbeatEventCode>, <timeout>, <StopEventCode>
  • TriggerEventCode
    ハートビート イベント ルールのインスタンスを作成します
  • HeartbeatEventCode
    ハートビート イベント コード
  • MissingHeartbeatEventCode
    ハートビートが見つからない場合に生成されるイベント
  • timeout
    個々のハートビート間のタイム ギャップ(秒単位)
  • StopEventCode
    (オプション)ルールを停止するイベント コード。ルール インスタンスは継続的に実行され、停止するまでハートビートを検索します
例: Heartbeat ルール
0x0f440001 E 50 R CA.Heartbeat, 0x0f440002, 0x0f440003, 10, 0x0f440004
イベント 0x0f440001 は、ハートビート ルールをインスタンス化します。次に、10 秒ごとに少なくとも 1 回発生するイベント 0x0f440002 が検索されます。ハートビート イベントが見つからない場合、ルールによってイベント 0x0f440003 が生成されます。ハートビート ルールのインスタンスを停止するには、イベント 0x0f440004 を使用します。
SoloEvent ルール
SoloEvent ルールは、定義された時間ウィンドウに、他のイベントが前後に発生しないターゲット イベントのインスタンスを検索します。抑止リストに含まれるイベントは発生しません。その他のイベントは単独イベントに影響しません。
例として、イベント A が発生したときに、イベント B、C、または D (「防止」イベント)のいずれも 5 分前または 10 分後に発生しない場合にルールがトリガされるようにすることができます。
SoloEvent ルールの構文は以下のとおりです。
<TriggerEventCode> R CA.SoloEvent, <StopEventCode>, <SoloEventCode>, <prePreventPeriod>, <postPreventPeriod>, <TargetEventCode>, <PreventCode 1>, <PreventCode 2 (optional), ... , <PreventCode N (optional)>
  • TriggerEventCode
    「単独」イベント ルールを開始します。
  • StopEventCode
    ルールを停止します。停止イベントを設定しない限り、ルールは継続的に実行されます。
  • SoloEventCode
    単独イベントを設定します。
  • prePreventPeriod
    「防止」イベントが発生しない、単独イベント前の期間(秒)を設定します。
  • postPreventPeriod
    「防止」イベントが発生しない、単独イベント後の期間を設定します。
  • TargetEventCode
    (「単独」イベントのみが発生したときに)ルールがトリガされると生成されるイベントを定義します。
  • PreventCode 1 ~ PreventCode N
    「抑止」イベントのリストを定義します。
例: SoloEvent ルール
以下の例では、単独イベント 0x0f400003 を検出し、イベント 0x0f400006、0x0f400007、0x0f400008、または 0x0f400009 のいずれも、その前後 20 秒以内に検出されなかった場合に、イベント コード 0x0f400005 が生成されます。最初のイベント 0x0f400001 は、ルールをインスタンス化するために生成する必要があります。イベント 0x0f400002 を使用してルールを停止できます。
0x0f400001 E 40 R CA.SoloEvent, 0x0f400002, 0x0f400003, 20, 20, 0x0f400005, 0x0f400006, 0x0f400007, 0x0f400008, 0x0f400009
SingleEvent ルール
SingleEvent ルールは、リセット(「ダウン」)イベントが検出される前に、1 つのイベント(「アップ」イベント)が複数回発生するイベント ストリームを減少させます。複数の「アップ」イベントの代わりに、他のルールで再利用できる、状態(「アップ」または「ダウン」)を示す単一イベントが設定されます。
SingleEvent ルールの構文は以下のとおりです。
<TriggerEventCode> R CA.SingleEvent, <ResetEventCode>, <SingleTargetEventCode>, <SingleResetTargetEventCode>
  • TriggerEventCode
    複数回発生し、「1 回」の発生に変換する必要があります。また、最初に発生したときにルールのインスタンス化をトリガします。
  • ResetEventCode
    リセット イベントを設定します。このイベントが発生すると、ルールは別の単一イベントを再作成する準備ができています。
  • SingleTargetEvent
    ルールがインスタンス化されたときにトリガ イベントが初めて発生するか、またはリセット イベントが発生した後にトリガ イベントが初めて発生すると生成されます。
  • SingleResetTargetEvent
    (オプション)リセット イベントが発生すると生成されます。
例: SingleEvent ルール
0x0f430001 E 50 R CA.SingleEvent, 0x0f430002, 0x0f430003, 0x0f430004
イベント 0x0f430001 が最初に発生するたびに、イベント 0x0f40003 を生成します。SingleEvent がインスタンス化されるタイミングは、最初のルールの作成時、トリガが最初に発生した後、またはリセット イベント 0x0f430002 が発生した後のいずれかです。リセット イベントの発生時にイベント 0x0f430004 も生成されます。
1 つの EventDisp エントリで複数のイベント ルールを使用
複数のイベント ルールを使用して 1 つのイベントが処理されるように指定できます。たとえば、以下のイベント処置エントリでは、イベント 0x0001002a が EventSequence ルールと EventPair ルールの両方を使用して処理されるように指定しています。
0x0001002a R CA.EventSequence, 0x0001002c, 60, 0x0001002d,0x0001002e \ R CA.EventPair, 0x0001002b, 0x0001002f, 60
このエントリは、イベント 0x0001002a、0x0001002d、および 0x0001002e が 60 秒以内にこの順序で発生した場合はイベント 0x0001002c が生成され、イベント 0x0001002a が発生した後 60 秒以内にイベント 0x0001002b が発生しない場合はイベント 0x0001002f が生成されることを指定しています。
行の最後に円記号文字が使用され、イベント処置エントリが次の行に続くことを示しています。
注:
1 つのイベント処置エントリ内に複数のルールを指定してください。あるイベントに対して 2 つの別個のイベント処置エントリを作成した場合は、最初のイベント処置エントリのみが処理されます。
異なるイベント間でのイベント変数のコピー
イベント ルールを使用してイベントをトリガすることができます。ただし、場合によっては、複数の要因となるイベントが発生した後、または特定の複雑な条件が満たされた後にのみ、イベントが生成されることがあります。
デフォルトでは、ルール出力イベントにイベント変数は含まれていません。ただし、ルール処理の要因となるイベント内のイベント変数の値をルール出力イベントにコピーするように指定できます。イベント変数をコピーすると、それらの値に基づいてルール出力イベントのイベント処理の動作を指定できます。この操作は、イベント変数の識別子を使用して実行できます。さらに、アラームを生成するイベント内のイベント変数の値もこれらのアラームに格納されるため、イベント識別子を使用して、コピーされた変数の値に基づいてアラーム処理(アラームの生成またはクリア)を指定することもできます。
このセクションでは、イベント変数コピーの構文についての参照情報を提供します。
イベント変数コピーの構文
イベント 0x10002、0x10003、および 0x10004 のすべてがイベント 0x10001 から 10 秒以内に受信された場合にイベント 0xa000f を生成する、以下の EventCombo ルールについて考えてみます。
0x10001 R CA.EventCombo, 0xa000f, 10, 0x10002, 0x10003, 0x10004
ここで、要因となるイベントに値を持つ変数バインディングが含まれており、その一部を以下のようにイベント 0xa000f にコピーすると仮定します。
要因となるイベント
コピーするイベント変数
コピーを受信する 0xa000f 内のイベント変数
0x10001
2、3
1、2
0x10002
1、5
3、4
0x10003
なし
なし
0x10004
2、3、4、および 5
5、6、7、および 8
注:
イベント ルールによって生成されるイベントには、要因となるイベントからコピーされない限り、イベント変数は含まれません。
上記の表に指定されているイベント変数をコピーするには、以下のイベント変数コピー構文が使用されます。
0x10001 R CA.EventCombo, "0xa000f 2-3:1-2", \ 10, \ "0x10002 1:3, 5:4", \ 0x10003, \ "0x10004 2-5:5-8"
この構文は、0x10001 のイベント変数 2 および 3 を 0xa000f のイベント変数にコピーし、0x10002 のイベント変数 1 および 5 を 0xa000f のイベント変数 3 および 4 にコピーし、0x10004 のイベント変数 2、3、4、および 5 をそれぞれ 0xa000f のイベント変数 5、6、7、および 8 にコピーします。
イベント パラメータおよび変数 ID
イベント パラメータは、要因となるイベントからルールによって生成されたイベントにコピーするイベント変数を指定します。この情報は要因となるイベントに関連付けられ、イベント ID の後に入力されます。イベント コピー情報がイベント パラメータの一部であり、次のルール パラメータではないことを指定するには、以下のようにイベント ID とコピー情報を二重引用符で囲む必要があります。
"0x10002 1:3"
イベント変数のコピー情報
イベント パラメータのイベント変数のコピー情報セクションは、それぞれがカンマで区切られた複数の部分で構成されます。各部分では、ソース変数 ID または ID の範囲を指定します。その後にターゲット変数 ID または ID の範囲が続きます。以下に示すように、コロンはソース ID をターゲット ID から分離します。
"0x10001 1:1, 2:3"
ソース ID とターゲット ID が同じ場合、いずれかを空白のままにすることができます。
変数 ID
1 つのイベント変数は ID によって識別されます。通常、ID は小さい番号です。
特定のソース イベント変数をコピーするには、コピー情報セクション内のソース位置(コロンの左)に ID を入力します。同様に、特定のイベント変数にコピーするには、その ID をターゲット位置(コロンの右側)に入力します。
たとえば、以下の構文は、イベント 0x10001 の変数 1 をルール生成イベントの変数 1 にコピーします。
"0x10001 1:1"
同様に、以下の構文は、イベント 0x10003 の変数 1 〜 5 をルール生成イベントの同じ ID を持つ変数にコピーします。
"0x10003 1:1, 2:2, 3:3, 4:4, 5:5"
範囲を使用した変数 ID
ソースおよびターゲット変数 ID の範囲は、開始 ID、ダッシュ(「-」)文字、停止 ID の順に続けて指定できます。開始 ID と停止 ID は範囲に含まれます。
開始 ID、停止 ID、または両方の ID は省略することができます。開始 ID のないエントリでは、1 から停止 ID (停止 ID も含む)までの範囲のすべての ID がコピーされます。停止 ID のないエントリでは、開始 ID 以上の ID を持つすべての変数がコピーされます。開始 ID も停止 ID もないエントリでは、すべての変数がコピーされます(ダッシュも省略可能です)。
ソースおよびターゲットの範囲内の変数の数は同じにする必要があります。数が一致しない場合は、より小さい範囲の数の ID が変数のコピーに使用され、警告が生成されます。
例として、以下の 3 つのルール フラグメントはすべて同等です。それぞれのルールでは、イベント 0x10004 の変数 1 〜 73 を、ルール生成イベント内の同じ ID を持つ変数にコピーします。
"0x10004 1 - 73 : 1 - 73" "0x10004 1-73 :" "0x10004 :1-73"
イベント 0x10005 の変数 1 ~ 3 を、新しい ID 6 ~ 8 を使用してルール生成イベントにコピーするには、以下のように指定します。
"0x10005 1-3:6-8"
変数 5 までのすべての変数を、1 から始まる新しい ID を使用してルール生成イベントにコピーするには、以下のように指定します。
"0x10006 -5:1-"
変数 2 ~ 5 を新しい ID 1 ~ 4 にコピーし、ルール生成イベント内の同じターゲット ID を使用して ID 7 から始まる残りのすべての変数もコピーするには、以下のように指定します。
"0x10007 2-5:1-4, 7-:7-"
イベント 0x10008 のすべての変数をルール生成イベントにコピーするには、以下のいずれかを使用します。
"0x10008 -:-" "0x10008 -:" "0x10008 :-" "0x10008 :" "0x10008 1-:1-"
以下の例では、変数 3 ~ 5 をイベント 0x10009 からルール生成イベントにコピーします。この場合、ソース イベントの変数エントリの数はターゲット イベントよりも少なくなっています。この例は成功しますが、警告が生成されます。
"0x10009 3-5:3-"
初期イベントからの変数のコピー
最初のイベント(イベント処置エントリがあるイベント)から変数をコピーすることは特殊なケースです。この場合、初期イベントのコピー情報は、ソース イベントではなく生成されるイベントに関連付けられます。
例として、以下の EventCombo ルールと EventRate ルールについて考えてみます。どちらもイベント 0x10001 を監視します。イベント 0x10002 と組み合わせてイベント 0x10001 が発生した場合、そのイベント変数 1 が重要です。頻繁に発生する場合は、そのイベント変数 3 が対象となります。
0x10001 R CA.EventCombo, "0xa000f 1:1", 10, 0x10002 \ R CA.EventRateCounter, 10, 3600, "0xa000e 3:1"
異なるタイプのルールでは、異なるパラメータ位置に生成するイベントを指定します。上記の例では、EventCombo ルールで最初の変数の位置を使用し、EventRateCounter ルールで 3 番目の変数の位置を使用します。
複数のイベント発生
2 つのイベント ルールが複数のイベント発生(たとえば、EventRateWindow ルールと EventRateCounter ルール)を監視する場合、イベントの最後の発生は、最新のイベント変数をコピーするために使用されます。
例として、イベント 0x10001 は潜在的な侵入の重大度に関する情報を保持する侵入検知システムからのセキュリティ アラートであると仮定します。また、以下のイベント レート ルールが存在し、100 秒の間隔中に少なくとも 5 回、イベント 0x10001 を受信するとイベント 0xa000f が生成されると仮定します。
0x10001 R CA.EventRateCounter, 5, 100, "0xa000f 1:1"
要因となるイベントで可能なシーケンスは以下のとおりです。
注:
読みやすくするために、重大度のイベント変数はテキスト文字列として表示しています。
0x10001 警告
0x10001 高
0x10001 警告
0x10001 重大
0x10001 重大
ここで、受信した 5 番目の 0x10001 イベントがルール出力イベントの生成をトリガし、変数 1 が「重大」に設定されたイベント 0xa000f を作成します。
代替となるさらに具体的なアプローチとして、以下の EventCondition ルールを使用して、ルール出力イベントが(任意の重大度の 5 つの 0x10001 イベントに応答するのではなく) 5 つの重大な 0x10001 イベントへの応答としてのみ生成されるようにすることができます。
0x10001 R CA.EventCondition, \ "regexp ( { variable 1 } , { S \"Critical\" } )", "0xa0001 1:1" 0xa0001 R CA.EventRateCounter, 5, 100, "0xa000f"
イベント変数コピーの例
イベント変数を要因となるイベントからルール生成イベントにコピーする方法について、「イベント変数コピーの構文」を参照し、以下のイベント変数コピーの例を再確認してください。
0x10001 R CA.EventCombo, "0xa000f 2-3:1-2", \ 10, \ "0x10002 1:3, 5:4", \ 0x10003, \ "0x10004 2-5:5-8"
この EventCombo ルールでイベント 0xa000f が生成されると、要因となるイベント内のイベント変数が以下の表に示すようにコピーされます。
ソース イベント
Source変数 ID
0xa000f (ターゲット)変数 ID
0x10001
2
1
0x10001
3
2
0x10002
1
3
0x10002
5
4
0x10004
2
5
0x10004
3
6
0x10004
4
7
0x10004
5
8
イベント変数コピーとイベント識別子
イベント コピー構文は、イベント識別子と組み合わせて使用して、アラームを生成するイベントを区別することができます。たとえば、イベント 0x10001 を受信し、イベント変数 1 に失敗したボードのインデックスが含まれているときに、アラーム 0xffff0000 を生成する必要があるとします。イベント変数 1 は、アラーム識別子として使用できます。また、デバイスは誤ってエラーを報告することがあり、サポートするイベント 0x10002 が 10 秒以内に受信されない場合はアラームをクリアする必要があるとします。以下のイベント マップは、これらの要件を満たしています。
0x10001 E 50 \ A 2, 0xffff0000, 1 \ R CA.EventPair, 0x10002, "0xa000f 1:1", 10 0xa000f C 0xffff0000, 1
EventPair ルールは、2 番目のイベントを監視し、アラームのクリアに必要な正しい変数を含むクリア イベントを発行するために使用されます。ルールに含まれているコピー情報だけでなく、アラームを生成およびクリアするかどうかを決定するために、イベント識別子を使用することに注意してください。
EventDisp ファイルの構文エラー
すべてのイベントの処理構文は、単一のイベント マップとして存在する必要があります。行の最初のエントリとして同じイベント コードを 2 回リストする EventDisp ファイルは、不適切な形式であると見なされます。このような場合、特定のイベント コードに適用される最初の行が処理され、追加のエントリは破棄されます。
以下の例は、
不正な
構文を示しています。
0x3e00002 E 50 0x3e00002 A 2,0x3e00002
以下の例は、
正しい
構文を示しています。
0x3e00003 E 50 A 2,0x3e00003
不正な例では、最初のイベント マップのみが処理されます。したがって、イベント 0x3e00002 を受信すると、イベント重大度 50 でログに記録されます。ただし、アラームは生成されません。
正しい例では、
CA Spectrum
がイベントをログに記録し、イベント重大度を割り当てて、イベントの結果としてアラームを生成するように指定する方法を示しています。
EventDisp ファイルでのコメントの追加
# 識別子を使用して、EventDisp ファイルにコメントを追加することができます。EventDisp ファイルの処理時に、この識別子の後に続く行内のテキストは無視されます。
行の最初の文字として # 識別子を入力する必要があります。# の前にスペースを入力しないでください。そうしないと EventDisp ファイルの処理時にエラーが発生します。コメントが複数行にわたる必要がある場合は、# 識別子を各行の最初の文字として入力します。
以下の例は、適切な使用方法を示しています。
# This is a valid comment. # This is a valid comment. 0x3dc0004 E 50 A 2,0x3dc0001 0x3dc0002 C 0x3dc0001