メトリクス

Datadog のメトリクスとその有用性についてご紹介します。このセクションには以下のトピックが含まれます。




概要

メトリクスとは?

メトリクスは、レイテンシーからエラー率、ユーザーのサインアップまで、環境に関するあらゆる情報を経時的に追跡できる数値です。

Datadog では、メトリクスデータは値とタイムスタンプを持つデータポイントとして収集され、格納されます。

[ 17.82,  22:11:01 ]

一連のデータポイントが 1 つの時系列として格納されます。

[ 17.82,  22:11:01 ]
[  6.38,  22:11:12 ]
[  2.87,  22:11:38 ]
[  7.06,  22:12:00 ]

タイムスタンプが秒の端数であるメトリクスは、最も近い秒に丸められます。同じタイムスタンプを持つポイントがある場合、最新のポイントが前のポイントを上書きします。

メトリクスが役立つ理由は?

メトリクスは、システムの全体像を提供します。それを使用して、環境の状態を一目で評価できます。たとえば、ユーザーが Web サイトをロードする速度や、サーバーの平均メモリ消費量などを視覚化します。問題を特定したら、ログトレースを使用して、トラブルシューティングします。

システムの状態を追跡するメトリクスは、 700 以上のサービスと Datadog のインテグレーションによって自動的に取得されます。ビジネスに固有のメトリクス (カスタムメトリクスとも呼ばれます) を追跡することもできます。ユーザーログインの数、ユーザーカートのサイズ、チームのコードコミットの頻度などを追跡することができます。

さらに、メトリクスは、顧客からの需要を満たすために環境の規模を調整するのに役立ちます。リソースをどれだけ消費する必要があるかを正確に知ることは、お金を節約したり、パフォーマンスを向上させたりするのに役立ちます。

Datadog へのメトリクスの送信

メトリクスは、いくつかの場所から Datadog に送信できます。

  • Datadog がサポートするインテグレーション: 700 以上ある Datadog のインテグレーションには、すぐに使用できるメトリクスが含まれています。このメトリクスにアクセスするには、サービスの特定のページに移動し、インストール手順に従います。たとえば、EC2 インスタンスを監視する必要がある場合は、Amazon EC2 インテグレーションドキュメントに移動します。

  • Datadog のプラットフォーム内で、メトリクスを直接生成できます。たとえば、ログに表示されるエラーステータスコードをカウントし、Datadog にそれを新しいメトリクスとして保存することができます。

  • 多くの場合、ビジネスに関連するメトリクス (ユーザーのログインや登録数など) を追跡する必要があります。このような場合、カスタムメトリクスを作成できます。カスタムメトリクスは、AgentDogStatsD、または HTTP API を介して送信できます。

  • さらに、Datadog Agent は、いくつかの標準メトリクス (CPU やディスク使用量など) を自動的に送信します。

すべてのメトリクス送信ソースとメソッドの概要については、メトリクスタイプのドキュメントをお読みください。

メトリクスタイプとリアルタイムメトリクスの可視性

メトリクスタイプ

Datadog では、カウント、ゲージ、レート、ヒストグラム、分布など、異なるユースケースに対応するいくつかの異なるメトリクスタイプをサポートしています。メトリクスタイプは、アプリのメトリクスで使用できるグラフと関数を決定します。

Datadog Agent が、送信するデータポイントごとに Datadog のサーバーに個別のリクエストを行うことはありません。代わりに、_フラッシュ時間間隔_で収集された値を報告します。メトリクスのタイプは、この間隔でホストから収集された値が送信のためにどのように集計されるかを決定します。

**カウント**タイプは、送信されたすべての値を時間間隔で合計します。これは、たとえば、Web サイトのヒット数を追跡するメトリクスに適しています。

**レート**タイプはカウントを取り、それを時間間隔の長さで割ったものです。これは、1 秒あたりのヒット数に興味がある場合に有用です。

