「Agent は入れたのに、Datadog にデータが届かない(ログやトレース、場合によってはメトリクスも)。PoC の現場では、ときどき出会う壁です。
2025年9月11日、Datadog 日本オフィスで開催されたオフラインのハンズオンに参加し、この“最初の壁”をどう乗り越えるかを実機で確認してきました。
この記事では、当日の流れを参加者目線で振り返りながら、つまずきやすいポイントと解決のコツを書き残します。
※ 本記事は 2025/09/11 時点の内容に基づいています。
勉強会について
テーマは「仮想顧客と PoC を進める想定で、導入したはずなのに Datadog にデータが届かない状態を解消する」。座学で要点を押さえたあと、用意された環境で Agent とアプリ(notes-app 相当)を操作し、原因を切り分けて復旧まで進めました。オフラインならではのテンポ感で、講師の方に画面を見てもらいながら手早く試行錯誤できたのが良かったです。
最初の手がかりは“動いていない”でした
まずは状態確認から始めます。端末でプロセスを見てみると、Datadog Agent が動いていませんでした。
PoC ではここで焦らず、「ほんとうに動いているか」「どのプロセスがどのポートを使っているか」を最初に確かめるのが近道だと改めて感じます。

導入のワンライナーは強い味方
今回は UI のガイドに沿って Agent をセットアップしました。APM をオンにすると、必要な変数がコマンドに自動で含まれます。PoC ではまずこの方法で“正しい初期状態”を素早く作ってしまうのが効率的です。

ログが語ること:DNS とポート競合
それでもデータが来ないときは、ログを素直に読みます。agent.log
には name resolution のエラー、trace-agent.log
には 8126 の bind 失敗。
つまり「外へ出られていない」か「ポートがふさがっている」か、あるいはその両方です。

agent.log
の name resolution エラー。まずはネットワークを疑います。
trace-agent.log
の 8126 競合。ローカルの受け口が重なっていました。まずはポートの競合をほどく
検証では、Trace Agent の受信ポートを一時的に 8126 → 8129 へ切り替えました。
設定を反映してから /info
を叩くと、Receiver が 8129 に更新されていることが確認できます。復旧の途中経過を数値や API で確かめられるのは、とても心強いです。
# datadog.yaml の一例(環境によりパスは異なります)
apm_config:
enabled: true
receiver_port: 8129
sudo systemctl restart datadog-agent

status
で active (running) を確認。
/info
で Receiver が localhost:8129
に切り替わったことを確認。アプリ側も一緒に動かす
Agent のポートを変えたら、アプリのトレーサにも同じポートを伝える必要があります。今回は DD_AGENT_PORT=8129
を指定してアプリを再起動しました。ここを忘れると、いつまでもデータが来ないので要注意です。
# 例(Python ddtrace-run)
export DD_AGENT_PORT=8129
DD_SERVICE=notes DD_ENV=dev ddtrace-run python3 -m notes_app.app

DD_AGENT_PORT
を更新する必要があります。
restart_notes
で DD_AGENT_PORT=8129
をセットしてアプリを再起動。出口を開ける:UFW と DNS
最後はネットワークです。UFW のポリシーが deny (outgoing) になっていて、外向きの通信が落ちていました。HTTPS(443)と DNS(53)を許可して Agent を再起動すると、ようやく画面にデータが流れ込みます。PoC の初動では、まずこの 2 つを通すだけでも前に進みやすくなります。


sudo ufw allow out 443
sudo ufw allow out 53
sudo systemctl restart datadog-agent
届いたことを、ちゃんと確かめる
復旧の最終確認は UI で行いました。
今回は トレース(APM)とログで到達を確認しています。環境によってはメトリクスやダッシュボードの更新も併せて見ると安心です。
ここまで行けば、「導入したのに見えない」はひとまず解消です。


notes
のトレースが並びます。
ログ収集の最小構成(メモ)
今回の環境では、Agent 全体の logs_enabled: true
を有効化し、対象アプリのファイルを 1 本だけ取り込みました。PoC の段階では、まずは“見るべきログを最小構成で流す”くらいが扱いやすいと感じます。
# /etc/datadog-agent/conf.d/notes.d/conf.yaml
logs:
- type: file
path: "/root/lab/apm-tutorial-python/app.log"
service: "notes.app"
終わってみて
今回の 3 時間で得た一番の学びは、切り分けの順番でした。プロセスが動いているか、ポートが競合していないか、アプリと Agent の設定が揃っているか、そして外へ出られるか。順番に当てていけば、原因は必ずどこかで顔を出します。PoC の評価観点(SLO や合格基準)を意識しつつ、まずは“見える状態”を最短で作る——その後にダッシュボードや運用設計を重ねていくのが、実務では現実的だと感じました。
おわりに
この記事が、これから Datadog の PoC を始める方の「最初の壁」を越える手助けになれば嬉しいです。
次はダッシュボードの型やアラート文面の作り込み、Watchdog/エラー追跡の使いどころも試して、またレポートします。