Simple Log Service でログを収集した後、キーワードベースのアラートを作成できます。
背景情報
ログには、システムの操作や例外が記録されます。たとえば、警告ログ、エラーログ、Go の panic エラー、Java の java.lang.StackOverflowError エラー、支払い失敗などのイベントに関するシステムステータスログなどです。キーワードの検索、モニタリング、アラートの作成は、システムメンテナンスにおける一般的な要件です。ログ内のキーワードを検索し、アラートを設定することで、問題を迅速に検出し、特定できます。Simple Log Service は、柔軟でパフォーマンスに優れ、メンテナンスフリーのアラートソリューションを提供し、キーワードベースのアラート作成を支援します。
ユースケース 1:キーワード出現時のアラート
ログに特定のキーワードが出現するたびにアラートをトリガーしたい場合は、このユースケースに従ってクエリ文とアラート監視ルールを設定できます。
-
クエリ文
クエリ時間範囲を 15分 (相対) に設定し、次の文を実行して ERROR キーワードを含むログをクエリします。詳細については、「ログのクエリと分析」をご参照ください。
ERROR -
クエリ結果
クエリ結果は、過去 15 分間に ERROR キーワードが 2 回出現したことを示しています。
クエリ結果には、一致するログが 2 件表示されます。ログの詳細から、ETL タスク中に生成された Python のトレースバックエラーであり、levelname フィールドの値が
ERRORであることがわかります。 -
アラート監視ルールの設定
クエリ結果に基づいてアラート監視ルールを作成します。詳細については、「アラート監視ルールの作成」をご参照ください。主要な設定パラメーターは次のとおりです:
-
トリガー条件 を データが返された に設定します。これにより、ログに ERROR キーワードが出現したときにアラートがトリガーされます。
-
アノテーション セクションで、軸ラベル を ${logging} に、アラートテンプレート を SLS 組み込みコンテンツテンプレート に設定します。これにより、アラート通知に生ログの logging フィールドの内容が含まれるようになります。
ルール名 を
Error-level event detectedに、チェック頻度 を 15 分の固定間隔に、重大度 を Medium に設定します。アラートポリシー で シンプルモード を選択します。アクションポリシー で、通知チャネルとして DingTalk を追加し、sampleWebhook を選択し、送信期間 を 任意 に設定します。 -
-
アラート通知
アラート監視ルールを作成すると、ログに ERROR キーワードが出現するたびに、DingTalk グループでアラート通知を受信します。詳細 をクリックして、アラートをトリガーしたログを表示し、問題をトレースすることもできます。
ユースケース 2:キーワード数に基づくアラート
指定した期間内にキーワードの出現回数が特定のしきい値に達した場合にのみアラートをトリガーしたい場合は、このユースケースに従って分析クエリとアラート監視ルールを設定できます。
-
分析クエリ
クエリ時間範囲を 1時間 (相対) に設定し、次の文を実行して 1 時間以内の ERROR キーワードの出現回数をカウントします。詳細については、「ログのクエリと分析」をご参照ください。
ERROR | SELECT count(*) AS cnt -
分析クエリ結果
分析クエリの結果は、過去 1 時間に ERROR キーワードが 11 回出現したことを示しています。
分析クエリは
ERROR | SELECT count(*) AS cntで、結果は cnt 列に 11 という値を示します。 -
アラート監視ルールの設定
分析クエリの結果に基づいてアラート監視ルールを作成します。詳細については、「アラート監視ルールの作成」をご参照ください。主要な設定パラメーターは次のとおりです:
-
トリガー条件 を データが返され、かつ cnt > 5 に設定します。これにより、1 時間以内に ERROR キーワードが 5 回を超えて出現した場合にアラートがトリガーされます。
-
アノテーション セクションで、軸ラベル を 過去 1 時間に ERROR が ${cnt} 回発生しました に、アラートテンプレート を SLS 組み込みコンテンツテンプレート に設定します。アラート通知には、過去 1 時間に ERROR キーワードが出現した回数が表示されます。
ルール名 を
High volume of ERROR messagesに、チェック頻度 を 1 時間の固定間隔に、グループ評価 を 無効 に、重大度 を Medium に設定します。アラートポリシー で シンプルモード を選択します。通知チャネルとして DingTalk を選択し、sample Webhook を選択し、リマインダー を 無効 に、送信期間 を 任意 に設定します。 -
-
アラート通知
アラート監視ルールを作成すると、過去 1 時間に ERROR キーワードが 5 回を超えて出現した場合、DingTalk グループでアラート通知を受信します。詳細 をクリックして、アラートをトリガーしたログを表示し、問題をトレースすることもできます。
ユースケース 3:前日比に基づくアラート
ログキーワードの出現頻度が日次サイクルに従い、日中は頻繁に出現し、夜間は少なくなる場合、絶対数を使用する方法は異常の検出に適していない可能性があります。区間値比較関数と周期値比較関数を使用して、異なる日の同じ時間帯におけるキーワード出現回数の比率を計算し、この比率に基づいてアラートを設定できます。
-
分析クエリ
クエリ時間範囲を 1時間 (相対) に設定し、次の文を実行して、現在の時間と昨日の同じ時間との間の ERROR キーワード出現回数の比率を計算します。詳細については、「ログのクエリと分析」をご参照ください。compare 関数の詳細については、「区間値比較関数と周期値比較関数」をご参照ください。
ERROR | SELECT diff [1] AS today, diff [2] AS yesterday, round((diff [3]-1) * 100, 2) AS ratio FROM ( SELECT compare(cnt, 86400) AS diff FROM ( SELECT COUNT(*) AS cnt FROM log ) ) -
分析クエリ結果
分析クエリの結果は、ERROR キーワードが過去 1 時間に 11 回、昨日の同時期に 6 回出現し、83.33% の増加率であることを示しています。
-
アラート監視ルールの設定
分析クエリの結果に基づいてアラート監視ルールを作成します。詳細については、「アラート監視ルールの作成」をご参照ください。主要な設定パラメーターは次のとおりです:
-
トリガー条件 を データが返され、かつ ratio > 10 に設定します。これにより、現在の時間と昨日の同じ時間との間の ERROR キーワード出現回数の比率が 10% を超えた場合にアラートがトリガーされます。
-
アノテーション セクションで、軸ラベル を 過去 1 時間のエラー数:${today}。昨日の同時期:${yesterday}。前日比増加率:${ratio}%。 に、アラートテンプレート を SLS 組み込みコンテンツテンプレート に設定します。アラート通知には、現在の時間と昨日の同じ時間における ERROR キーワードの出現回数、およびその変化率が表示されます。
ルール名 を Spike in ERROR messages に、チェック頻度 を 15 分の固定間隔に、グループ評価 を 無効 に、重大度 を Medium に設定します。アラートポリシー で シンプルモード を選択します。通知チャネルとして DingTalk を選択し、sample Webhook を選択し、リマインダー を 無効 に、送信期間 を 任意 に、繰り返し間隔 を 1 分に設定します。
-
-
アラート通知
アラート監視ルールを作成すると、現在の時間と昨日の同じ時間との間の ERROR キーワード出現回数の比率が 10% を超えた場合、DingTalk グループでアラート通知を受信します。詳細 をクリックして、アラートをトリガーしたログを表示し、問題をトレースすることもできます。
ユースケース 4:機械学習ベースの異常アラート
これまでのユースケースは基本的なシナリオをカバーしています。より複雑な状況では、Simple Log Service の機械学習アルゴリズムを使用できます。たとえば、対象キーワードの出現頻度が一日を通して安定しているにもかかわらず、突然急増または急減した場合、その変化を即座に通知したい場合があります。このシナリオでは、Simple Log Service の機械学習アルゴリズムを使用して、時系列予測と異常検知を実行できます。機械学習アルゴリズムの詳細については、「機械学習関数」をご参照ください。
-
分析クエリ
クエリ時間範囲を 4時間 (相対) に設定し、次の文を実行して、過去 4 時間の ERROR 数の異常数をカウントします。詳細については、「ログのクエリと分析」をご参照ください。ts_predicate_simple 関数の詳細については、「ts_predicate_simple」をご参照ください。
ERROR | SELECT ts_predicate_simple(stamp, value, 6) FROM ( select __time__-__time__ % 30 AS stamp, count(1) AS value FROM log GROUP BY stamp ORDER BY stamp ) -
分析クエリ結果
クエリは src、predict、upper、lower、anomaly_prob などの列を返します。anomaly_prob 列の値が 0 より大きい場合は異常を示します。異常の総数は、
anomaly_probが 0 より大きい行の数です。この数を使用してアラートを設定できます。結果テーブルには、unixtime(UNIX タイムスタンプ)、src(元の値)、predict(予測値)、upper(予測上限)、lower(予測下限)、anomaly_prob(異常確率、0.0 は正常、1.0 は異常を示す) の 6 つのフィールドが含まれます。分析クエリの結果を時系列グラフとして表示し、データの急激な減少を可視化することもできます。グラフ上の小さな赤い丸は異常点を示します。この例では、この期間中に 15 の異常点が発生したことがグラフに示されています。

