本ドキュメントでは、LogReduce を使用して、類似性の高いログエントリーをグループ化、分析する方法について説明します。

シナリオ

LogReduce を使用すると、問題の特定、例外の検出、DevOps に対するその他の O&M 関連のアクションの実行、またはサービスのセキュリティを危険にさらす可能性のあるネットワークへの侵入を検出できます。 さらに、ログのグループ化結果を分析チャートとしてダッシュボードに保存してから、グループ化されたデータをリアルタイムで表示できます。

利点

  • LogReduce 関数を使用して、3 つの形式(Log4J、JSON、または Syslog)のログエントリをグループ化できます。
  • ギガバイト単位のデータを秒単位でグループ化できます。
  • ログパターンごとにグループ化されたログエントリを表示したり、さまざまな時間範囲におけるグループ化されたログエントリの数を表示したりできます。
  • ログのグループ化の許容範囲を動的に調整できます。

インデックスサイズ

LogReduce 機能を有効にした後、ログインデックスのサイズは 10% 増加します。 たとえば、生ログデータのサイズが 100 GB /日の場合、この機能を有効にした後でログインデックスのサイズは 10 GB 増加します。
生ログサイズ 生ログ内のインデックスの割合 LogReduce によって生成されたインデックスのサイズ インデックスサイズ
100 GB 20%(20 GB) 100 * 10% 30 GB
100 GB 40% (40 GB) 100 * 10% 50 GB
100 GB 100% (100 GB) 100×10% 110 GB

LogReduce の有効化

デフォルトで、この機能は無効です。
  1. ログストアページで、対象のログストアの右側の検索をクリックします。
  2. インデックス機能を有効にしている場合、 インデックス属性 > 修正を選択します。 インデックス機能を有効にしていない場合、有効化をクリックします。
    図 1. インデックス機能の有効化
    図 2. ログインデックスの変更
  3. インデックスパラメータを設定し、スイッチをクリックして LogReduce を有効にします。
    図 3. LogReduce の有効化
  4. OK をクリックします。
    LogReduce を有効にすると、Log Service は収集されたログデータを自動的にグループ化します。

ログのグループ化結果と生ログを表示する

  1. 検索と分析ページで、検索ボックスに検索と分析のステートメントを入力して、 検索と分析をクリックします。
    • キーワードを使用して、グループ化されたログエントリをフィルタリングすることもできます。
    • SQL タイプのステートメントは、LogReduce 関数でサポートされていません。 つまり、ログデータの解析結果をこの機能でグループ化することはできません。
  2. 結果を表示するには、 LogReduceタブをクリックします。
    項目 説明
    Number ロググループのシーケンス番号を示します。
    Count ロググループのログエントリ数を示します。
    Pattern ログのパターンを示します。 各ロググループには、1 つや複数のサブパターンがあります。
    図 4. 結果
  3. ロググループのサブパターンと各サブパターンの割合を表示するには、カーソルを Count 値の上に移動します。
    Count 値の前にある + をクリックして、ロググループのパターンリストを表示することもできます。
    図 5. ロググループ化の詳細表示
  4. ロググループの生ログを表示するには、 Count 値をクリックします。
    図 6. 生ログの表示

ロググループ化の許容範囲を調整する

  1. 検索と分析ページで、 LogReduce タブをクリックします。
  2. タブページの右上隅にある Patternスライダー をドラッグして、ロググルーピングの許容範囲を調整します。
    • スライダーを多いの方にドラッグすると、システムはより具体的なログのグループ化結果を出力し、Pattern をより詳細に表示します。
    • スライダーを少ないの方にドラッグすると、システムはそれほど具体的ではないログのグループ化結果を出力し、Pattern の詳細を表示しません。
図 7. ロググループ化の許容範囲の調整

異なる期間中のグループログエントリ数の比較

Log Compareをクリックして、時間の長さを選択し、OK をクリックします。
項目 説明
Number ロググループのシーケンス番号を表示します。
Pre_Count 時間範囲内のログエントリ数を表示します。
Count 現在の時間範囲のログパターンのログエントリ数を表示します。
Diff 現在の時間範囲と過去の時間範囲のログパターンのログエントリ数の差を表示します。
Pattern ログパターンを表示します。

API を介した LogReduce 関数の使用

  • ログのグループ化結果を取得するには、次の SQL 文を実行します。
    * | select a.pattern, a.count,a.signature, a.origin_signatures from (select log_reduce(3) as a from log) limit 1000 
    Log Service コンソールで結果を直接表示する場合は、クエリのコピーをクリックして、システムによって実行された SQL ステートメントをバックエンドに入れることができます。

    パラメータとフィールドの説明

    • カスタマイズする必要がある SQL ステートメント内のパラメーターは log_reduce(precision) です。

      このパラメータは、1 から 16 の範囲の整数に設定する必要があります。 デフォルト値は 3 です。 許容値が小さいほど、許容誤差が大きくなり、ログパターンが多くなるというグループ化結果が出力されます。

    • SQL ステートメントの実行結果には、以下の戻りフィールドが含まれています。
      • Pattern :ロググループ内のログエントリのサブパターンを示します。
      • count :ロググループ内のログエントリ数を示します。
      • signature:ロググループのログパターンを示します。
      • origin_signatures :ロググループのオリジナルの署名を示します。 このフィールドを使用して、ロググループのログエントリを検索できます。
  • ロググループ化の結果の時間差を表示するには、以下の SQL ステートメントを実行します。
    * | select v.pattern, v.signature, v.count, v.count_compare, v.diff from (select compare_log_reduce(3, 86400) as v from log) order by v.diff desc limit 1000 
    Log Service コンソールで Log Compare をクリックしてロググループ化結果の時間差を表示すると、システムよりログエントリに対して SQL ステートメントが実行されます。 クエリステートメントのコピーをクリックして、SQL ステートメントを取得します。

    パラメータとフィールドの説明

    • カスタマイズする必要がある SQL ステートメント内のパラメーターは compare_log_reduce(precision, compare_interval) です
      • 許容誤差パラメータは、1 から 16 の範囲内の整数である必要があります。 デフォルト値は 3 です。 許容値が小さいほど、許容誤差が大きくなり、ログパターンが多くなるというグループ化結果が出力されます。
      • compare_interval パラメーターは、比較対象のログ項目が生成されるまでの秒数を示します。 このパラメータは正の整数として設定する必要があります。
    • SQL ステートメントの実行結果には、以下の戻りフィールドが含まれています。
      • pattern :ロググループ内のログエントリのサブパターンを示します。
      • signature:ロググループのログパターンを示します。
      • count :ロググループ内のログエントリ数を示します。
      • count_compare :指定された時間範囲内の、同じログパターンのロググループのログエントリ数を示します。
      • diff :count フィールド値と count_compare フィールド値の差を示します。