sequence

このコマンドを使用して、linkコマンドで作成された各グループ内のログ・レコードの順序付きパターンを検索します。1つの一致ルール、指定した順序で発生する複数のルール、または2つの境界ルール間で発生するレコードを検索できます。

このコマンドは、リンクされた各グループに順序一致件数および順序詳細を追加します。一致する順序のないグループは、順序一致カウントがゼロの結果に残ります。一致する順序を持つグループのみを返すには、| where s1 > 0などのフィルタを追加します。ここで、s1は順序名です。

順序では、最大4つのルール・ステップと最大4つの選択した出力フィールドがサポートされます。

構文

sequence name = <name> [<sequence_options>] <match_rules> select <output_fields>

トピック:

パラメータ

次の表に、このコマンドで使用されるパラメータとその説明を示します。

パラメータ 説明

name

順序表示名

sequence_options

レコードの順序付け方法および順序に適用される時間制約を制御するオプションの設定。

構文: [field = <field_name>][span = <int><timescale>] [maxpause = <int><timescale>]

  • field: 順序一致の前にログ・レコードを順序付けするために使用されるタイムスタンプ・フィールド。このパラメータを指定しない場合は、Timeが使用されます。
  • span: 最も早い一致レコードから順番に最後に一致したレコードまでの最大経過時間。この制約は、各ルールまたはギャップに個別ではなく、順序全体に適用されます。
  • maxpause: 1つの順序で一致した2つのレコード間の最大許容時間。この制約は、同じルールに一致するレコードと、1つのルールの最後のレコードと次のルールの最初のレコードの両方に適用されます。
  • timescale: spanまたはmaxpauseで使用される単位。有効な値は、秒、分、時間、日、週および月で、サポートされている略語が含まれます。

    <sec> | <min> | <hour> | <day> | <week> | <month>

    sec: このパラメータに許可される値には、s、sec、secs、secondおよびsecondsが含まれます。

    min: このパラメータに許可される値には、m、min、mins、minuteまたはminutesが含まれます。

    hour: このパラメータに許可される値には、h、hr、hrs、hourおよびhoursが含まれます。

    day: このパラメータに許可される値には、d、dayおよびdaysがあります。

    week: このパラメータに指定できる値には、w、weekおよびweeksが含まれます。

    month: このパラメータに指定できる値には、mon、monthおよびmonthsが含まれます。

match_rules

構文: 必要なレコード・パターンを定義するルール。最大4つのルール・ステップを指定できます。

<match_rule> [then <match_rule> ...] | between <match_rule> and <match_rule>

match_rule: 副問合せの後にオプションのカウント制約が続きます。

<match_rule> ::= <subquery> [<match_count>]

<match_count> ::= {<n>} | {<min_match>,} | {<min_match>,<max_match>}

  • subquery: 一致するログ・レコードの識別に使用される条件。1つのルールに複数の条件を含めることができます。
  • n: ルールを満たすために必要な、一致するログ・レコードの正確な数。
  • min_match: ルールを満たすために必要なログ・レコードの最小数
  • max_match: ルールを満たすことができるログ・レコードの最大数。

中カッコはリテラル・カウント・デリミタで、この構文では大カッコはオプションのカウント制約を示します。

output_fields

順序の詳細に含める照合済レコードのカンマ区切りフィールド。各フィールドには、オプションの別名を指定できます。

構文: <field_name> [as <new_name>] [, <field_name> [as <new_name>]] ...

順序照合の理解

括弧で囲まれた各条件がルール・ステップです。ルール・ステップは、カウント制約に応じて、1つ以上のログ・レコードと一致させることができます。

例:

[ username != null ]{3,}
then [ hostname = abc ]{1,}

この式には、2つのルール・ステップが含まれています。最初のステップでは少なくとも3つの一致するレコードが必要であり、2番目のステップでは、その後に発生する一致レコードが少なくとも1つ必要です。

したがって、一致したタイムラインには、レコードA1, A2, A3, B1が含まれる場合があります。時間制約は、2つのルール・ステップのみでなく、これらの個別の一致レコードに対して評価されます。