**ゲージ**タイプは、間隔中に報告された最後の値を取ります。このタイプは、RAM または CPU の使用量を追跡するのに役立ちます。最後の値を取得すると、時間間隔中のホストの動作の代表的な像が得られます。この場合、_カウント_などの別のタイプを使用すると、不正確で極端な値になる可能性があります。正しいメトリクスタイプを選択することで、正確なデータを得ることができます。

**ヒストグラム**は、送信された値を要約した 5 つの異なる値、平均、カウント、中央値、95 パーセンタイル、最大を報告します。これにより、5 つの異なる時系列が生成されます。このメトリクスタイプは、平均値を知るだけでは不十分なレイテンシーなどに適しています。ヒストグラムを使用すると、すべてのデータポイントを記録しなくても、データがどのように分散しているかを理解できます。

**分布**はヒストグラムに似ていますが、環境内のすべてのホストにわたって時間間隔中に送信された値を要約します。複数のパーセンタイルをレポートすることもできます(p50、p75、p90、p95、p99)。この強力な機能の詳細については、ディストリビューションのドキュメントをご覧ください。

各メトリクスタイプの詳細な例と送信手順については、メトリクスタイプのドキュメントを参照してください。

メトリクスのクエリ

メトリクスエクスプローラーダッシュボード、またはノートブックの Datadog 全体でメトリクスを視覚化してグラフを作成できます。

以下は、時系列を視覚化した場合の例です。

時系列グラフでは、レイテンシーメトリクスを 1 本の青い線で表し、いくつかのスパイクを付けて表示します。

この折れ線グラフは、x 軸の時間に対して、y 軸のユーザーが経験したレイテンシー (ミリ秒単位) をプロットします。

追加の視覚化

Datadog は、メトリクスを簡単にグラフ化して表示できるように、さまざまな視覚化オプションを提供しています。

メトリクスクエリは、開始時に同じ 2 つの評価ステップ、時間集計と空間集計で構成されています。詳しくはメトリクスクエリの構造を参照してください。


また、Datadog には、視覚化のための多くのタイプのグラフやウィジェットがあります。詳しくは、Datadog のメトリクスグラフに関するブログシリーズをご覧ください。

ダッシュボード、ノートブック、モニターのいずれを使用しても、グラフの作成方法は一定です。グラフエディタ UI を使用するか、生のクエリ文字列を直接変更するからのいずれかの方法により、グラフを作成できます。クエリ文字列を編集するには、右端の </> ボタンを押します。

メトリクスクエリの構造

Datadog のメトリクスクエリは次のようになります。

カラーコードのセクションで示されたサンプルクエリ

このクエリはいくつかのステップに分けることができます。

メトリクス名

まず、グラフを作成する特定のメトリクスを検索または Metric の横にあるドロップダウンから選択します。使用するメトリクスが不明な場合は、メトリクスエクスプローラーまたはノートブックで開始します。メトリクスの概要ページで、アクティブにレポートを送信しているメトリクスのリストを確認することも可能です。

メトリクスのフィルタリング

メトリクスを選択したら、タグに基づいてクエリにフィルターを適用することができます。たとえば、account:prod を使用してクエリの_スコープ_を定義し、本番環境のホストからのメトリクスのみに絞り込むことができます。詳細はタグ付けに関するドキュメントをお読みください。

時間集計の構成

次に、時間ロールアップを使用してデータの粒度を選択します。この例では、1 時間 (3600 秒) ごとに 1 つのデータポイントがあると定義しました。各タイムバケットのデータをどのように集計するかを選択することができます。デフォルトでは、平均 が適用されますが、他にも 合計最小最大カウント のオプションが使用可能です。関数やアプリ内モディファイア―を使って、メトリクスデータの集計方法やバケット化の方法をカスタマイズすることもできます。たとえば、最大を適用し、カレンダーに沿ったクエリに合わせてメトリクスデータのロールアップとバケット化の方法をカスタマイズしたい場合は、.rollup(max, 60) を使用できます。詳しくは、関数ロールアップアプリ内モディファイア―のドキュメントを参照してください。

