PythonからDatadogへデータを送信する方法

PythonからDatadogへデータを送信する方法 プログラミング

Datadogは、アプリケーションのモニタリングとトラブルシューティングに役立つ強力なプラットフォームです。
本記事では、Pythonを使ってDatadogにデータを送信する方法について説明します。

利用するには、Datadogが提供するPython用のAPIクライアントライブラリです。
datadog-api-client-pythonを用いれば、簡単かつ効率的にデータを送信できます。

前提条件

datadog-api-client-python利用の前提条件は、以下となります。

  • Python環境のセットアップ
  • Datadogアカウントの作成
  • APIキーとアプリケーションキーの取得

Python環境のセットアップ

Python公式開発サイクルに準じていれば、基本的には問題ありません。

バージョンリリース日サポート期限
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月
3.112022年10月24日2027年10月
3.122023年10月2日2028年10月

datadog-api-client-pythonの公式ページでは、以下のように記載されています。

要するに、バージョンはそれほど関係ないのでしょう。

Datadogアカウントの作成

クラウド時代のサーバー監視&分析サービス | Datadog
Datadogで、サーバー監視に必要なメトリクス、トレース、ログを1つの画面から取れます。≫≫無料トライアル

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_KEYAPI Keysで取得したKEY
DD_APP_KEYApplication 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の値に設定したモノを確認できますね。

タイトルとURLをコピーしました