すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:クエリ文の指定

最終更新日:Aug 29, 2024

Simple Log Serviceは、関連するモニタリングとデータなしアラートをサポートします。 このトピックでは、関連するモニタリングおよびデータなしアラートを設定する方法について説明します。

モニタリングの適時性

  1. ワークフローの監視: システムは、アラートルールで指定した時間範囲とCheck Frequencyパラメーターの値に基づいてクエリ文を実行します。 クエリと分析の結果が返された後、システムはアラートルールのトリガー条件に基づいて結果を評価します。 トリガー条件が満たされると、システムはアラートを生成します。

  2. 問題分析

    1. データインデックス作成の待ち時間: 短い待ち時間の後にのみ、Simple Log Serviceに書き込まれたデータを照会できます。 その結果、レイテンシが短くてもデータを取得できない場合がある。

      たとえば、Simple Log Serviceは、クエリステートメントが1分 (相対) の時間範囲を使用し、[チェック頻度] パラメーターが固定間隔1分に設定されているアラートルールに基づいて、12:03:30にチェックを開始します。 この場合、ステートメントは [12:02:30,12:03:30) の時間範囲でデータを照会します。 ただし、12:03:29にデータがSimple Log Serviceに書き込まれた場合、ステートメントがデータを取得できない場合があります。

    2. クエリの不正確性: ログが異なる時点で生成され、同じ分にSimple Log Serviceに書き込まれる場合、ログは同じインデックスを持ちます。 その結果、より後の時点で生成されるログは、より早いインデックスを有することができる。

      たとえば、Simple Log Serviceは、クエリステートメントが1分 (相対) の時間範囲を使用するアラートルールに基づいて、12:03:30にチェックを開始します。 この場合、ステートメントは [12:02:30,12:03:30) の時間範囲でデータを照会します。 12:02:20と12:02:50に2つのログが生成され、12:02:50にSimple Log Serviceに書き込まれた場合、12:02:20を使用してログのインデックスを作成でき、ステートメントは [12:02:30,12:03:30) の時間範囲に基づいてログを取得できません。

  3. 最適化の提案

    • アラートに高い精度が必要な場合は、次の提案を参照して、繰り返しアラートと偽陰性を排除できます。

      • データインデックス作成の遅延に関する提案: [クエリ統計] ダイアログボックスで [時間範囲] パラメーターを設定する場合、[相対の下のカスタム] をクリックし、[開始時刻] および [終了時刻] フィールドに現在の時刻より前の値を指定することを推奨します。 たとえば、[時間範囲] パラメーターを70秒前〜10秒前 (相対) に設定できます。 10秒のバッファ時間は、インデックス速度が遅いために一部のデータが取得されないという問題を防ぐのに役立ちます。

      • クエリの不正確性に関する提案: [クエリ統計] ダイアログボックスで [時間範囲] パラメーターを設定するときは、時間枠を選択することを推奨します。 たとえば、時間範囲パラメーターを1分 (時間枠) 、5分 (時間枠) 、または1時間 (時間枠) に設定できます。 次に、Check Frequencyパラメーターを選択した時間枠と同じ値に設定します。 たとえば、Check Frequencyパラメーターを固定間隔1分、固定間隔5分、または固定間隔1時間に設定できます。

    • アラートに高い適時性が必要な場合は、次の提案を参照して、できるだけ早い機会にアラートを受け取ることができます。 しかしながら、この場合、重複アラートが生成され得る。

      • データインデックス作成の遅延に関する提案: [クエリ統計] ダイアログボックスで [時間範囲] パラメーターを設定する場合、[相対の下のカスタム] をクリックし、[開始時刻] フィールドに現在の時刻より前の値を指定することを推奨します。 たとえば、[開始時刻] フィールドに70秒を指定できます。

      • クエリの不正確性に関する提案: [クエリ統計] ダイアログボックスで [時間範囲] パラメーターを設定するときは、時間範囲に前の分を含めることを推奨します。 たとえば、[時間範囲] パラメーターを90秒 (相対) に設定できます。 次に、Check FrequencyパラメーターをFixed Interval 1 Minutesに設定します。

複数のクエリ操作と分析操作の結果を関連付ける

セット

Simple Log Serviceのアラートシステムでは、クエリと分析操作の結果をセットと呼びます。 関連付けられたモニタリングに複数のセットを使用できます。

多集合操作