空間集計の構成

Datadog では、「空間」とは、メトリクスがさまざまなホストやタグに分散される方法を指します。制御できる空間には、Aggregator とグループ化という 2 つの異なる側面があります。

Aggregator は、各グループのメトリクスを組み合わせる方法を定義します。利用可能な集計には、合計、最小、最大、平均の 4 つがあります。

_グループ化_は、グラフ上の線を構成するものを定義します。たとえば、4 つのリージョンに数百のホストが分散している場合、リージョンごとにグループ化すると、リージョンごとに 1 つの線をグラフ化します。これにより、時系列の数を 4 つに減らすことができます。

関数の適用 (任意)

グラフ値は数学関数で変更することができます。これにより、整数とメトリクス (メトリクスを2乗するなど) 間、または 2 つのメトリクス間 (jvm.heap_memory / jvm.heap_memory_max のように、メモリ使用率に関する新しい時系列を作成するなど) の算術演算を実行することができます。

時間と空間の集計

_時間集計_と_空間集計_は、クエリの 2 つの重要なコンポーネントです。これらの集計がどのように機能するかを理解すると、グラフの誤解を避けるのに役立つため、これらの概念について以下で詳しく説明します。

時間集計

Datadog は大量のポイントを保管しており、ほとんどの場合、そのすべてをグラフ上に表示することはできません。ピクセルよりもデータポイント数の方が多くなるためです。Datadog は時間集計を使用して、データポイントとタイムバケツを組み合わせることでこの問題を解決しています。例えば、4 時間を調べる場合、データポイントは 2 分のバケットにまとめられます。これは_ロールアップ_と呼ばれます。クエリに定義した時間間隔が長くなると、データの粒度は小さくなります。

各タイムバケットのデータを組み合わせるために適用できる集計には、合計、最小、最大、平均、カウントの 5 つがあります。

クエリを実行するたびに時間集計が_常に_適用されることを覚えておくことが重要です。

空間集計

空間集計は、ホスト、コンテナ、リージョンなどのタグによって単一のメトリクスを複数の時系列に分割します。たとえば、リージョンごとの EC2 インスタンスのレイテンシーを表示する場合は、空間集計のグループ化機能を使用して各リージョンのホストを組み合わせる必要があります。

Aggregator を使用するときに適用できる集計には、合計最小最大、_平均_の 4 つがあります。上記の例を使用して、ホストが us-east-1、us-east-2、us-west-1、us-west-2 の 4 つのリージョンに分散しているとします。各リージョンのホストは、集計関数を使用して組み合わせる必要があります。_最大_アグリゲーターを使用すると、各リージョンのホスト間で最大のレイテンシーが発生し、_平均_アグリゲーターを使用すると、リージョンごとの平均レイテンシーが発生します。

メトリクスに関するリアルタイム情報を表示する

メトリクスの概要ページには、過去 1 時間、1 日、または 1 週間の指定されたタイムフレームで Datadog に報告されたメトリクスのリストが表示されます。メトリクスは、メトリクス名またはタグでフィルタリングできます。

メトリクス名をクリックすると、詳細サイドパネルに詳細情報が表示されます。詳細再度パネルには、メタデータ (タイプ、ユニット、間隔)、個別のメトリクスの数、レポートホストの数、送信されたタグの数、メトリクスで送信されたすべてのタグを含むテーブルなど、特定のメトリクスの重要な情報が表示されます。メトリクスで送信されているタグを確認すると、タグ値の組み合わせによって異なるため、メトリクスからレポートされる個別のメトリクスの数を理解するのに役立ちます。

注: メトリクスの概要の詳細サイドパネルで報告される個別のメトリクスの数によって請求が定義されるわけではありません。過去 1 か月間の使用量の正確な計算については、使用量の詳細を参照してください。

詳細については、メトリクスの概要ドキュメントをお読みください。

その他の参考資料