一致する演算子を次のように使用します。

  • thenでは、ルール・ステップを指定された順序で実行する必要があります。

  • betweenは、開始境界と終了境界を使用して順序を定義します。順序の詳細には、一致した境界レコードと、順序の評価時に使用される中間一致レコードが含まれます。これは、境界間のすべてのレコードが返されるという意味ではありません。

一致数の指定

カウント制約は、各ルール・ステップに個別に適用されます。

構文 意味
[<condition>] 少なくとも1つの一致するレコード。
[<condition>]{<n>} 指定した一致レコード数。
[<condition>]{<min>,} 少なくとも、指定された最小一致レコード数。
[<condition>]{1,<max>} 1つのレコードから、指定された最大一致レコード数まで。
[<condition>]{<min>,<max>} 指定した範囲内の一致するレコードの数。

たとえば、{3}には3つの一致するレコードが必要で、{3,}には3つ以上の一致するレコードが必要ですが、{2,10}には2から10の一致するレコードが必要です。

spanとmaxpauseの区別

spanを使用して、完全一致順序の合計経過時間を制限します。maxpauseを使用して、隣接する一致レコードの各ペア間の時間を制限します。

次のレコードが一致した順序候補を考えてみます。

記録 時間
A1 10:00
A2 10:02
A3 10:12
B1 10:14

この候補者の場合:

  • 順序全体が14分間続くため、span = 20minuteは成功します。

  • A2とA3の間のギャップが10分であるため、maxpause = 5minuteは失敗します。

spanとmaxpauseは、指定した時間内に完全な順序が終了する必要があり、一致した隣接するレコードに許容よりも長いギャップがあってもかまわない場合に一緒に使用できます。

