Datadogは、アプリケーションのモニタリングとトラブルシューティングに役立つ強力なプラットフォームです。
本記事では、Pythonを使ってDatadogにデータを送信する方法について説明します。
利用するには、Datadogが提供するPython用のAPIクライアントライブラリです。
datadog-api-client-pythonを用いれば、簡単かつ効率的にデータを送信できます。
前提条件
datadog-api-client-python利用の前提条件は、以下となります。
- Python環境のセットアップ
- Datadogアカウントの作成
- APIキーとアプリケーションキーの取得
Python環境のセットアップ
Python公式開発サイクルに準じていれば、基本的には問題ありません。
バージョン | リリース日 | サポート期限 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
3.11 | 2022年10月24日 | 2027年10月 |
3.12 | 2023年10月2日 | 2028年10月 |
datadog-api-client-pythonの公式ページでは、以下のように記載されています。
要するに、バージョンはそれほど関係ないのでしょう。
Datadogアカウントの作成
14日間は無料で利用できます。
検証程度であれば、この期間で十分できるでしょう。
APIキーとアプリケーションキーの取得
まず、Datadogにアクセス中のURLを確認しましょう。
ドメイン部分は、「【選択したregion】.datadoghq.com」になっているはずです。
この情報も必要となるので控えておきましょう。
そして、次の情報を取得します。
- APIキー
- アプリケーションキー
Organization Settingsから取得できます。
(regionは各自の状況による)
https://ap1.datadoghq.com/organization-settings/users
このページに以下のメニューがあります。
ここから取得可能です。
デフォルトのモノを使っても、新規作成してもどちらでもOK。
では、ここで整理しておきましょう。
環境変数名 | |
DD_SITE | 【選択したregion】.datadoghq.com |
DD_API_KEY | API Keysで取得したKEY |
DD_APP_KEY | Application Keysで取得したKEY |
Datadog API クライアントライブラリのインストール
datadog-api-client-pythonのインストールを説明します。
と言っても、以下のコマンドを実行するだけです。
pip install datadog-api-client
インストールは、すぐに終わります。
APIキーの認証
本格的な動作確認の前にAPIキーの認証を済ませておきましょう。
ここでは、.envファイルに環境変数を記載する方法を採用しています。
.envファイルについてよくわからない場合は、次の記事をご覧ください。
この場合、python-dotenvのインストールが必要です。
.envファイルには、以下の環境変数を設定します。
.env
DD_SITE='ap1.datadoghq.com' DD_API_KEY='APIキー' DD_APP_KEY='アプリケーションキー'
準備ができたら、次のコードを実行します。
""" Validate API key returns "OK" response """ from dotenv import load_dotenv from datadog_api_client import ApiClient, Configuration from datadog_api_client.v1.api.authentication_api import AuthenticationApi # 環境変数の読み込み load_dotenv() configuration = Configuration() with ApiClient(configuration) as api_client: api_instance = AuthenticationApi(api_client) response = api_instance.validate() print(response)
API認証が成功すれば、次のように表示されます。
{'valid': True}
失敗する場合は、次のようなエラーが出ます。
datadog_api_client.exceptions.ForbiddenException: (403) Reason: Forbidden
エラーが出る場合が、DD_SITEとDD_API_KEYの値を確認しましょう。
まだ、この時点ではDD_APP_KEYは関係ありません。
メトリクスの送信
ここでは、Datadogにデータを送信します。
そのためのコードは、以下。
import time from datadog_api_client import ApiClient, Configuration from datadog_api_client.v2.api.metrics_api import MetricsApi from datadog_api_client.v2.model.metric_payload import MetricPayload from datadog_api_client.v2.model.metric_point import MetricPoint from datadog_api_client.v2.model.metric_series import MetricSeries from dotenv import load_dotenv # 環境変数の読み込み load_dotenv() # Datadog APIクライアントの初期化 configuration = Configuration() with ApiClient(configuration) as api_client: api_instance = MetricsApi(api_client) # メトリクスデータの作成 series = [ MetricSeries( metric="your.metric.name", points=[ MetricPoint( timestamp=int(time.time()), value=100.0 ) ], tags=["environment:production", "service:api"] ) ] body = MetricPayload(series=series) # メトリクスの送信 response = api_instance.submit_metrics(body=body) print(f"メトリクスの送信結果: {response}")
実行した結果、次のように表示されたら成功しているはずです。
メトリクスの送信結果: {'errors': []}
エラーがある場合は、DD_APP_KEYの値を確認しましょう。
成功している場合、Datadogでも確認してみましょう。
Metrics→Summaryで確認できます。
https://ap1.datadoghq.com/metric/summary
設定したメトリック名を入力します。
検索にヒットしたメトリックをクリック。
そうすると、詳細が表示されます。
tagsの値に設定したモノを確認できますね。