Simple Log Service は、関連付けられた監視とデータなしアラートをサポートしています。このトピックでは、関連付けられた監視とデータなしアラートを構成する方法について説明します。
監視の適時性
監視ワークフロー
システムは、アラートルールで指定した時間範囲と [チェック頻度] パラメーターの値に基づいて、クエリ文を実行します。クエリと分析の結果が返された後、システムはアラートルールのトリガー条件に基づいて結果を評価します。トリガー条件が満たされると、システムはアラートを生成します。
問題分析
データのインデックス作成の遅延: Simple Log Service に書き込まれたデータは、短時間の遅延後にのみクエリできます。その結果、遅延が短い場合でも、一部のデータを取得できない場合があります。
たとえば、Simple Log Service は、クエリ文で 1 Minute(Relative) の時間範囲を使用し、[チェック頻度] パラメーターが Fixed Interval 1 Minutes に設定されているアラートルールに基づいて、12:03:30 にチェックを開始します。この場合、ステートメントは [12:02:30,12:03:30) の時間範囲のデータをクエリします。ただし、データが 12:03:29 に Simple Log Service に書き込まれた場合、ステートメントはデータの取得に失敗する可能性があります。
クエリの不正確さ: ログが異なる時点で生成されても、同じ分に Simple Log Service に書き込まれた場合、ログのインデックスは同じになります。その結果、後で生成されたログのインデックスが早くなる可能性があります。
たとえば、Simple Log Service は、クエリ文で 1 Minute(Relative) の時間範囲を使用するアラートルールに基づいて、12:03:30 にチェックを開始します。この場合、ステートメントは [12:02:30,12:03:30) の時間範囲のデータをクエリします。 2 つのログが 12:02:20 と 12:02:50 に生成されたが、12:02:50 に Simple Log Service に書き込まれた場合、ログは 12:02:20 を使用してインデックスを作成でき、ステートメントは [12:02:30,12:03:30) の時間範囲に基づいてログを取得できません。
最適化の提案
アラートの精度を高める必要がある場合は、次の提案を参照して、繰り返されるアラートと偽陰性を排除してください。
データのインデックス作成の遅延に関する提案: [クエリ統計] ダイアログボックスで [時間範囲] パラメーターを構成する場合は、[相対] の下の [カスタム] をクリックし、[開始日時] フィールドと [終了日時] フィールドに現在の時刻より前の値を指定します。たとえば、[時間範囲] パラメーターを 70Seconds Ago~10Seconds Ago(Relative) に設定します。 10 秒のバッファ時間は、インデックス作成速度が遅いため一部のデータが取得されないという問題を防ぐのに役立ちます。
クエリの不正確さに関する提案: [クエリ統計] ダイアログボックスで [時間範囲] パラメーターを構成する場合は、時間枠を選択します。たとえば、[時間範囲] パラメーターを 1 Minute(Time Frame)、5 Minute(Time Frame)、または 1 Hour(Time Frame) に設定します。次に、チェック頻度 パラメーターを選択した時間枠と同じ値に設定します。たとえば、[チェック頻度] パラメーターを Fixed Interval 1 Minutes、Fixed Interval 5 Minutes、または Fixed Interval 1 Hours に設定します。
アラートの適時性を重視する場合は、次の提案を参照して、できるだけ早くアラートを受信してください。ただし、この場合、重複したアラートが生成される可能性があります。
データのインデックス作成の遅延に関する提案: [クエリ統計] ダイアログボックスで [時間範囲] パラメーターを構成する場合は、[相対] の下の [カスタム] をクリックし、[開始日時] フィールドに現在の時刻より前の値を指定します。たとえば、[開始日時] フィールドに 70 Seconds Ago を指定します。
クエリの不正確さに関する提案: [クエリ統計] ダイアログボックスで [時間範囲] パラメーターを構成する場合は、前の分を時間範囲に含めます。たとえば、[時間範囲] パラメーターを 90Seconds(Relative) に設定します。次に、チェック頻度 パラメーターを Fixed Interval 1 Minutes に設定します。
複数のクエリおよび分析操作の結果を関連付ける
Simple Log Service のアラートシステムでは、クエリおよび分析操作の結果はセットと呼ばれます。関連付けられた監視には複数のセットを使用できます。