重要
  • Simple Log Serviceは、最大3つのセットに基づく関連モニタリングをサポートします。

  • 既定では、クエリおよび分析操作の結果の最初の1,000行のデータのみがセット操作に使用されます。 3つのクエリ操作と分析操作を指定し、set operationsパラメーターをNo Merge以外の値に設定した場合、各クエリ操作と分析操作の結果の最初の100行のデータのみが使用されます。

  • 3つのセットが生成される場合、システムは、最初の2つのセットに対してセット演算を実行し、次いで、第1のセット演算および第3のセットの結果に対してセット演算を実行する。 例:

    • セットA左JOINセットB左JOINセットC: システムは、セットAおよびセットBに対して左JOIN操作を実行する。結果が得られた後、システムは、結果およびセットCに対して左JOIN操作を実行する。

    • セットA JOIN Set B INNER JOIN Set C: システムは、セットAおよびセットBに対してJOIN操作を実行する。結果が得られた後、システムは、結果およびセットCに対してINNER JOIN操作を実行する。

    • セットA LEFT EXCLUDE JOIN Set B No Merge Set C: システムは、セットAおよびセットBに対してLEFT EXCLUDE JOIN操作を実行する。システムは、最終クエリおよび分析結果を取得するときに、セットCを無視する。

次の表に、Simple Log Serviceでサポートされているセット操作の種類を示します。

セット操作

イラスト

説明

結合しない

不合并

2つのセットは関連付けられていません。

セットAは、クエリおよび分析結果として使用されます。 セットBは、アラートテンプレート変数の参照ソースとして使用されます。

CROSS JOIN

なし

ほとんどの場合、この集合演算は、さらなる評価のためにデータをフィルタリングするために使用される。

JOIN

拼接

集合 B のデータが集合 A に追加され、フィールドごとに結合されます。

INNER JOIN

内联

セットBに存在するデータのみがセットAに保持されます。セットBはセットAのホワイトリストです。

LEFT JOIN

左联

セットBからの部分的なデータはセットAに追加されます。セットBはセットAのディメンションテーブルです。

RIGHT JOIN

右联

セットAからの部分的なデータはセットBに追加されます。セットAはセットBのディメンションテーブルです。

FULL JOIN

全联

集合 A と集合 B は互いに補完し合っています。

LEFT EXCLUDE JOIN

左斥

セットBに存在するデータはセットAから削除されます。セットBはセットAのブラックリストです。

RIGHT EXCLUDE JOIN

右斥

セットAに存在するデータはセットBから削除されます。セットAはセットBのブラックリストです。

セット操作

  • マージなし

    • 要件

      NGINX のアクセスログをモニタリングします。 15分以内にステータスコードが5XXのエラーの数が500を超えると、アラートがトリガーされ、アラート通知が送信されます。 アラート通知には、アラートがトリガーされたホストに関する情報が含まれます。

    • 設定 不拼接

    • 結果

      • クエリステートメント0の結果

        このステートメントは、15分以内にステータスコードが5XXであるエラーの数を照会します。

        cnt

        1234

      • クエリ文1の結果

        このステートメントは、15分以内にステータスコードが5XXのエラー数が最も多い上位5ホストと、各ホストのエラー数を照会します。

        ホスト

        pv

        host1

        60

        host2

        55

        host3

        47

        host4

        45

        host5

        30

      • セット操作の結果

        この例では、Set OperationsパラメーターはNo Mergeに設定されています。 集合演算の結果は、クエリステートメント0の結果である。

  • 参加

    • 例 1

      • 要件

        NGINX のアクセスログを保存するために 2 つのログストアが使用されています。 1 つのログストアは中国 (北京) リージョンにあり、もう 1 つのログストアは中国 (上海) リージョンにあります。 ステータスコードが5XXであるエラーが30を超えるホストの数が、15分以内に照会されます。 2 つのログストアで指定された条件を満たすホストの数が10 を超えた場合、アラートがトリガーされます。

      • 設定 拼接

      • 結果

        • クエリステートメント0の結果

          このステートメントは、15分以内にステータスコードが5XXであるエラーが30を超えるホストの数と、各ホストのエラーの数を照会します。

          ホスト

          pv

          host1

          60

          host2

          55

          host3

          47

          host4

          45

          host5

          31

        • クエリ文1の結果

          このステートメントは、15分以内にステータスコードが5XXであるエラーが30を超えるホストの数と、各ホストのエラーの数を照会します。

          ホスト

          pv

          hosta

          70

          hostb

          45

          hostc

          44

          hostd

          42

        • セット操作の結果

          この例では、Set OperationsパラメーターはJOINに設定されています。 次の表に、set操作の結果を示します。

          ホスト

          pv

          host1

          60

          host2

          55

          host3

          47

          host4

          45

          host5

          31

          hosta

          70

          hostb

          45

          hostc

          44

          hostd

          42

    • 追加の例

      • 2つのクエリおよび分析結果のフィールドが完全に一致しない場合、JOIN操作が実行された後、一致しないフィールドは空のままになります。

        • クエリステートメント0の結果

          a

          b

          a1

          b1

          a2

          b2

        • クエリ文1の結果

          b

          c

          b1

          c1

          b2

          c2

        • セット操作の結果

          a

          b

          c

          a1

          b1

          なし

          a2

          b2

          なし

          なし

          b1

          c1

          なし

          b2

          c2

      • Set A JOIN Set B INNER JOIN Set C: 3つのクエリ文を指定すると、最初の2つの文の結果に対してset操作が実行されます。 第1の集合演算の結果が得られた後、システムは、第1の集合演算の結果および第3のステートメントの結果に対して集合演算を実行する。

        • クエリステートメント0の結果

          a

          b

          a1

          b1

          a2

          b2

        • クエリ文1の結果

          a

          b

          a1

          b11

          a2

          b22

          a3

          b33

        • クエリステートメント0およびクエリステートメント1の結果に対するset操作の結果

          この例では、Set OperationsパラメーターはINNER JOINに設定され、$0.a == $1.aが指定されています。 次の表に、set操作の結果を示します。

          a

          $0.b

          $1.b

          a1

          b1

          b11

          a2

          b2

          b22

        • クエリ文2の結果

          a

          b

          a3

          b333

          a4

          b444

        • セット操作の結果

          この例では、Set OperationsパラメーターはJOINに設定されています。 次の表に、set操作の結果を示します。

          説明

          クエリステートメント2の結果のbフィールドは、$0.bフィールドと揃えられます。

          a

          $0.b

          $1.b

          a1

          b1

          b11

          a2

          b2

          b22

          a3

          b333

          なし

          a4

          b444

          なし

  • INNER JOIN

    • 例 1

      • 要件

        指定されたバケット内のステータスコードが5XXであるエラーの数が監視されます。 15分以内にステータスコードが5XXのエラーの数が1,000を超えると、アラートがトリガーされます。 この要件を満たすためには、リソースデータを追加してバケットのホワイトリストを維持する必要があります。

      • 設定 内联

      • 結果

        • クエリステートメント0の結果

          ステートメントは、ステータスコードが15分以内に5XXである1,000を超えるエラーを持つバケットを照会します。

          バケット

          pv

          bucket_01

          1600

          bucket_02

          1550

          bucket_03

          1470

          bucket_04

          1450

        • クエリ文1の結果

          次の表に、バケットのリソースデータを示します。

          バケット

          desc

          bucket_03

          for dev team

          bucket_04

          for test team

          bucket_05

          for service team

          bucket_06

          for support team

        • セット操作の結果

          この例では、Set OperationsパラメーターはINNER JOINに設定され、$0.bucket == $1.bucketが指定されています。 次の表に、set操作の結果を示します。

          バケット

          pv

          desc

          bucket_03

          1470

          for dev team

          bucket_04

          1450

          for test team

    • 例 2

      • 要件

        NGINX のアクセスログを保存するために 2 つのログストアが使用されています。 1 つのログストアは中国 (北京) リージョンにあり、もう 1 つのログストアは中国 (上海) リージョンにあります。 ステータスコードが5XXである30を超えるエラーを持つクライアントは、15分以内に照会されます。 両方のログストアにステータスコードが5XXのエラーがあり、中国 (北京) リージョンのログストアのエラー数が中国 (上海) リージョンのログストアのエラー数よりも多い場合、アラートがトリガーされます。

      • 設定 内联

      • 結果

        • クエリステートメント0の結果

          このステートメントは、中国 (北京) リージョンのLogstoreで15分以内にステータスコードが5XXである30を超えるエラーと、各クライアントのエラー数を照会します。

          client_ip

          pv

          192.0.2.4

          60

          192.0.2.5

          55

          192.0.2.6

          47

          192.0.2.7

          45

          192.0.2.8

          31

        • クエリ文1の結果

          このステートメントは、中国 (上海) リージョンのLogstoreで15分以内にステータスコードが5XXである30を超えるエラーと、各クライアントのエラー数を照会します。

          client_ip

          pv

          192.0.2.5

          70

          192.0.2.6

          45

          192.0.2.7

          44

          192.0.2.8

          42

          192.0.2.9

          42

        • セット操作の結果

          この例では、Set OperationsパラメーターはINNER JOINに設定され、$0.client_ip == $1.client_ipおよび $0.pv > $1.pvが指定されています。 次の表に、set操作の結果を示します。

          client_ip

          pv

          192.0.2.6

          47

          192.0.2.7

          45

    • 追加の例

      クエリステートメント0の結果のフィールドとクエリステートメント1の結果のフィールドは関連付けられていませんが、同じ名前を持ちます。 指定された集合演算の結果の2つのフィールドには、自動的に $0と $1のプレフィックスが付けられます。

      • クエリステートメント0の結果

        a

        b

        c

        d

        a1

        b1

        c1

        d1

        a2

        b2

        c2

        d2

        a3

        b3

        c3

        d3

      • クエリ文1の結果

        a

        b

        c

        a1

        b11

        c11

        a2

        b22

        c22

      • セット操作の結果

        この例では、Set OperationsパラメーターはINNER JOINに設定され、$0.a == $1.aが指定されています。 次の表に、set操作の結果を示します。

        a

        $0.b

        $0.c

        d

        $1.b

        $1.c

        a1

        b1

        c1

        d1

        b11

        c11

        a2

        b2

        c2

        d2

        b22

        c22

  • LEFT EXCLUDE JOIN

    • 要件

      指定されていないバケットのステータスコードが5XXのエラー数が監視されます。 15分以内にステータスコードが5XXのエラーの数が1,000を超えると、アラートがトリガーされます。 この要件を満たすためには、リソースデータを追加してバケットのブラックリストを維持する必要があります。

    • 設定 左斥

    • 結果

      • クエリステートメント0の結果

        ステートメントは、ステータスコードが15分以内に5XXである1,000を超えるエラーを持つバケットを照会します。

        バケット

        pv

        bucket_01

        60

        bucket_02

        55

        bucket_03

        47

        bucket_04

        45

      • クエリ文1の結果

        次の表に、バケットのリソースデータを示します。

        バケット

        desc

        bucket_03

        for dev team

        bucket_04

        for test team

      • セット操作の結果

        この例では、Set OperationsパラメーターはLEFT EXCLUDE JOINに設定され、$0.bucket == $1.bucketが指定されています。 次の表に、set操作の結果を示します。

        バケット

        pv

        bucket_01

        60

        bucket_02

        55

  • 右の排他的な参加

    • 要件

      指定されていないバケットのステータスコードが5XXのエラー数が監視されます。 15分以内にステータスコードが5XXのエラーの数が1,000を超えると、アラートがトリガーされます。 この要件を満たすためには、リソースデータを追加してバケットのブラックリストを維持する必要があります。

    • 設定 右斥

    • 結果

      • クエリステートメント0の結果

        次の表に、バケットのリソースデータを示します。

        バケット

        desc

        bucket_03

        for dev team

        bucket_04

        for test team

      • クエリ文1の結果

        クエリステートメントは、ステータスコードが15分以内に5XXである1,000を超えるエラーを持つバケットをクエリします。

        バケット

        pv

        bucket_01

        60

        bucket_02

        55

        bucket_03

        47

        bucket_04

        45

      • セット操作の結果

        この例では、Set OperationsパラメーターはRIGHT EXCLUDE JOINに設定され、$0.bucket == $1.bucketが指定されています。 次の表に、set操作の結果を示します。

        バケット

        pv

        bucket_01

        60

        bucket_02

        55

  • クロス参加

    • 例 1

      • 要件

        Object Storage Service (OSS) アクセスログとServer Load Balancer (SLB) アクセスログが監視されます。 OSSのステータスコードが4XXであるエラーの数と、SLBのステータスコードが5XXであるエラーの数は、15分以内に照会されます。 エラーの総数が 1,000 に達すると、アラートがトリガーされます。

      • 設定 笛卡尔积

      • 結果

        • クエリステートメント0の結果

          このステートメントは、OSSで15分以内にステータスコードが4XXであるエラーの数を照会します。

          pv

          890

        • クエリ文1の結果

          このステートメントは、15分以内にSLBでステータスコードが5XXであるエラーの数を照会します。

          pv

          567

        • セット操作の結果

          この例では、Set OperationsパラメーターはCROSS JOINに設定されています。 次の表に、set操作の結果を示します。

          $0.pv

          $1.pv

          890

          567

    • 追加の例

      • クエリステートメント0の結果

        a

        b

        a1

        b1

        a2

        b2

        a5

        b5

      • クエリ文1の結果

        a

        c

        a1

        c1

        a3

        c3

      • セット操作の結果

        この例では、Set OperationsパラメーターはCROSS JOINに設定されています。 次の表に、set操作の結果を示します。

        $0.a

        b

        $1.a

        c

        a1

        b1

        a1

        c1

        a1

        b1

        a3

        c3

        a2

        b2

        a1

        c1

        a2

        b2

        a3

        c3

        a5

        b5

        a1

        c1

        a5

        b5

        a3

        c3

  • 左の参加

    • クエリステートメント0の結果

      a

      b

      a1

      b1

      a2

      b2

      a3

      b3

    • クエリ文1の結果

      a

      b

      c

      a1

      b11

      c1

      a2

      b22

      c2

    • セット操作の結果

      この例では、Set OperationsパラメーターはLEFT JOINに設定され、$0.a == $1.aが指定されています。 次の表に、set操作の結果を示します。

      a

      $0.b

      $1.b

      c

      a1

      b1

      b11

      c1

      a2

      b2

      b22

      c2

      a3

      b3

      なし

      なし

  • 右の参加

    • クエリステートメント0の結果

      a

      b

      c

      a1

      b11

      c1

      a2

      b22

      c2

    • クエリ文1の結果

      a

      b

      a1

      b1

      a2

      b2

      a3

      b3

    • セット操作の結果

      この例では、Set OperationsパラメーターはRIGHT JOINに設定され、$0.a == $1.aが指定されています。 次の表に、set操作の結果を示します。

      a

      $0.b

      c

      $1.b

      a1

      b11

      c1

      b1

      a2

      b22

      c2

      b2

      a3

      なし

      なし

      b3

  • フル参加

    • クエリステートメント0の結果

      a

      b

      c

      a1

      b1

      c1

      a2

      b2

      c2

      a5

      b5

      c3

    • クエリ文1の結果

      a

      b

      d

      a1

      b11

      d1

      a2

      b22

      d2

      a3

      b33

      d3

    • セット操作の結果

      この例では、Set OperationsパラメーターはFULL JOINに設定され、$0.a == $1.aが指定されています。 次の表に、set操作の結果を示します。

      a

      $0.b

      c

      $1.b

      d

      a1

      b1

      c1

      b11

      d1

      a2

      b2

      c2

      b22

      d2

      a5

      b5

      c3

      なし

      なし

      a3

      なし

      なし

      b33

      d3

