【入門編】Datadog APMの導入ガイド:Java/Spring Bootアプリのパフォーマンス監視設定 – 運用監視・オブザーバビリティ活用バイブル

「なぜか本番環境でだけ遅い」「原因不明の500エラーが深夜に飛んでくる」……そんな悪夢にうなされる日々とは、今日で別れを告げましょう。

こんにちは。システムがブラックボックス化することに誰よりも恐怖を感じる、オブザーバビリティのエンジニアです。今日は、皆さんのJava/Spring Bootアプリを「中身がすべて透けて見える魔法の器」に変える、Datadog APMの導入ガイドをお届けします。

初心者の方でも迷わないよう、本質だけを凝縮して解説しますね。これをマスターすれば、障害対応のスピードは劇的に変わり、あなたの精神的な余裕も桁違いになるはずです。

—

1. なぜ「ログ」だけでは不十分なのか?

多くのエンジニアは「ログ」を頼りに障害を追います。しかし、マイクロサービス化が進む現代では、1つのリクエストが複数のサービスをまたぎます。ログだけでは「どこで時間がかかったのか」「どのDBクエリがボトルネックなのか」を特定するのに、膨大な時間を浪費してしまいます。

そこで登場するのがAPM(Application Performance Monitoring)です。
APMは、リクエストの旅路を一本の線(トレース)として記録します。どこで詰まっているのか、どこでエラーが起きたのか。Datadog APMを入れれば、それが一目でわかるようになります。

—

2. インストール:魔法の「エージェント」を添える

Javaアプリケーションの場合、コードを書き換える必要はほとんどありません。Javaの強力な機能である「Java Agent」を使って、実行時に動的に監視機能を注入します。

ステップ1: Datadog Java Agentの準備

まず、`dd-java-agent.jar`をダウンロードします。

プロジェクトのルートや適切なディレクトリに配置してください
wget -O dd-java-agent.jar ‘https://dtdg.co/latest-java-tracer’

ステップ2: Spring Bootの起動時にアタッチする

アプリ起動時の引数に、このエージェントを渡すだけです。これが「最も重要なセットアップ」です。

java -javaagent:./dd-java-agent.jar \
-Ddd.service=my-awesome-app \
-Ddd.env=production \
-Ddd.version=1.0.0 \
-jar target/my-app.jar

  • `-Ddd.service`: サービス名を指定します。後でDatadog上で探すときの「名前」になります。
  • `-Ddd.env`: 環境(dev, staging, prod)を分けましょう。これだけで監視の精度が段違いになります。

—

3. HelloWorldで動作確認:トレースの「魂」を見る

設定ができたら、Spring Bootのコントローラーで実際にトレースが飛ぶか確認しましょう。特別なおまじないは不要ですが、少しだけ「意味のある名前」をつけると可視化が美しくなります。

@RestController
@RequestMapping(“/api”)
public class HelloController {

@GetMapping(“/hello”)
public String hello() {
// ここにビジネスロジックが入ります
return “Hello, Observability!”;
}
}

アプリを起動して `curl localhost:8080/api/hello` を叩いてください。
数分待つと、Datadogの「APM > Traces」画面に、あなたのリクエストが美しいグラフとなって現れます。

—

4. 現場で差がつく「精度の高い監視」の極意

ここからが、伝説的なアーキテクトからのアドバイスです。ただ動かすだけでなく、「使える」監視にするための2つの鉄則を授けます。

① 分散トレーシングを繋ぐ(Context Propagation)

複数のサービスを呼び出す場合、Datadogはヘッダー情報を引き継いでくれます。これにより、AサービスからBサービスへ、どのような流れでリクエストが伝搬したかを可視化できます。これだけで、システム構成図がいらなくなるほど構造が見えてきます。

② エラーハンドリングの可視化

Spring Bootの `@ControllerAdvice` を使ってエラーを補足する際、`span.setError(true)` を明示的に呼ぶことで、Datadog上で「どのエラーがビジネス上の致命的な失敗か」を即座に特定できるようになります。

// エラー発生時のヒント
Span span = GlobalTracer.get().activeSpan();
if (span != null) {
span.setTag(“error”, true);
span.log(Map.of(“message”, “予期せぬビジネスエラーが発生”));
}

—

まとめ:あなたはもう「暗闇」を歩かなくていい

Datadog APMを導入するということは、「システムに内蔵されたレントゲン室」を持つことと同義です。

  • ログをgrepする無駄な時間は消え去ります。
  • 「たぶんDBが重いんじゃないかな?」という推測は、「このSQLが90%の時間を使っている」という事実へと変わります。

最初は難しく感じるかもしれませんが、まずは `-javaagent` をつけて起動する。それだけで、あなたの開発者体験は劇的に向上します。

もし何か壁にぶつかったら、いつでも戻ってきてください。監視の世界は奥が深く、知れば知るほど面白くなりますよ。さあ、今すぐあなたのアプリに「視力」を与えてあげましょう!

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