Logging Without Limits™ ガイド

Logging without Limits™

概要

クラウドベースのアプリケーションは、毎分数百万というペースでログを生成できますが。すべてのログに価値があるわけではなく、またその重要度もマチマチです。そこで、Datadog の Logging without Limits™ は、ログの取り込みとインデックス化を切り離すことで柔軟に対応します。

このガイドでは、ログエクスポローラーを構造化し KPI をモニターするのに役立つ、Logging Without Limits™ の主要な機能、 パターン除外フィルターログベースのカスタムメトリクスモニターを紹介します。

1. 最多ログのサービスステータスを特定

最多ログサービスの中にはさまざまなログがあり、トラブルシューティングに関係のないものもあります。たとえば、大規模な障害時やイベントの際に、400 番台や 500 番台の応答コードログのみを調べる場合、ログエクスポローラーから 200 番台のものを除外することでトラブルシューティングを円滑に進めることができます。最初に対応するサービスを特定することで、最も多くのログを生み出すサービスステータスを特定し、ログエクスポローラービューから除外すべきものを判断することができます。

最多ログのサービスステータスを特定するには:

  1. ログエクスポローラーで、検索バーの横にあるグラフビューを選択。
  2. 検索バーの下で、カウントを *serviceごとにグループ化、top 10 に制限と設定。
  3. [コントロールを非表示] の横にあるドロップダウンメニューから Top List を選択。
  4. 一番上にあるサービスをクリックし、メニューで search for を選択。これによりサービスファセットに基づいた検索が始まり、検索バーで確認できます。
  5. service ごとにグループ化を status ごとにグループ化に切り替え。これにより、サービスに関するトップステータスリストが作成されます。
  6. 一番上にあるステータスをクリックし、メニューで search for を選択。これによりステータスファセットが検索に追加されます。

: この手順は、大量のログクエリに適用しトップリストを生成する際に利用できます。グループ化に使えるファセットの一例として、hostnetwork.client.ipservicestatus などがあります。

2. 大量のログパターンを特定

最多ログのサービステータスを特定したら、ログエクスポローラーの左上にあるグラフビューの隣から、パターンビューに切り替え、選択したコンテキストの Log Patterns を自動的に表示します。

コンテキストはタイムレンジと検索クエリで構成されます。それぞれのパターンは強調表示されるので、その特徴的な機能を簡単に確認できます。ミニグラフにはログ量の大まかなタイムラインが表示されるため、あるパターンと別のパターンの違いを見ることができます。パターン内で変化するログのセクションは強調表示されるため、ログライン全体での違いを一目で確認できます。

除外するログパターンをクリックし、そこに含まれるログのサンプルを表示。

パターンコンテキスト

パターンビューは、ノイズの多いパターンを特定しフィルタリングする際に役立ちます。パターンに一致するログ数を、サービスとステータスに分けて表示します。一番上のパターンをクリックすると、ステータスに関連するイベントの詳細なログが表示されます。コンテキストパネルには、最もノイズの多いステータスパターンに関する情報が表示されます。

3. 除外フィルターログパターンを作成

パターンのコンテキストパネルには、ログパターンのすべてのインスタンス(イベント)が一覧表示され、選択したパターンに基づいたカスタム検索クエリが作成されます。除外フィルターでこのクエリを使用して、インデックスからこれらのログを削除します。

除外フィルターを作成するには:

  1. パターンビューリストにあるパターンをクリック。
  2. 右上の Add Exclusion Filter ボタンをクリックします。このパターンのログの半分以下が 1 つのインデックスに該当する場合、このボタンは無効になります。
  3. Log Index Configuration ページが新しいタブで開き、そのパターンのログの大部分が表示されるインデックスの除外フィルターがあらかじめ入力されています。
  4. 除外フィルターには、パターンに関連する自動生成された検索クエリが入力されます。フィルター名を入力し、除外率を設定し、新しい除外フィルターを保存します。

: ログが複数の除外フィルターに一致した場合は、最初の除外フィルター規則だけが適用されます。複数の除外フィルターによってログが何度もサンプリングされたり除外されることはありません。

この例では、サービス email-api-py、ステータス INFO パターン response code from ses 200 が除外フィルターでフィルタリングされています。このような大量のログパターンをログエクスプローラーから削除することで、ノイズを減らし、問題をより早く特定することができます。しかし、これらのログは、インデックス作成から除外されるだけです。これらはまだ取り込まれ、Live Tail で見ることができ、ログアーカイブに送ることができ、またはメトリクスの生成に使用することができます。

ログのリストと時間枠のドロップダウンを表示した Live Tail のページ

除外フィルターは、フィルターの右にある [無効] オプションを切り替えることで無効にできます。修正または削除するには、フィルターの上にカーソルを合わせ、[編集] または [削除] オプションを選択します。

4. メトリクスを生成し除外されたログを追跡

ログエクスポローラーからログパターンを除外しても、新しいログベースのカスタムメトリクスを作成することで収集レベルで KPI を長期にわたり追跡できます。

新しいログベースのメトリクスを追加

ログパターンに基づき新しいログベースのメトリクスを生成するには:

  1. Datadog アカウントで、メインメニューの Logs にカーソルを合わせ、Generate Metrics を選択し、右上の New Metric+ ボタンをクリック。
  2. Define Query で、コピーしてパターン除外フィルターに貼り付けた検索クエリを入力します(上のを例とすると、service:web-store status:info "updating recommendations with customer_id" "url shops")。
  3. 追跡するフィールドを選択。* を選択し、クエリに一致するすべてのログのカウントを生成するか、メジャー (例、@duration) を入力して数値を集計し、集計メトリクスの対応するカウント、最小、最大、合計、平均を作成します。
  4. グループにディメンションを追加。生成されたログベースのメトリクスに適用するログ属性またはタグキーを選択し、 <KEY>:<VALUE> 形式に従いタグに変換します。ログベースのメトリクスは、カスタムメトリクスと見なされます。タイムスタンプ、ユーザー ID、リクエスト ID、セッション IDなど、無制限または極めてカーディナリティの高い属性を使うグループ化は避け、請求に影響を与えないようにします。
  5. メトリクスに名前を付ける。ログベースのメトリクスの名前は、メトリクスの命名規則に従う必要があります。

異常検知モニターの作成

異常検知は、メトリクスが過去とは異なる挙動をしている時を特定するためのアルゴリズム機能です。除外されたログの異常検知モニターを作成すると、設定したアラート条件に基づき必要な際に警告が発せられます。

異常検知モニターを設定するには:

  1. メインのナビゲーションページで次のように移動します:Monitors -> New Monitor -> Anomaly.
  2. 前のセクションで定義したログベースのメトリクスを入力。
  3. アラート条件を設定し、ユーザーやユーザーのグループに現状を通知する際に必要な情報を追加します。
  4. モニターを保存。

異常が検出されると、タグ付けされている全員にアラートが送信されます。このアラートは、Monitors -> Triggered Monitors でも確認できます。

まとめ

ここでは、Logging without Limits™ を以下に適用する方法について説明しました。

  1. 最多ログのサービスステータスを特定
  2. 大量のログパターンを特定
  3. 除外フィルターログパターンを作成
  4. メトリクスを生成し除外されたログを追跡

Logging Without Limits™ の詳細やログエクスポローラー、Live Tail、ログパターンの活用方法については、以下のリンクをご覧ください。

その他の参考資料