こんにちは!開発現場のトラブルシューティングや、「夜中に突然鳴り響くアラート」に悩まされていませんか?
今回は、オブザーバビリティ(可観測性)の世界で常に議論の的になる「Datadog vs Sentry」という永遠のテーマを、現場のリアルな目線で徹底的に解剖します。
「どっちを入れたらいいの?」と迷っている初心者エンジニアの方に向けて、単なる機能比較にとどまらず、実際のセットアップから「これさえ押さえれば間違いない」という選び方の極意まで、優しく丁寧にお伝えしていきますね。これをマスターすれば、毎日のエラー調査やパフォーマンスチューニングが劇的に楽になりますよ!
—
1. DatadogとSentryそれぞれの強みとターゲット層
まずは、この2つのツールが「そもそも何を目指して作られたのか」という思想(DNA)の違いを知ることから始めましょう。ここを履き違えると、ツール導入で大ゴケします。
[Datadogの思想] = インフラ・システム全体の「健康状態」を鳥の目で俯瞰する
[Sentryの思想] = アプリケーション内の「コードの痛み(バグ)」を虫の目で深く解析する
Datadog:インフラからアプリまでを貫く「総合病院の総合診断医」
- 強み: サーバーのCPU使用率、ネットワークトラフィック、Kubernetesのコンテナ状態から、APM(アプリケーションパフォーマンス監視)によるコードの実行時間まで、「システム全体を1つのダッシュボードで監視する」ことにかけては世界最高峰です。
- ターゲット層: インフラストラクチャを自社で管理しているチーム、マイクロサービスが複雑に絡み合う大規模システム、DevOps/SRE文化が根付いている組織。
Sentry:開発者のための「外科・救急専門医」
- 強み: 「なぜそのコードでエラーが起きたのか」を突き詰めること特化しています。エラーが発生した瞬間のスタックトレース(どのファイルの何行目でコケたか)、当時のローカル変数、ユーザーの操作ログ、ブラウザの環境までをごっそりキャプチャします。
- ターゲット層: フロントエンド(React, Vueなど)やバックエンドの開発者、ユーザー体験(UX)に直結するバグを素早く直したいスタートアップ、中小企業、あるいは大企業のプロダクト開発チーム。
—
2. 「エラートラッキング」「パフォーマンス監視」「料金体系」の3軸で比較
では、開発現場で最も気になる3つの軸で、両者をガチンコ比較してみましょう。
| 比較軸 | Sentryの勝負勘 | Datadogの勝負勘 | 勝者(文脈による) |
| :— | :— | :— | :— |
| ① エラートラッキング | 圧倒的。 変数の値、パンくずリスト(エラーまでの軌跡)、リリースごとの紐付けが神がかっている。 | エラーも拾えるが、あくまでメトリクスやログの「おまけ」的な位置づけ。深掘りしにくい。 | Sentry |
| ② パフォーマンス監視 | 分散トレーシングも可能だが、インフラメトリクスとの相関はDatadogに一歩譲る。 | インフラからDBクエリ、コードの関数レベルまでシームレスに結合。圧巻の網羅性。 | Datadog |
| ③ 料金体系 | エラーイベント数(Transactions/Errors)ベース。直感的で予測がしやすい。 | ホスト数 + ログ容量 + カスタムメトリクスなど、多角的で「気づいたら高額に…」なりやすい。 | Sentry (小〜中規模) / Datadog (大企業) |
—
3. スタートアップ・中小企業・大企業における選び方の指針
「うちはどの規模にあてはまるんだっけ?」という疑問に、アーキテクトの視点からズバリ指針をお答えします。
- スタートアップ・中小企業(まずはSentry一択から始めよ!)
- 理由: 初期段階で一番痛いのは「ユーザーがアプリを使っていてエラーで離脱すること」です。インフラの細かいCPU負荷を見る前に、「今、コードのどこでバグってるか」を秒速で特定する必要があります。Sentryなら無料枠から始められ、導入も10分で終わります。
- 大企業・複雑なマイクロサービス(両方、あるいはDatadog主導)
- 理由: クラウドのインフラコストが膨大で、AWS/GCP/Azureのあらゆるリソースを横断監視する必要があるため、Datadogの基盤が必須になります。ただし、アプリケーションのエラー解析だけはSentryを組み込む(ハイブリッド構成)大企業も非常に多いです。
—
4. 両ツールを併用するアーキテクチャの可能性
「じゃあ、両方使えば最強なんじゃね?」
その通りです!実は、現代の洗練されたモダンなアーキテクチャでは、「インフラと全体俯瞰はDatadog、コードの詳細なエラートラッキングはSentry」という役割分担(適材適所)が非常に人気です。
- Datadog: 「APIサーバー全体の応答速度が遅くなっているぞ(インフラ・APMの異常検知)」
- Sentry: 「その遅延の原因は、〇〇のバリデーション関数でNullPointerExceptionが起きてリトライが走っているからだ(コードのエラー詳細)」
このように、アラートを連携させることで、障害検知から原因特定までのリードタイム(MTTR)を劇的に短縮できます。
—
【実践】Sentryで始める「精度高いHelloWorld」セットアップ
百聞は一見にしかず。今回は、現代の開発で最も使われるNode.js (Express)を例に、Sentryのインストールから「意図的にエラーを発生させてダッシュボードで確認する(HelloWorld)」までの手順を、優しく丁寧にハンズオン形式で解説します。
ステップ1:Sentryアカウントの作成とプロジェクト準備
1. [Sentry公式サイト](https://sentry.io/)にアクセスし、無料アカウントを作成します。
2. 「Create Project」をクリックし、プラットフォームとして Node.js (またはExpress) を選択します。
3. 画面に表示される DSN(Data Source Name = いわゆる接続URLのようなもの) をコピーしておきます。
ステップ2:プロジェクトの初期化とパッケージのインストール
ターミナルを開き、適当なディレクトリで以下のコマンドを実行します。
プロジェクトの作成と移動
mkdir sentry-demo && cd sentry-demo
npm init -y
リング・必要なライブラリのインストール
@sentry/node は Sentry本体、express はWebサーバー用
npm install express @sentry/node
ステップ3:最小限にして完璧なサーバーコードの実装
プロジェクトのルートに `app.js` を作成し、以下のコードを記述してください。
(※ `YOUR_DSN_HERE` の部分をご自身のSentryダッシュボードにあるDSNに書き換えてください)
// app.js
const express = require(‘express’);
const Sentry = require(“@sentry/node”);
const app = express();
const PORT = 3000;
// 1. Sentryの初期設定(これがすべての基本!)
Sentry.init({
dsn: “https://YOUR_DSN_HERE@o0.ingest.sentry.io/0”, // ご自身のDSNに変更
// 開発環境と本番環境を分けるためのタグ
environment: “development”,
// パフォーマンス監視を行う場合のサンプリングレート(0.0〜1.0)
tracesSampleRate: 1.0,
});
// 2. リクエストハンドラーを最初に配置(すべてのリクエストを追跡するため)
app.use(Sentry.Handlers.requestHandler());
app.use(Sentry.Handlers.tracingHandler());
// 通常のルート(正常系)
app.get(‘/’, (req, res) => {
res.send(‘Hello Sentry World! 🚀’);
});
// 3. 意図的にエラーを発生させるテスト用のルート(異常系)
app.get(‘/debug-sentry’, (mainReq, mainRes) => {
// 存在しないメソッドを呼び出して意図的にTypeErrorを発生させる
throw new Error(“これはSentryのテスト用エラーです!現場猫もびっくり。”);
});
// 4. Sentryのエラーハンドラーをルーティングの「直後」に配置
app.use(Sentry.Handlers.errorHandler());
// 5. カスタムのエラーハンドリングミドルウェア(ユーザーへの親切なレスポンス)
app.use((err, req, res, next) => {
res.statusCode = 500;
res.end(`Internal Server Error! Error ID: ${res.sentry}\n`);
});
// サーバー起動
app.listen(PORT, () => {
console.log(`サーバーがポート ${PORT} で起動しました。`);
console.log(`ブラウザで http://localhost:${PORT}/debug-sentry にアクセスしてみよう!`);
});
ステップ4:動作確認(HelloWorld)
1. サーバーを起動します。
node app.js
2. ブラウザを開き、`http://localhost:3000/` にアクセスします。「Hello Sentry World! 🚀」と表示されれば正常に動いています。
3. 次に、エラーを発生させるために `http://localhost:3000/debug-sentry` にアクセスします。
画面に `Internal Server Error! Error ID: xxxxxxx` と表示されれば成功です!
ステップ5:Sentryダッシュボードを確認する!
ブラウザでSentryのダッシュボード(Issuesタブ)を開いてみてください。
「おおっ!」と感動する瞬間がここにあります。
- `Error: これはSentryのテスト用エラーです!現場猫もびっくり。` というエラータイトルが綺麗にキャッチされています。
- クリックすると、どのファイルの何行目でエラーが起きたのか(今回は `app.js` の該当行)、実行時のNode.jsのバージョン、OS環境、さらにはリクエストのURLまでが完璧に記録されています。
—
まとめ
いかがでしたでしょうか?
- Datadog は、システム全体の「インフラ・メトリクス・APM」を俯瞰する大局的な視点。
- Sentry は、コードレベルの「バグ・エラー・ユーザー体験」に特化したミクロな視点。
それぞれの役割と強みを正しく理解し、自分のチームのフェーズや課題に合わせたツール選定(あるいは上手な併用)を行うことで、あなたのシステムの信頼性は劇的に向上します。
ぜひ今回のハンズオンを参考に、まずはSentryを触ってみてください。エラー画面を見るのが、ちょっと楽しくなりますよ!