例

  1. 1つの条件で1つのルールを使用

    次のコマンドは、ターゲット・タイプがクラスタ・データベースであるレコードの各グループを評価し、シーケンス結果をグループに追加します。

    * | link Severity
      | sequence name = s1
          [ 'Target Type' = 'Cluster Database' ]{1,}
          select 'Target Type'

    カウント制約を省略した場合、ルールには少なくとも1つの一致するレコードが必要です。

    * | link Severity
      | sequence name = s1
          [ 'Target Type' = 'Cluster Database' ]
          select 'Target Type'

    一致する順序を持つグループのみを返すには、| where s1 > 0を追加します。

  2. 一致するフィールドとは異なるフィールドを返します

    条件では1つのフィールドを使用できますが、selectは一致したレコードから他のフィールドを返します。次のコマンドは、クラスタ・データベース・レコードに一致し、そのターゲットを返します。

    * | link Severity
      | sequence name = s1
          [ 'Target Type' = 'Cluster Database' ]{1,}
          select Target
  3. ルールでの複数の条件の使用

    レコードは、ルールの一致に関与するために、ルール内のすべての条件を満たす必要があります。次のコマンドは、ログ・ソースを持つクラスタ・データベース・レコードと一致します:

    * | link Severity
      | sequence name = s1
          [ 'Log Source' != null
            and 'Target Type' = 'Cluster Database' ]{1,}
          select 'Target Type', Target

    次の例では、ユーザー・サイズおよびコンテンツ・サイズによる一致も制限します。

    * | link Severity
      | sequence name = s1
          [ 'Event Target Type' != random
            and 'User Name' != null
            and 'Content Size' > 100 ]{1,}
          select 'User Name', 'Content Size', 'Event Target Type'
  4. ルールの一致数を制御します。

    {min,}を使用して、最小値のみを指定します。

    * | link Severity
      | sequence name = s1
          [ 'Event Target Type' = rac_database ]{101,}
          select 'User Name'

    {1,max}を使用して、少なくとも1つの一致が必要なときに最大値を設定します。

    * | link Severity
      | sequence name = s1
          [ 'Event Target Type' = rac_database
            and 'User Name' != null ]{1,100}
          select 'User Name'

    {min,max}を使用して、一致の境界数を要求します。

    * | link Severity
      | sequence name = s1
          [ 'Event Target Type' = rac_database
            and 'User Name' != null ]{101,500}
          select 'User Name'

    カウントは、ルール ステップごとに個別に評価されます。

  5. thenを使用した順序付きルールの検索

    次の2ステップのシーケンスでは、クラスタ・データベース・レコードの後にホスト・レコードを検索します。

    * | link Severity
      | sequence name = s1
          [ 'Event Target Type' = rac_database ]{1,}
          then [ 'Event Target Type' = host ]{1,}
          select 'Event Target Type'

    次のコマンドは、3段階の順序を定義します。各ルールには、独自の一致数があります。

    * | link Severity
      | sequence name = s1
          [ 'Event Target Type' = rac_database ]{1,}
          then [ 'Event Target Type' = host ]{1,10}
          then [ 'Event Target Type' = fusion_apps_j2ee_app ]{1,}
          select 'Event Target Type'

    次のコマンドは、4段階の順序を定義します。

    * | link Severity
      | sequence name = s1
          [ 'Event Target Type' = rac_database
            and 'User Name' != random ]{1,}
          then [ 'Event Target Type' = host
                 and 'Content Size' > 100 ]{1,}
          then [ 'Event Target Type' = fusion_apps_j2ee_app ]{1,}
          then [ 'Event Target Type' = rac_database
                 and 'User Name' != random ]{1,}
          select 'Event Target Type', 'User Name', 'Content Size'
  6. 複数の条件と個別の出力フィールドを指定したthenの使用

    各ルールには複数の条件を含めることができますが、selectは分析用の追加フィールドを返します。

    * | link Severity
      | sequence name = s1
          [ 'Event Target Type' = rac_database
            and 'Content Size' > 100 ]{1,}
          then [ 'Event Target Type' = host ]{1,}
          then [ 'Event Target Type' = fusion_apps_j2ee_app ]{1,}
          select 'Event Target Type', 'User Name', 'Content Size'
  7. spanの単一ルール順序への適用

    単一のルールの場合、spanは、一致した最も早いレコードから一致した最新のレコードまでの合計時間を制限します。次のコマンドでは、5分以内に少なくとも2つの一致するレコードが必要です。

    * | link Severity
      | sequence name = s1 span = 5minute
          [ 'Event Target Type' != null
            and 'User Name' != null ]{2,}
          select 'Event Target Type', 'User Name'
  8. 順序付けられた複数ルール順序へのspanの適用

    複数のルールの場合、spanは完全な順序に適用されます。次の3ステップのシーケンスは、2日以内に収まる必要があります。

    * | link Severity
      | sequence name = s1 span = 2day
          [ 'Event Target Type' = rac_database
            and 'Content Size' > 100
            and 'User Name' != null ]{100,}
          then [ 'Event Target Type' = host ]{100,}
          then [ 'Event Target Type' = fusion_apps_j2ee_app ]{100,}
          select 'Event Target Type', 'Content Size', 'User Name'
  9. 2つの境界を含むレコードの検索

    パターンに開始境界と終了境界がある場合は、betweenを使用します。境界レコードは、返される順序の詳細に含まれます。

    * | link Severity
      | sequence name = s1
          between
            [ 'Event Target Type' = rac_database
              and 'Content Size' > 0
              and 'User Name' != null ]{1,}
          and
            [ 'Event Target Type' = fusion_apps_j2ee_app ]{1,}
          select 'Event Target Type', 'Content Size', 'User Name'
  10. betweenをspanとともに使用

    spanをbetweenとともに使用する場合、一致した開始境界から一致した終了境界までの時間は、指定された期間内である必要があります。

    * | link Severity
      | sequence name = s1 span = 2day
          between
            [ 'Event Target Type' = rac_database
              and 'Content Size' > 100
              and 'User Name' != null ]{100,}
          and
            [ 'Event Target Type' = fusion_apps_j2ee_app ]{100,}
          select 'Event Target Type', 'Content Size', 'User Name'
  11. maxpauseの単一ルール順序への適用

    単一のルールの場合、maxpauseは、そのルールを満たすように連鎖した隣接するレコード間の時間を制限します。次のコマンドでは、一致するレコードが連続して5分以内です。

    * | link Severity
      | sequence name = s1 maxpause = 5minute
          [ 'Event Target Type' = rac_database
            and 'User Name' != null ]{100,}
          select 'Event Target Type', 'Content Size', 'User Name'
  12. maxpauseをthenまたはbetweenとともに使用します

    thenを使用すると、maxpauseは、各ルール一致内およびルール間の遷移全体に適用されます。

    * | link Severity
      | sequence name = s1 maxpause = 15hour
          [ 'Event Target Type' = rac_database
            and 'User Name' != null ]{1,}
          then [ 'Event Target Type' = host ]{1,}
          select 'Event Target Type', 'Content Size', 'User Name'

    同じ動作が、betweenによって定義された順序に適用されます。

    * | link Severity
      | sequence name = s1 maxpause = 17hour
          between
            [ 'Event Target Type' = rac_database
              and 'User Name' != null ]{1,}
          and
            [ 'Event Target Type' = fusion_apps_j2ee_app ]{1,}
          select 'Event Target Type', 'Content Size', 'User Name'
  13. spanとmaxpauseを一緒に使用

    完全なシーケンスが全体の時間ウィンドウ内に収まり、隣接するすべてのギャップが小さい制限内に留まる必要がある場合は、両方のオプションを使用します。

    次の境界スタイルのシーケンスは、隣接するギャップが17時間を超えないように、2日以内に終了する必要があります。

    * | link Severity
      | sequence name = s1 span = 2day maxpause = 17hour
          between
            [ 'Event Target Type' = rac_database
              and 'User Name' != null
              and 'Content Size' > 100 ]{100,}
          and
            [ 'Event Target Type' = fusion_apps_j2ee_app ]{100,}
          select 'Event Target Type', 'Content Size', 'User Name'

    次の順序シーケンスは、同じ2つの制約を適用します。

    * | link Severity
      | sequence name = s1 span = 2day maxpause = 17hour
          [ 'Event Target Type' = rac_database
            and 'User Name' != null
            and 'Content Size' > 100 ]{100,}
          then [ 'Event Target Type' = host ]{100,}
          then [ 'Event Target Type' = fusion_apps_j2ee_app ]{100,}
          select 'Event Target Type', 'Content Size', 'User Name'
  14. ルールでの計算済フィールドおよび副問合せの使用

    ルールには、whereなどの副問合せ操作を含めることができます。

    * | link Severity
      | sequence name = s1
          [ Target != slc03qoo
            | where substr(Target, 0, 3) = slc ]
          select Target

    シーケンスでは、パイプラインで以前に計算されたフィールドを使用することもできます。

    * | eval color =
          if(Severity = debug
             or Severity = fine
             or Severity = finer
             or Severity = info,
             green,
             if(Severity = warn, yellow, red))
      | link Target
      | sequence name = s1
          between [ * | where color = red ]{3}
          and [ * | where color = yellow ]{1,}
          select color

    開始ルールには、colorがredの3つのレコードのみが必要です。終了ルールには、colorがyellowのレコードが少なくとも1つ必要です。

  15. ダウンストリーム・コマンドでの順序出力の使用

    シーケンス出力フィールド(シーケンス数を含む)は、あとでパイプライン内のコマンドで使用できます。

    次のコマンドは、リンクされたグループ全体で一致した順序の平均数と合計数を計算します(一致がゼロのグループを含む)。

    * | link Target
      | sequence name = 'My Field'
          [ Severity != null ]
          select Severity
      | eventstats
          avg('My Field'),
          sum('My Field')

    次のコマンドは、シーケンス結果を3日前の結果と比較します。

    * | link Target
      | sequence name = s1
          [ 'Target Type' = 'Cluster Database' ]
          select 'Target Type'
      | compare timeshift = -3d

    nameで指定されたフィールドには、各リンク・グループ内で一致する順序の数が含まれます。