- 重要な情報
- はじめに
- 用語集
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
関数は、カスタム Agent チェックを使用してメトリクスを送信する際に使います。メトリクスタイプに応じ、さなざまな関数が利用できます。使用した関数により、Datadog 内に保存されるメトリクスタイプと送信時のものが異なる場合があります。
monotonic_count()
この関数は、増加し続ける未加工の COUNT メトリクスを追跡するために使います。Datadog Agent は各送信の間の差を計算します。直前のサンプルより小さな値を持つサンプルは無視されます。これは通常、基になる未加工の COUNT メトリクスがリセットされたことを意味します。関数はチェックの実行中に複数回呼び出すことができます。
例えば、サンプル 2、3、6、7 を送信すると、最初のチェックの実行中に 5 (7-2) が送信されます。同じ monotonic_count
でサンプル 10、11 を送信すると、次のチェックの実行中に 4 (11-7) が送信されます。
注: この関数で送信されたメトリクスは、Datadog に COUNT
メトリクスタイプで保存されます。時系列に保存される値は、(時間正規化されない) サンプル間のメトリクス値の差分です。
関数テンプレート:
self.monotonic_count(name, value, tags=None, hostname=None, device_name=None)
パラメーター | タイプ | 必須 | デフォルト値 | 説明 |
---|---|---|---|---|
name | 文字列 | 〇 | - | メトリクスの名前 |
value | Float | 〇 | - | メトリクスの値 |
tags | 文字列のリスト | ✕ | - | メトリクスに関連付けられているタグのリスト |
hostname | 文字列 | ✕ | 現在のホスト | メトリクスに関連付けられているホスト名 |
device_name | 文字列 | ✕ | - | 推奨されません。代わりにタグリストに device:<DEVICE_NAME> 形式のタグを追加します。 |
count()
この関数は、チェック間隔の間に発生したイベントの数を送信します。チェックの実行中に複数回呼び出すことができます。各サンプルは、送信される値に追加されます。
注: この関数で送信されたメトリクスは、Datadog に COUNT
メトリクスタイプで保存されます。時系列に保存される値は、(時間正規化されない) サンプル間のメトリクス値の差分です。
関数テンプレート:
self.count(name, value, tags=None, hostname=None, device_name=None)
パラメーター | タイプ | 必須 | デフォルト値 | 説明 |
---|---|---|---|---|
name | 文字列 | 〇 | - | メトリクスの名前 |
value | Float | 〇 | - | メトリクスの値 |
tags | 文字列のリスト | ✕ | - | メトリクスに関連付けられているタグのリスト |
hostname | 文字列 | ✕ | 現在のホスト | メトリクスに関連付けられているホスト名 |
device_name | 文字列 | ✕ | - | 推奨されません。代わりにタグリストに device:<DEVICE_NAME> 形式のタグを追加します。 |
gauge()
この関数は、特定のタイムスタンプでメトリクスの値を送信します。チェックの実行中に複数回呼び出されると、メトリクスの最後のサンプルだけが使用されます。
注: この関数で送信されたメトリクスは、Datadog に GAUGE
メトリクスタイプで保存されます。
関数テンプレート:
self.gauge(name, value, tags=None, hostname=None, device_name=None)
パラメーター | タイプ | 必須 | デフォルト値 | 説明 |
---|---|---|---|---|
name | 文字列 | 〇 | - | メトリクスの名前 |
value | Float | 〇 | - | メトリクスの値 |
tags | 文字列のリスト | ✕ | - | メトリクスに関連付けられているタグのリスト |
hostname | 文字列 | ✕ | 現在のホスト | メトリクスに関連付けられているホスト名 |
device_name | 文字列 | ✕ | - | 推奨されません。代わりにタグリストに device:<DEVICE_NAME> 形式のタグを追加します。 |
rate()
この関数は、サンプリングされた RATE メトリクスの未加工の値を送信します。Datadog Agent は、2 つの送信の間のメトリクス値の差分を送信の間隔で割ることで、レートを算出します。この関数は 1 回のチェックで 1 度だけ呼び出すことができます。複数回呼び出すと、以前送信された値より小さな値は無視されます。
注: この関数で送信されたメトリクスは、Datadog に GAUGE
メトリクスタイプで保存されます。時系列に保存される値は、サンプル間のメトリクス値の時間正規化された差分です。
関数テンプレート:
self.rate(name, value, tags=None, hostname=None, device_name=None)
パラメーター | タイプ | 必須 | デフォルト値 | 説明 |
---|---|---|---|---|
name | 文字列 | 〇 | - | メトリクスの名前 |
value | Float | 〇 | - | メトリクスの値 |
tags | 文字列のリスト | ✕ | - | メトリクスに関連付けられているタグのリスト |
hostname | 文字列 | ✕ | 現在のホスト | メトリクスに関連付けられているホスト名 |
device_name | 文字列 | ✕ | - | 推奨されません。代わりにタグリストに device:<DEVICE_NAME> 形式のタグを追加します。 |
histogram()
この関数は、チェック間隔の間に発生したヒストグラムメトリクスのサンプルを送信します。チェックの実行中に複数回呼び出すことができます。各サンプルは、このメトリクスの値セットの統計的分布に追加されます。
注: 生成されるすべてのメトリクス集計は、RATE
メトリクスタイプとして保存される <METRIC_NAME>.count
を除き、GAUGE
メトリクスタイプとして Datadog に保存されます。
関数テンプレート:
self.histogram(name, value, tags=None, hostname=None, device_name=None)
パラメーター | タイプ | 必須 | デフォルト値 | 説明 |
---|---|---|---|---|
name | 文字列 | 〇 | - | メトリクスの名前 |
value | Float | 〇 | - | メトリクスの値 |
tags | 文字列のリスト | ✕ | - | メトリクスに関連付けられているタグのリスト |
hostname | 文字列 | ✕ | 現在のホスト | メトリクスに関連付けられているホスト名 |
device_name | 文字列 | ✕ | - | 推奨されません。代わりにタグリストに device:<DEVICE_NAME> 形式のタグを追加します。 |
以下の手順に従い、すべてのメトリクスタイプを定期的に送信するカスタム Agent チェックを作成します。
Agent のコンフィギュレーションディレクトリのルートにある conf.d/
フォルダーにディレクトリ metrics_example.d/
を作成します。
metrics_example.d/
フォルダーに次の内容で空のコンフィギュレーションファイルを作成し、metrics_example.yaml
と名付けます。
instances: [{}]
conf.d/
フォルダーの 1 つ上のレベルで、checks.d/
フォルダーに移動します。次の内容でカスタムチェックファイルを作成し、metrics_example.py
と名付けます。
import random
from datadog_checks.base import AgentCheck
__version__ = "1.0.0"
class MyClass(AgentCheck):
def check(self, instance):
self.count(
"example_metric.count",
2,
tags=["env:dev","metric_submission_type:count"],
)
self.count(
"example_metric.decrement",
-1,
tags=["env:dev","metric_submission_type:count"],
)
self.count(
"example_metric.increment",
1,
tags=["env:dev","metric_submission_type:count"],
)
self.rate(
"example_metric.rate",
1,
tags=["env:dev","metric_submission_type:rate"],
)
self.gauge(
"example_metric.gauge",
random.randint(0, 10),
tags=["env:dev","metric_submission_type:gauge"],
)
self.monotonic_count(
"example_metric.monotonic_count",
2,
tags=["env:dev","metric_submission_type:monotonic_count"],
)
# Calling the functions below twice simulates
# several metrics submissions during one Agent run.
self.histogram(
"example_metric.histogram",
random.randint(0, 10),
tags=["env:dev","metric_submission_type:histogram"],
)
self.histogram(
"example_metric.histogram",
random.randint(0, 10),
tags=["env:dev","metric_submission_type:histogram"],
)
Agent の status サブコマンドを使用して、カスタムチェックが正しく実行されていることを確認します。Checks セクションで metrics_example
を探します。
=========
Collector
=========
Running Checks
==============
(...)
metrics_example (1.0.0)
-----------------------
Instance ID: metrics_example:d884b5186b651429 [OK]
Total Runs: 2
Metric Samples: Last Run: 8, Total: 16
Events: Last Run: 0, Total: 0
Service Checks: Last Run: 0, Total: 0
Average Execution Time : 2ms
(...)
メトリクスの概要ページでメトリクスが Datadog に報告を行っているかを確認します。
お役に立つドキュメント、リンクや記事: