Log Service では、複数のデータセットを関連付けたモニタリングがサポートされています。

集合演算

Log Service のアラートモニタリングシステムでは、クエリ結果は集合と見なされます。 複数の集合を関連付けたモニタリングがサポートされています。
重要
  • Log Service では、最大で 3 つの集合を関連付けたモニタリングがサポートされています。
  • デフォルトでは、クエリ結果のデータから集合演算用に最初の 1,000 行が選択されます。 3 つのクエリ文をを指定し、[集合演算] パラメーターを [結合しない] に設定した場合、各クエリ結果のデータから最初の 100 行が選択されます。
  • 3 つのクエリ文を指定して返される 3 つのクエリ結果は、3 つの集合とみなされます。 この場合、最初の 2 つの集合が集合演算に使用され、結果が返されます。 次に、この結果と3 番目の集合が集合演算に使用されます。 例:
    • 集合 A LEFT JOIN 集合 B LEFT JOIN 集合 C: LEFT JOIN 演算が最初に集合 A と集合 B に対して実行され、結果が返されます。 次に、結果と集合 C に対して LEFT JOIN 演算が実行されます。
    • 集合 A JOIN 集合 B INNER JOIN 集合 C: JOIN 演算が最初に集合 A と集合 B に対して実行され、結果が返されます。 次に、結果と集合 C に対して INNER JOIN 演算が実行されます。
    • 集合 A LEFT EXCLUDE JOIN 集合 B No Merge 集合 C: LEFT EXCLUDE JOIN 演算が集合 A と集合 B に対して実行され、集合 C は無視されます。
複数集合の演算
集合演算 図解 説明
結合しない 結合しない 指定された 2 つの集合は関連付けられません。

クエリ結果は集合 A です。 集合 B のフィールドは、アラート通知で引用できるアラートテンプレート変数としてのみ使用できます。

CROSS JOIN なし 集合 A の任意のデータと集合 B の任意のデータが結合されます。この演算は、後で評価されるデータをフィルタリングする際に使用されます。
JOIN JOIN 集合 B のデータが集合 A に追加され、フィールドごとに結合されます。
INNER JOIN INNER JOIN 集合 B に存在するデータのみが集合 A に保持されます。集合 B は集合 A のホワイトリストです。
LEFT JOIN LEFT JOIN 集合 B の部分データが集合 A に補完されます。集合 B は集合 Aのディメンションテーブルです。
RIGHT JOIN RIGHT JOIN 集合 A の部分データが集合 B に補完されます。集合 A は集合 B のディメンションテーブルです。
FULL JOIN FULL JOIN 集合 A と集合 B は互いに補完し合っています。
LEFT EXCLUDE JOIN LEFT EXCLUDE JOIN 集合 B に存在するデータが週 A から削除されます。集合 B は集合 A のブラックリストです。
RIGHT EXCLUDE JOIN RIGHT EXCLUDE JOIN 集合 A に存在するデータが集合 B から削除されます。集合 A は集合 B のブラックリストです

  • 結合しない
    • 要件

      NGINX のアクセスログをモニタリングします。 15 分ごとの 5xx エラーレスポンスの数が 500 を超えた場合、アラートがトリガーされ、アラート通知が送信されます。 アラート通知には、トリガー条件を満たすホストの情報が含まれます。

    • 設定結合しない
    • 結果
      • クエリ統計 0 の結果

        15 分間の 5xx エラーレスポンスの数が計算されます。

        cnt
        1234
      • クエリ統計 1 の結果

        15 分間の 5xx エラーレスポンスの数が多いホストの上位 5 件および対応するエラー数が計算されます。

        host pv
        host1 60
        host2 55
        host3 47
        host4 45
        host5 30
      • 集合演算の結果

        [集合演算] パラメーターを[No Merge] に設定すると、集合演算の結果は、クエリ統計 0 の結果となります。

  • JOIN
    • 例 1
      • 要件

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

      • 設定JOIN
      • 結果
        • クエリ統計 0 の結果

          15 分間の 5xx エラーレスポンスの数が 30 を超えたホストおよび対応するエラー数が計算されます。

          host pv
          host1 60
          host2 55
          host3 47
          host4 45
          host5 31
        • クエリ統計 1 の結果

          15 分間の 5xx エラーレスポンスの数が 30 を超えたホストおよび対応するエラー数が計算されます。

          host pv
          hosta 70
          hostb 45
          hostc 44
          hostd 42
        • 集合演算の結果
          [集合演算] パラメーターをJOIN に設定した場合の集合演算の結果を下表に示します 。
          host pv
          host1 60
          host2 55
          host3 47
          host4 45
          host5 31
          hosta 70
          hostb 45
          hostc 44
          hostd 42
    • その他の例
      • 2 つのクエリ結果のフィールドが完全に一致しない場合、集合演算の実行後、一致しないフィールドは空白になります。
        • クエリ統計 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
      • 3 つのクエリ文を指定すると、3 つのクエリ統計の結果が集合演算に使用されます。 この場合、クエリ統計 0 およびクエリ統計 1 の結果が集合演算に使用され、結果が返されます。 次に、前の結果とクエリ統計 2 の結果に対して JOIN 操作が実行されます。
        • クエリ統計 0 の結果
          a b
          a1 b1
          a2 b2
        • クエリ統計 1 の結果
          a b
          a1 b11
          a2 b22
          a3 b33
        • クエリ統計 0 の結果とクエリ統計 1 の結果の演算結果

          [集合演算] パラメーターを INNER JOIN,$0.a == $1.a に設定した場合の集合演算の結果を下表に示します。

          a $0.b $1.b
          a1 b1 b11
          a2 b2 b22
        • クエリ統計 2 の結果
          a b
          a3 b333
          a4 b444
        • 集合演算の結果

          [集合演算] パラメーターを JOIN に設定した場合の集合演算の結果を下表に示します。

          クエリ統計 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 を超えた場合、アラートがトリガーされます。 この要件を満たすためには、リソースデータを追加してバケットのホワイトリストを維持する必要があります。

      • 設定INNER JOIN
      • 結果
        • クエリ統計 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
        • 集合演算の結果

          [集合演算] パラメーターを INNER JOIN,$0.bucket == $1.bucket に設定した場合の集合演算の結果を下表に示します。

          バケット pv desc
          bucket_03 47 for dev team
          bucket_04 45 for test team
    • 例 2
      • 要件

        NGINX のアクセスログを保存するために 2 つのログストアが使用されています。 1 つのログストアは中国 (北京) リージョンにあり、もう 1 つのログストアは中国 (上海) リージョンにあります。 5xx エラーレスポンスの数が 30 を超えたクライアントが 15 分ごとに計算されます。 両方のログストアに5xx エラーレスポンスが存在し、中国 (北京) リージョンのエラーの数が中国 (上海) を超えた場合、アラートがトリガーされます。

      • 設定INNER JOIN
      • 結果
        • クエリ統計 0 の結果

          15 分間の 500 エラーレスポンスの数が 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 の結果

          15 分間の 500 エラーレスポンスの数が 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
        • 集合演算の結果

          [集合演算] パラメーターを INNER JOIN,$0.client_ip == $1.client_ip,$0.pv > $1.pv に設定した場合の集合演算の結果を下表に示します。

          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
      • 集合演算の結果

        [集合演算] パラメーターを INNER JOIN,$0.a == $1.a に設定した場合の集合演算の結果を下表に示します。

        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 を超えた場合、アラートがトリガーされます。 この要件を満たすためには、リソースデータを追加してバケットのブラックリストを維持する必要があります。

    • 設定LEFT EXCLUDE JOIN
    • 結果
      • クエリ統計 0 の結果

        15 分間の 500 エラーレスポンスの数が 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
      • 集合演算の結果

        [集合演算] パラメーターを LEFT EXCLUDE JOIN,$0.bucket == $1.bucket に設定した場合の集合演算の結果を下表に示します。

        バケット pv
        bucket_01 60
        bucket_02 55
  • RIGHT EXCLUDE JOIN
    • 要件

      指定されていない各バケットの 5xx エラーレスポンスの数がモニタリングされます。 15 分間の 5xx エラーレスポンスの数が 1,000 を超えた場合、アラートがトリガーされます。 この要件を満たすためには、リソースデータを追加してバケットのブラックリストを維持する必要があります。

    • 設定RIGHT EXCLUDE JOIN
    • 結果
      • クエリ統計 0 の結果

        指定されたバケットのリソースデータです。

        バケット desc
        bucket_03 for dev team
        bucket_04 テストチーム用
      • クエリ統計 1 の結果

        15 分間の 500 エラーレスポンスの数が 1,000 を超えたバケットが計算されます。

        バケット pv
        bucket_01 60
        bucket_02 55
        bucket_03 47
        bucket_04 45
      • 集合演算の結果

        [集合演算] パラメーターを RIGHT EXCLUDE JOIN,$0.bucket == $1.bucket に設定した場合の集合演算の結果を下表に示します。

        バケット pv
        bucket_01 60
        bucket_02 55
  • CROSS JOIN
    • 例 1
      • 要件

        Object Storage Service (OSS) のアクセスログと Server Load Balancer (SLB) のアクセスログが同時にモニタリングされています。 OSS で発生した 4xx エラーレスポンスの数および SLB で発生した 5xx エラーレスポンスの数が15 分ごとに計算されます。 エラーの総数が 1,000 に達すると、アラートがトリガーされます。

      • 設定CROSS JOIN
      • 結果
        • クエリ統計 0 の結果

          OSS で 15 分間に発生した 4xx エラーレスポンスの数が計算されます。

          pv
          890
        • クエリ統計 1 の結果

          SLB で15 分間に発生した 5xx エラーレスポンスの数が計算されます。

          pv
          567
        • 集合演算の結果

          [集合演算] パラメーターを CROSS JOIN に設定した場合の集合演算の結果を下表に示します。

          $0.pv $1.pv
          890 567
    • その他の例
      • クエリ統計 0 の結果
        a b
        a1 b1
        a2 b2
        a5 b5
      • クエリ統計 1 の結果
        a c
        a1 c1
        a3 c3
      • 集合演算の結果

        [集合演算] パラメーターを CROSS JOIN に設定した場合の集合演算の結果を下表に示します。

        $0.a b $1.a c
        a1 b1 a1 c1
        なし なし a3 c3
        a2 b2 a1 c1
        なし なし a3 c3
        a5 b5 a1 c1
        なし なし a3 c3
  • LEFT JOIN
    • クエリ統計 0 の結果
      a b
      a1 b1
      a2 b2
      a3 b3
    • クエリ統計 1 の結果
      a b c
      a1 b11 c1
      a2 b22 c2
    • 集合演算の結果

      [集合演算] パラメーターを LEFT JOIN,$0.a == $1.a に設定した場合の集合演算の結果を下表に示します。

      a $0.b $1.b c
      a1 b1 b11 c1
      a2 b2 b22 c2
      a3 b3 なし なし
  • RIGHT JOIN
    • クエリ統計 0 の結果
      a b c
      a1 b11 c1
      a2 b22 c2
    • クエリ統計 1 の結果
      a b
      a1 b1
      a2 b2
      a3 b3
    • 集合演算の結果

      [集合演算] パラメーターを RIGHT JOIN,$0.a == $1.a に設定した場合の集合演算の結果を下表に示します。

      a $0.b c $1.b
      a1 b11 c1 b1
      a2 b22 c2 b2
      a3 なし なし b3
  • FULL JOIN
    • クエリ統計 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
    • 集合演算の結果

      [集合演算] パラメーターを FULL JOIN,$0.a == $1.a に設定した場合の集合演算の結果を下表に示します。

      a $0.b c $1.b d
      a1 b1 c1 b11 d1
      a2 b2 c2 b22 d2
      a5 b5 c3 なし なし
      a3 なし なし b33 d3