-
アラート監視ルールの設定
分析クエリの結果に基づいてアラート監視ルールを作成します。詳細については、「アラート監視ルールの作成」をご参照ください。主要な設定パラメーターは次のとおりです:
-
トリガー条件 を 一致する行数 > 5、条件は
anomaly_prob> 0 に設定します。これにより、過去 4 時間に 5 つ以上の異常が検出された場合にアラートがトリガーされます。 -
アノテーション セクションで、軸ラベル を 過去 4 時間に ERROR 数で 5 つ以上の異常が検出されました に、アラートテンプレート を SLS 組み込みコンテンツテンプレート に設定します。アラート通知には、過去 4 時間に発生した異常点の数が表示されます。
ルール名 を
Anomaly in ERROR message countに、チェック頻度 を 15 分の固定間隔に設定します。クエリ統計 セクションに、クエリ文ERRORを入力します。グループ評価 を 無効 に、重大度 を Medium に設定します。アラートポリシー で シンプルモード を選択し、アクションポリシー で Error-level event detected-Action Policy を選択します。通知チャネルとして DingTalk を選択し、sampleWebhookを選択し、リマインダー を 無効 に、送信期間 を 任意 に、繰り返し間隔 を 1 分に設定します。 -
-
アラート通知
アラート監視ルールを作成すると、過去 4 時間以内に 5 つ以上の異常が検出された場合、DingTalk グループでアラート通知を受信します。詳細 をクリックして、アラートをトリガーしたログを表示し、問題をトレースすることもできます。