Simple Log Serviceにログが収集された後、Simple Log Serviceのアラートシステムを使用して、ログキーワードに基づいてアラートを設定できます。
背景情報
ログには、システムの運用プロセスと例外に関する情報を記録できます。 たとえば、ログには警告、エラー、Goのパニックエラー、javaのJava. lang.StackOverflowErrorエラーが記録されます。 ログは、システムのステータスを記録することもできます。 たとえば、ログは支払いの失敗を記録できます。 ログキーワードベースの取得、モニタリング、およびアラートが頻繁に使用されます。 ログからキーワードを取得し、キーワードに基づいてアラートを設定できます。 このようにして、できるだけ早い機会に問題を特定できます。 Simple Log Serviceは、高パフォーマンスで柔軟な構成を備えたO&Mフリーのアラートソリューションを提供し、ログキーワードに基づいてアラートを構成するのに役立ちます。
ケース1: アラートをトリガーするキーワードを指定する
このケースでは、クエリ文と、指定されたキーワードがログに表示されたときにアラートをトリガーするアラートモニタリングルールを設定する方法の例を示します。
クエリ文
時間範囲を15分 (相対) に設定し、次のステートメントを実行して、ERRORキーワードを含むログを照会します。 詳細については、「ログの照会と分析」をご参照ください。
ERROR
クエリと分析結果
次のクエリと分析の結果は、ERRORキーワードが過去15分以内に1回表示されることを示しています。
アラートモニタリングルール
取得したクエリと分析結果に基づいてアラートモニタリングルールを作成できます。 詳細については、「ログのアラートモニタリングルールの作成」をご参照ください。 次のパラメータに注意する必要があります。
[Trigger Condition] パラメーターを [Data is returned] に設定します。 ERRORキーワードがログに表示されると、アラートがトリガーされます。
[注釈の追加] パラメーターの [説明] フィールドを ${logging} に設定し、[アラートテンプレート] を [SLS組み込みコンテンツテンプレート] に設定します。 このようにして、アラート通知には生ログのロギングフィールドの内容が含まれます。
アラート通知
アラートモニタリングルールが作成された後、ERRORキーワードがログに表示されると、指定されたDingTalkグループでアラート通知を受け取ることができます。 [詳細の表示] をクリックすると、アラートが生成されたログを表示して根本原因を特定できます。
ケース2: キーワードがログに表示される回数に基づいてアラートを設定する
このケースでは、クエリ文と、キーワードがログに表示される回数が指定された時間範囲内に指定された回数に達したときにアラートをトリガーするアラートモニタリングルールを設定する方法の例を示します。
クエリ文
時間範囲を1時間 (相対) に設定し、次のステートメントを実行して、ERRORキーワードが1時間以内にログに表示される回数を照会します。 詳細については、「ログの照会と分析」をご参照ください。
ERROR | SELECT count(*) AS cnt
クエリと分析結果
次のクエリと分析の結果は、ERRORキーワードが過去1時間以内に11回表示されることを示しています。
アラートモニタリングルール
取得したクエリと分析結果に基づいてアラートモニタリングルールを作成できます。 詳細については、「ログのアラートモニタリングルールの作成」をご参照ください。 次のパラメータに注意する必要があります。
Trigger Conditionパラメーターをdata matches the expression, cnt > 5に設定します。 ERRORキーワードがログに表示される回数が1時間以内に5回を超えると、アラートがトリガーされます。
[注釈の追加] パラメーターの [説明] フィールドを ${cnt} 回に設定し、ERRORキーワードが1時間以内に表示される回数に設定し、[アラートテンプレート] を [SLS組み込みコンテンツテンプレート] に設定します。 このように、アラート通知は、ERRORキーワードが過去1時間以内に表示された回数を表示します。
アラート通知
アラートモニタリングルールが作成された後、ERRORキーワードがログに表示された回数が過去1時間以内に5を超えると、指定されたDingTalkグループでアラート通知を受け取ることができます。 [詳細の表示] をクリックすると、アラートが生成されたログを表示して根本原因を特定できます。
ケース3: 指定した日と前日の特定の時間範囲内にキーワードが表示された回数を比較してアラートを設定する
キーワードは、毎日などの定期的な間隔で表示され、夜間よりも昼間に表示される可能性が高い。 この場合、キーワードが出現する回数などの絶対値は、システムの健全性を適切に示すものではない可能性がある。 間隔値の比較関数と周期値の比較関数を使用して、ある日の特定の時間範囲内のログにキーワードが表示される回数に対する、別の日の同じ時間範囲内のログにキーワードが表示される回数の割合を計算し、計算結果に基づいてアラートを設定できます。
クエリ文
時間範囲を1時間 (相対) に設定し、次の文を実行して、前日の同じ時間範囲内のログにERRORキーワードが表示された回数に対する、過去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% です。
アラートモニタリングルール
取得したクエリと分析結果に基づいてアラートモニタリングルールを作成できます。 詳細については、「ログのアラートモニタリングルールの作成」をご参照ください。 次のパラメータに注意する必要があります。
Trigger Conditionパラメーターをdata matches the expression, ratio > 10に設定します。 前回の1時間以内にERRORキーワードがログに表示された回数の、前日と同じ時間範囲内にERRORキーワードがログに表示された回数に対する割合が10% を超えると、アラートがトリガーされます。
[注釈の追加] パラメーターの [説明] フィールドを、キーワードERRORが過去1時間以内にログに表示された ${today} 倍、ERRORキーワードが前日と同じ時間範囲内にログに表示された ${昨日} 倍に設定します。成長率は ${ratio}% 、Alert TemplateはSLS組み込みコンテンツテンプレートに設定します。 このように、アラート通知には、過去1時間以内にERRORキーワードがログに表示された回数、前日と同じ時間範囲内にERRORキーワードがログに表示された回数、および成長率が表示されます。
アラート通知
アラートモニタリングルールが作成された後、前日の同じ時間範囲内のログにERRORキーワードが表示された回数に対する過去1時間内のログにERRORキーワードが表示された回数の割合が10% を超えると、指定されたDingTalkグループでアラート通知を受け取ることができます。 [詳細の表示] をクリックすると、アラートが生成されたログを表示して根本原因を特定できます。
ケース4: 機械学習アルゴリズムに基づいて異常のアラートを設定する
上記のケースでは、キーワードベースのアラート設定の一般的なシナリオについて説明します。 ただし、特別なシナリオでは、Simple Log Service機械学習アルゴリズムを使用してアラートを設定する必要があります。 例えば、キーワードが1日に出現する回数は頻繁に変動しないが、その数は、特定の時点で急激に増加または減少し得る。 できるだけ早い機会に変更を特定するために、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より大きいデータエントリの数に等しい。 番号に基づいてアラートを設定できます。
クエリおよび分析結果は、時系列チャートで表示することができる。 このようにして、突然の変化を簡単に識別できます。 次の時系列チャートの各小さな赤い円は、異常を表しています。 チャートは、指定された時間範囲内に15の異常が検出されたことを示します。
アラートモニタリングルール
取得したクエリと分析結果に基づいてアラートモニタリングルールを作成できます。 詳細については、「ログのアラートモニタリングルールの作成」をご参照ください。 次のパラメータに注意する必要があります。
[トリガー条件] パラメーターを [クエリ結果に含まれる>, 5, anomaly_prob > 0] に設定します。 過去4時間以内に異常が検出された回数が5を超えると、アラートがトリガーされます。
[注釈の追加] パラメーターの [説明] フィールドを [異常が5を超えた回数] に設定し、[警告テンプレート] を [SLS組み込みコンテンツテンプレート] に設定します。 このようにして、アラート通知は過去4時間以内の異常の数を表示します。
アラート通知
アラートモニタリングルールの作成後、過去4時間以内に異常が検出された回数が5を超えた場合、指定されたDingTalkグループでアラート通知を受け取ることができます。 [詳細の表示] をクリックすると、アラートが生成されたログを表示して根本原因を特定できます。