Contents
1. Datadog アカウント作成と API キー取得手順
Datadog の APM を利用する第一歩は、サービスに紐付く API キー を取得することです。このキーはエージェントや CI/CD パイプラインから Datadog へデータを送信するときに必須となります。
1‑1. アカウント登録の流れ
- 公式サイトへアクセス
https://www.datadoghq.com/ のトップページで「Start free trial」をクリックします。 - メールアドレス・パスワードを入力
会社名や利用目的は任意ですが、後続の設定画面で自動補完が有効になるため正確に入力しておくと便利です。 - メール認証
受信した認証リンクを開き、アカウントを有効化します。
1‑2. API キーの確認方法
- ログイン後、左サイドメニューから Organization Settings → API Keys を選択。
- 「Create API key」ボタンを押し、キー名(例:
apm-tracing-key)を入力して作成。 - 生成された文字列を コピー し、安全な場所に保存します。エージェント設定や CI/CD パイプラインで必ず使用してください。
重要:API キーは機密情報です。Git リポジトリや公開ディレクトリに絶対に置かないよう、シークレット管理ツール(例:AWS Secrets Manager、HashiCorp Vault)を併用しましょう。
2. Datadog Agent のインストール(Linux・Docker・Kubernetes)
APM データは Datadog Agent が受信し、Datadog に転送します。ここでは主要なデプロイ方法をそれぞれ解説します。
2‑1. Linux (apt / yum) でのインストール
Linux 系 OS(Ubuntu/Debian, RHEL/CentOS 等)向けの公式インストールスクリプトは、Datadog の GitHub リポジトリに常に最新バージョンが置かれています。以下のコマンドは 2024 年時点で推奨されている URL を使用しています。
|
1 2 3 4 5 6 7 8 |
# Debian/Ubuntu 系 (apt) DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=<YOUR_API_KEY> \ bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)" # RHEL/CentOS 系 (yum) DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=<YOUR_API_KEY> \ bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)" |
- ポイント:
DD_AGENT_MAJOR_VERSION=7を明示することで、v7 系エージェントがインストールされます。 - 確認方法:
systemctl status datadog-agentで「active (running)」となっていれば正常に起動しています。
2‑2. Docker コンテナでエージェントを起動
コンテナ環境では公式イメージ datadog/agent:7 を使うのが最もシンプルです。以下は最低構成の例です。
|
1 2 3 4 5 6 |
docker run -d --name dd-agent \ -e DD_API_KEY=<YOUR_API_KEY> \ -e DD_APM_ENABLED=true \ -p 8126:8126/tcp \ datadog/agent:7 |
-p 8126:8126はホスト側からエージェントのトレース受信ポートを公開します。- 環境変数は
docker run -e、あるいは Docker Compose のenvironment:に記載してください。
2‑3. Kubernetes への Helm Chart デプロイ
Kubernetes クラスタでは公式 Helm chart が推奨されます。Chart は常に最新版が https://helm.datadoghq.com に公開されています。
|
1 2 3 4 5 6 7 8 9 10 11 |
# リポジトリ追加・更新 helm repo add datadog https://helm.datadoghq.com helm repo update # デプロイ例(Datadog Agent v7) helm install dd-agent datadog/datadog \ --set datadog.apiKey=<YOUR_API_KEY> \ --set targetNamespace=default \ --set apm.enabled=true \ --set agents.image.tag=7 |
values.yaml の抜粋
|
1 2 3 4 5 6 7 8 9 10 11 |
datadog: apiKey: "<YOUR_API_KEY>" apm: enabled: true agents: containers: - name: agent env: - name: DD_APM_ENABLED value: "true" |
- DaemonSet パターンと Sidecar パターンのどちらでも利用可能です。大規模クラスターでは DaemonSet が管理負荷を低減します。
3. APM 有効化と必須環境変数の設定
エージェントだけでなく、アプリケーション側にもいくつかの環境変数が必要です。ここでは代表的な変数と正しい書式・範囲をまとめます。
3‑1. APM を有効にする基本フラグ
| 環境変数 | 必須/任意 | 説明 |
|---|---|---|
DD_APM_ENABLED |
必須 | "true" に設定するとエージェントがポート 8126 でトレースを受信します。 |
注意:
DD_APM_ENABLEDは大文字・全て英数字で記述し、値は文字列"true"(またはtrue)です。
3‑2. サービス情報系変数
| 環境変数 | 説明 | 設定例 |
|---|---|---|
DD_SERVICE |
アプリケーションのサービス名(必須) | my-web-app |
DD_ENV |
デプロイ環境(prod, staging, dev 等) | production |
DD_VERSION |
バージョンタグ(Git SHA、リリース番号等) | v1.2.3 |
3‑3. トレースサンプリング率
公式ドキュメントで定義されている変数は DD_TRACE_SAMPLE_RATE です。0〜1 の小数で指定し、デフォルトは 1.0(全トレース)となります。
| 環境変数 | 有効範囲 | 設定例 |
|---|---|---|
DD_TRACE_SAMPLE_RATE |
0.0〜1.0 の実数 | 0.5 (50% サンプリング) |
障害例と対処法
- 誤った変数名:
DD_APM_SAMPLE_RATE=2と設定するとエージェントは無視し、トレースが送信されません。 - 修正:
DD_TRACE_SAMPLE_RATE=0.5のように小数で再設定し、Agent 再起動またはコンテナ再デプロイを行います。
3‑4. .env ファイル例
|
1 2 3 4 5 6 |
DD_SERVICE=my-web-app DD_ENV=production DD_VERSION=v1.2.3 DD_APM_ENABLED=true DD_TRACE_SAMPLE_RATE=0.5 |
Dockerfile での継承は次のように記述します。
|
1 2 3 4 5 6 |
ENV DD_SERVICE=my-web-app \ DD_ENV=production \ DD_VERSION=v1.2.3 \ DD_APM_ENABLED=true \ DD_TRACE_SAMPLE_RATE=0.5 |
4. 言語別トレースライブラリ導入手順
以下は主要言語(Java、Python、Node.js)における最小構成のインストール・設定例です。全て公式ドキュメント(https://docs.datadoghq.com/ja/tracing/)に準拠しています。
4‑1. Java (-javaagent)
Java アプリは起動オプションに Datadog Java Agent を追加するだけで自動インスツルメントが有効になります。
|
1 2 3 4 5 6 7 8 9 10 11 |
# エージェント JAR の取得(公式リポジトリから直接ダウンロード) curl -L https://github.com/DataDog/dd-trace-java/releases/latest/download/dd-java-agent.jar \ -o /opt/datadog/dd-java-agent.jar # アプリ起動例 java -javaagent:/opt/datadog/dd-java-agent.jar \ -Ddd.service=my-java-app \ -Ddd.env=production \ -Ddd.version=v1.2.3 \ -jar myapp.jar |
-Ddd.*系プロパティは環境変数と同等に扱われます。- 必要に応じて
DD_TRACE_SAMPLE_RATEも JVM オプションで上書き可能です。
4‑2. Python (ddtrace)
Python 用 SDK は pip でインストールし、ラッパーコマンド ddtrace-run を使うだけでトレースが開始します。
|
1 2 3 4 5 6 7 8 9 10 11 |
# ライブラリのインストール pip install ddtrace # 必要な環境変数を設定(.env 推奨) export DD_SERVICE=my-python-app export DD_ENV=production export DD_TRACE_SAMPLE_RATE=0.75 # 75% サンプリング # アプリ起動 ddtrace-run python app.py |
- Flask や Django は自動的にインスツルメントされます。
DD_TRACE_ENABLEDが省略された場合はデフォルトで有効です。
4‑3. Node.js (dd-trace)
Node.js 用 SDK はコード内で一度だけ初期化すれば、HTTP リクエストや主要な DB クライアントを自動計測します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# パッケージインストール npm install dd-trace --save # アプリ起動スクリプト例 (app.js) require('dd-trace').init({ service: 'my-node-app', env: 'production', version: 'v1.0.0', // 環境変数で上書き可能 }); const express = require('express'); const app = express(); app.get('/', (req, res) => res.send('Hello Datadog')); app.listen(3000); |
DD_TRACE_SAMPLE_RATEを環境変数で設定すれば、コード変更なしでサンプリング率を調整できます。
5. Docker / Kubernetes 環境向けベストプラクティスとエージェントサイドカー
コンテナ化されたサービスでは 通信経路の可視化 と 設定の一元管理 が鍵になります。以下に実務で推奨されるパターンをまとめました。
5‑1. Docker デプロイ時の変数継承とポート設計
Docker Compose の例です。アプリコンテナはエージェントコンテナと同一ネットワークに配置し、DD_AGENT_HOST でエージェントのホスト名を指します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
version: '3.8' services: app: image: myapp:latest environment: - DD_SERVICE=my-app - DD_ENV=production - DD_AGENT_HOST=datadog-agent # エージェントコンテナのサービス名 depends_on: - datadog-agent datadog-agent: image: datadog/agent:7 environment: - DD_API_KEY=${DD_API_KEY} - DD_APM_ENABLED=true ports: - "8126:8126" # デバッグが必要なときだけ公開 |
- ベストプラクティス:ポート 8126 の外部公開は最低限に抑え、内部ネットワークだけで通信させることでセキュリティリスクを低減します。
5‑2. Kubernetes における Sidecar と DaemonSet の選択基準
| パターン | 特徴 | 推奨シーン |
|---|---|---|
| Sidecar | 各 Pod にエージェントコンテナを同梱。Pod 単位で設定可能。 | マルチテナントクラスター、Pod ごとに異なる API キーが必要な場合 |
| DaemonSet | ノード単位でエージェントをデプロイ。一括管理が容易。 | 大規模クラスタ、リソース共有が前提の場合 |
Sidecar 設定例(アノテーション利用)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
apiVersion: v1 kind: Pod metadata: name: my-app-pod annotations: ad.datadoghq.com/my-app.service-name: "my-app" ad.datadoghq.com/my-app.env: "production" spec: containers: - name: my-app image: myapp:latest - name: datadog-agent image: datadog/agent:7 env: - name: DD_API_KEY valueFrom: secretKeyRef: name: datadog-secret key: api-key - name: DD_APM_ENABLED value: "true" |
DaemonSet 設定例(Helm values)
|
1 2 3 4 5 6 7 |
datadog: apiKeyExistingSecret: datadog-secret # Secret 名は事前に作成 apm: enabled: true agents: containerCollectAll: true # 必要なら有効化 |
- ポイント:Kubernetes の自動インスツルメントは
ad.datadoghq.com/*アノテーションでサービス名や環境を付与でき、コード修正なしでトレースが取得できます。
6. トレース確認方法とよくある障害・対処法
設定完了後は Datadog UI で実際にトレースが届いているか検証します。ここでは確認手順と代表的な障害シナリオをまとめました。
6‑1. Datadog UI での APM ダッシュボード確認手順
- 左サイドメニュー → APM → Services を開く。
- 作成した
DD_SERVICEが一覧に表示されていることを確認する。 - 該当サービス名をクリックし、Traces タブで最近のトレースが可視化できれば成功です。
エージェント状態の確認:トレースが見えない場合は Infrastructure → Agent へ移動し、対象ノードの「APM」ステータスが
OKかどうかをチェックします。以前記載されていた「APM > Infrastructure > Agent Checks」は UI の変更に伴い正しくありません。
6‑2. 典型的な障害と対処法
| 障害例 | 主な原因 | 修正手順 |
|---|---|---|
| 8126 ポートが閉塞 | エージェント未起動、もしくはファイアウォール/NetworkPolicy が遮断 | systemctl status datadog-agent でエージェント状態確認。K8s の場合は NetworkPolicy に port: 8126 を許可 |
サンプリング率設定ミス (DD_APM_SAMPLE_RATE=2) |
変数名が誤り、かつ範囲外の数値を指定 | 正しい変数 DD_TRACE_SAMPLE_RATE=0.5(0〜1)に修正し、エージェント/コンテナ再起動 |
環境変数の大小文字不一致 (dd_service vs DD_SERVICE) |
Datadog は大文字のみ認識 | .env, Dockerfile, Helm values すべてで大文字統一。 |
| エージェントが旧バージョン (v6) | v7 未満では APM が無効化 | apt-get install datadog-agent=7.*、または公式インストールスクリプトを再実行して v7 へアップグレード |
| API キーが間違っている | シークレット管理ミスや変数展開エラー | 正しいキーを DD_API_KEY に設定し、環境変数の参照方法(${DD_API_KEY} vs $DD_API_KEY)を確認 |
6‑3. 障害発生時のトラブルシューティング手順
- エージェントログ確認
bash
journalctl -u datadog-agent -f | grep -i apm - ネットワーク疎通テスト(Docker/K8s)
bash
curl -v http://localhost:8126/status # 正常なら {"status":"ok"} - 環境変数一覧の再確認
bash
env | grep DD_ - Datadog UI の「Agent Checks」タブでエラーメッセージを取得(最新 UI は Infrastructure → Agent)。
まとめ
- アカウント作成 → API キー取得 → エージェント導入 が APM 設定の基本フローです。
- 環境変数はすべて大文字で統一し、
DD_TRACE_SAMPLE_RATE(0〜1)を正しく設定してください。 - Linux・Docker・Kubernetes それぞれに最適なインストール手順とベストプラクティスがあります。特に Kubernetes では Sidecar と DaemonSet の選択が運用コストに直結します。
- トレースの可視化は APM → Services で確認し、エージェント状態は Infrastructure → Agent でチェックしてください。
- 障害が起きたらログ・ポート・環境変数を順に検証すれば多くの場合即座に解決できます。
このガイドに沿って設定すれば、Datadog APM の導入・運用がスムーズに進むはずです。質問や独自の構成要件がある場合は公式ドキュメント(https://docs.datadoghq.com/ja/tracing/)を随時参照してください。