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. 右上にある View All ボタンをクリックし、そのパターンに関連する検索クエリを自動生成する。
  3. 検索クエリ横の </> オプションを選択し、検索クエリをコピー。
パターンビュー
  1. メインメニューでログの下にある Configuration ページに移動。indexes を選択し、関連するインデックスをクリック。これにより、除外フィルターを追加するオプションが表示されます。
  2. Add an Exclusion Filter を選択。
  3. フィルター名を入力し、コピーした検索クエリを貼り付け除外クエリを定義し、除外の割合を設定します。
除外フィルター

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

ここでは、サービスステータス INFO パターン Updating recommendations with customer_id=* & url=shops/*/* が除外フィルターで絞り込まれます。これに似た大量のログパターンをログエクスポローラーから除外することで、問題を素早く見つけ特定するのに役立ちます。ただし、これらのログはログエクスポローラービューからのみ削除されるだけなので、収集し、ライブテイルでの表示、ログアーカイブへの送信、メトリクスの生成に使用することができます。

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、ログパターンの活用方法については、以下のリンクをご覧ください。

その他の参考資料