データなしアラート

収集プロセス中にデータ損失が発生した場合、Simple Log Serviceはデータを受信せず、この問題は気付かれない可能性があります。 したがって、Simple Log Serviceは、このタイプの問題についてアラート通知を送信するためのデータなしアラート機能を提供します。 たとえば、各ホストのCPUメトリックを監視するようにアラートルールを設定できます。 次の条件が満たされると、アラートがトリガーされ、アラート通知が送信されます。

  • ホストの CPU 使用率が 95% を上回った。

  • クエリおよび分析操作のデータは返されません。

次の説明に基づいてアラートルールを設定します。

  • クエリ統計: * | select promql_query_range('cpu_util') from metrics limit 1000を指定します。

    このクエリ文は、ホストのCPU使用率を照会します。

  • トリガー条件: [data matches the expression] を選択し、value>95を入力し、[重大度: 中] を選択します。

    クエリおよび分析結果のvalueフィールドが95より大きい場合、中程度の重大度のアラートがトリガーされます。

  • 連続トリガーのしきい値: 指定されたトリガー条件が満たされた連続回数がこのパラメーターの値に達すると、アラートがトリガーされます。

  • No Data Alert: No Data Alertをオンにします。 次に、[重大度] および [注釈の追加] パラメーターを設定します。

    [No Data Alert] をオンにすると、データが返されない連続回数が [Threshold of Continuous Triggers] パラメーターの値を超えると、アラートがトリガーされます。

    No Data Alertをオンにする場合は、機能の重要度と注釈を独立して指定する必要があります。

次の図は、設定を示しています。

无数据告警