Simple Log Serviceは、関連するモニタリングとデータなしアラートをサポートします。 このトピックでは、関連するモニタリングおよびデータなしアラートを設定する方法について説明します。
モニタリングの適時性
ワークフローの監視: システムは、アラートルールで指定した時間範囲とCheck Frequencyパラメーターの値に基づいてクエリ文を実行します。 クエリと分析の結果が返された後、システムはアラートルールのトリガー条件に基づいて結果を評価します。 トリガー条件が満たされると、システムはアラートを生成します。
問題分析
データインデックス作成の待ち時間: 短い待ち時間の後にのみ、Simple Log Serviceに書き込まれたデータを照会できます。 その結果、レイテンシが短くてもデータを取得できない場合がある。
たとえば、Simple Log Serviceは、クエリステートメントが1分 (相対) の時間範囲を使用し、[チェック頻度] パラメーターが固定間隔1分に設定されているアラートルールに基づいて、12:03:30にチェックを開始します。 この場合、ステートメントは [12:02:30,12:03:30) の時間範囲でデータを照会します。 ただし、12:03:29にデータがSimple Log Serviceに書き込まれた場合、ステートメントがデータを取得できない場合があります。
クエリの不正確性: ログが異なる時点で生成され、同じ分に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) の時間範囲に基づいてログを取得できません。
最適化の提案
アラートに高い精度が必要な場合は、次の提案を参照して、繰り返しアラートと偽陰性を排除できます。
データインデックス作成の遅延に関する提案: [クエリ統計] ダイアログボックスで [時間範囲] パラメーターを設定する場合、[相対の下のカスタム] をクリックし、[開始時刻] および [終了時刻] フィールドに現在の時刻より前の値を指定することを推奨します。 たとえば、[時間範囲] パラメーターを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をオンにする場合は、機能の重要度と注釈を独立して指定する必要があります。
次の図は、設定を示しています。