Simple Log Service は、最大 3 つのセットに基づく関連付けられた監視をサポートしています。
デフォルトでは、クエリおよび分析操作の結果の最初の 1,000 行のデータのみがセット操作に使用されます。 3 つのクエリおよび分析操作を指定し、[セット操作] パラメーターを [マージなし] 以外の値に設定した場合、各クエリおよび分析操作の結果の最初の 100 行のデータのみが使用されます。
3 つのセットが生成された場合、システムは最初の 2 つのセットでセット操作を実行し、最初のセット操作の結果と 3 番目のセットでセット操作を実行します。例:
セット A LEFT JOIN セット B LEFT JOIN セット C: システムは、セット A とセット B で LEFT JOIN 操作を実行します。結果が取得された後、システムは結果とセット C で LEFT JOIN 操作を実行します。
セット A JOIN セット B INNER JOIN セット C: システムは、セット A とセット B で JOIN 操作を実行します。結果が取得された後、システムは結果とセット C で INNER JOIN 操作を実行します。
セット A LEFT EXCLUDE JOIN セット B マージなし セット C: システムは、セット A とセット B で LEFT EXCLUDE JOIN 操作を実行します。システムは、最終的なクエリおよび分析結果を取得するときにセット C を無視します。
次の表に、Simple Log Service でサポートされているセット操作の種類を示します。
セット操作 | 図 | 説明 |
| 2 つのセットは関連付けられていません。 セット A はクエリおよび分析結果として使用されます。セット B は、アラートテンプレート変数のリファレンスソースとして使用されます。 | |
なし | 集合 A の任意のデータが集合 B の任意のデータと結合されます。ほとんどの場合、この集合演算は、さらなる評価のためにデータをフィルタリングするために使用されます。 | |
| 集合 B のデータが集合 A に追加され、フィールドによって位置合わせされます。 | |
| 集合 B に存在するデータのみが集合 A に保持されます。集合 B は集合 A のホワイトリストです。 | |
| 集合 B の一部のデータが集合 A に追加されます。集合 B は集合 A のディメンションテーブルです。 | |
| 集合 A の一部のデータが集合 B に追加されます。集合 A は集合 B のディメンションテーブルです。 | |
| 集合 A と集合 B は互いに補集合です。 | |
| 集合 B に存在するデータは集合 A から削除されます。集合 B は集合 A のブラックリストです。 | |
| 集合 A に存在するデータは集合 B から削除されます。集合 A は集合 B のブラックリストです。 |
マージなし
要件
NGINX アクセスログが監視されます。 15 分間の 5XX の状態コードのエラー数が 500 を超えると、アラートがトリガーされ、アラート通知が送信されます。 アラート通知には、アラートがトリガーされたホストに関する情報が含まれます。
構成

結果
クエリ文 0 の結果
この文は、15 分間の 5XX の状態コードのエラー数をクエリします。
カウント
1234
クエリ文 1 の結果
この文は、15 分間で 5XX の状態コードのエラー数が最も多い上位 5 つのホストと、各ホストのエラー数をクエリします。
ホスト
ページビュー
host1
60
host2
55
host3
47
host4
45
host5
30
集合演算の結果
この例では、[集合演算] パラメーターは [マージなし] に設定されています。 集合演算の結果は、クエリ文 0 の結果です。
クロス結合
例 1
要件
Object Storage Service (OSS) アクセスログと Server Load Balancer (SLB) アクセスログが監視されます。 OSS で状態コードが 4XX のエラー数と SLB で状態コードが 5XX のエラー数は、15 分間隔でクエリされます。 エラーの合計数が 1,000 に達すると、アラートがトリガーされます。
構成

結果
クエリ文 0 の結果
この文は、15 分間で OSS の状態コードが 4XX のエラー数をクエリします。
ページビュー
890
クエリ文 1 の結果
この文は、15 分間で SLB の状態コードが 5XX のエラー数をクエリします。
ページビュー
567
集合演算の結果
この例では、[集合演算] パラメーターは [クロス結合] に設定されています。 次の表は、集合演算の結果を示しています。
$0.pv
$1.pv
890
567
追加の例
クエリ文 0 の結果
a
b
a1
b1
a2
b2
a5
b5
クエリ文 1 の結果
a
c
a1
c1
a3
c3
集合演算の結果
この例では、[集合演算] パラメーターは [クロス結合] に設定されています。 次の表は、集合演算の結果を示しています。
$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
結合
例 1
要件
2 つのログストアを使用して、NGINX アクセスログを保存します。 1 つのログストアは中国 (北京) リージョンにあり、もう 1 つのログストアは中国 (上海) リージョンにあります。 状態コードが 5XX のエラーが 30 を超えるホストの数は、15 分間隔でクエリされます。 2 つのログストアで指定された条件を満たすホストの数が 10 を超えると、アラートがトリガーされます。
構成

結果
クエリ文 0 の結果
この文は、15 分間で状態コードが 5XX のエラーが 30 を超えるホストの数と、各ホストのエラー数をクエリします。
ホスト
ページビュー
host1
60
host2
55
host3
47
host4
45
host5
31
クエリ文 1 の結果
この文は、15 分間で状態コードが 5XX のエラーが 30 を超えるホストの数と、各ホストのエラー数をクエリします。
ホスト
ページビュー
hosta
70
hostb
45
hostc
44
hostd
42
集合演算の結果
この例では、[集合演算] パラメーターは [結合] に設定されています。 次の表は、集合演算の結果を示しています。
ホスト
ページビュー
host1
60
host2
55
host3
47
host4
45
hosg5
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
集合 A 結合 集合 B 内部結合 集合 C: 3 つのクエリ文を指定すると、システムは最初の 2 つの文の結果に対して集合演算を実行します。 最初の集合演算の結果が得られた後、システムは最初の集合演算の結果と 3 番目の文の結果に対して集合演算を実行します。
クエリ文 0 の結果
a
b
a1
b1
a2
b2
クエリ文 1 の結果
a
b
a1
b11
a2
b22
a3
b33
クエリ文 0 とクエリ文 1 の結果に対する集合演算の結果
この例では、[集合演算] パラメーターは [内部結合] に設定され、$0.a == $1.a が指定されています。 次の表は、集合演算の結果を示しています。
a
$0.b
$1.b
a1
b1
b11
a2
b2
b22
クエリ文 2 の結果
a
b
a3
b333
a4
b444
集合演算の結果
この例では、[集合演算] パラメーターは [結合] に設定されています。 次の表は、集合演算の結果を示しています。
説明さらに多くの例については、WordPress REST API ドキュメントを参照してください。
a
$0.b
$1.b
a1
b1
b11
a2
b2
b22
a3
b333
なし
a4
b444
なし
内部結合
例 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 の結果
次の表は、バケットのリソースデータを示しています。
バケット
説明
bucket_03
開発チーム向け
bucket_04
テストチーム向け
bucket_05
サービスチーム向け
bucket_06
サポートチーム向け
集合演算の結果
この例では、[集合演算] パラメーターは [内部結合] に設定され、$0.bucket == $1.bucket が指定されています。次の表は、集合演算の結果を示しています。
バケット
pv
説明
bucket_03
1470
開発チーム向け
bucket_04
1450
テストチーム向け
例 2
要件
NGINX アクセスログを格納するために 2 つのログストアが使用されます。1 つのログストアは中国 (北京) リージョンにあり、もう 1 つのログストアは中国 (上海) リージョンにあります。状態コードが 5XX であるエラーが 30 を超えるクライアントは、15 分間隔でクエリされます。両方のログストアに状態コードが 5XX のエラーがあり、中国 (北京) リージョンのログストアのエラー数が中国 (上海) リージョンのログストアのエラー数よりも大きい場合、アラートがトリガーされます。
構成

結果
クエリステートメント 0 の結果
このステートメントは、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 の結果
このステートメントは、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
集合演算の結果
この例では、[集合演算] パラメーターは [内部結合] に設定され、$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
集合演算の結果
この例では、[集合演算] パラメーターは [内部結合] に設定され、$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 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
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 の結果
次の表は、バケットのリソースデータを示しています。
バケット
説明
bucket_03
開発チーム向け
bucket_04
テストチーム向け
集合演算の結果
この例では、[集合演算] パラメーターが [LEFT EXCLUDE JOIN] に設定され、$0.bucket == $1.bucket が指定されています。次の表は、集合演算の結果を示しています。
バケット
pv
bucket_01
60
bucket_02
55
右外部結合
要件
指定されていないバケットで状態コードが 5XX のエラーの数が監視されます。 15 分間の状態コードが 5XX のエラーの数が 1,000 を超えると、アラートがトリガーされます。この要件を満たすには、バケット ブラックリストを維持するためにリソースデータを追加する必要があります。
構成

結果
クエリ文 0 の結果
次の表に、バケットのリソースデータを示します。
バケット
説明
bucket_03
開発チーム向け
bucket_04
テストチーム向け
クエリ文 1 の結果
クエリ文は、15 分以内に状態コードが 5XX のエラーが 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
データなしアラート
コレクション処理中にデータ損失が発生した場合、Simple Log Service はデータを受信せず、この問題は気付かれない可能性があります。そのため、Simple Log Service は、この種の問題に対してアラート通知を送信するデータなしアラート機能を提供します。たとえば、各ホストの CPU メトリックを監視するアラートルールを構成します。次の条件が満たされると、アラートがトリガーされ、アラート通知が送信されます。
ホストの CPU 使用率が 95% を超えています。
クエリおよび分析操作に対してデータが返されません。
次の説明に基づいてアラートルールを構成します。
[クエリ統計]: ホストの CPU 使用率をクエリするために次の文を指定します。
* | select promql_query_range('cpu_util') from metrics limit 1000[トリガー条件]: [データが式と一致する] を選択し、[値 > 95] を入力して、[重大度: 中] を選択します。
クエリおよび分析結果の [値] フィールドが 95 より大きい場合、中程度の重大度のアラートがトリガーされます。
[連続トリガーのしきい値]: 指定されたトリガー条件が満たされた連続回数がこのパラメーターの値に達すると、アラートがトリガーされます。
[データなしアラート]: [データなしアラート] をオンにします。次に、重大度と注釈の追加パラメーターを構成します。
データなしアラートをオンにすると、データが返されない連続回数が連続トリガーのしきい値パラメーターの値を超えた場合にアラートがトリガーされます。
データなしアラートをオンにする場合は、この機能に個別の重大度と注釈を指定します。
次の図は構成を示しています。








