【入門編】Sentryの「Snuba」と「Discover 2」を使いこなす!大量のエラーログからカスタムクエリでビジネスインサイトを抽出する方法 – 運用監視・オブザーバビリティ活用バイブル

こんにちは!日々のエラー対応やアラート対応に追われて、「またこのエラーか…でも、一体誰が・どんな環境で・何回踏んでるんだ?」と頭を抱えた経験はありませんか?

Sentryといえば「エラー通知ツール」として有名ですが、実はそれだけに留めておくのは、宝の山の上に立ちながら1円玉を探しているようなものです。
今回は、Sentryの裏側でうねるようにデータを処理しているエンジン「Snuba(スヌーバ)」と、それを解き放つ「Discover 2」のコンビネーションを徹底的に解説します。

これをマスターすれば、単なる「エラーの消し込み作業」から解放され、「どの機能が、どのVIPユーザーの体験を損ねているか」というビジネスインサイトを秒速で抽出できるようになりますよ。毎日の運用作業が劇的に楽になる世界へ、一緒に足を踏み入れましょう!

—

1. そもそも「Snuba」と「Discover」って何者?

Sentryに送られてくる膨大なスタックトレースやコンテキスト(ユーザー情報、カスタムタグなど)。これらは通常のRDB(Relational Database)で処理するには量が多すぎ、かつ複雑すぎます。

そこでSentryが裏側で採用しているのが、オープンソースの分散カラムナーストレージであるClickHouseをベースに構築された分散クエリエンジン「Snuba」です。
Snubaは、数億・数千億件に及ぶイベントログから、特定の条件に一致するデータをミリ秒単位で集計・スキャンする怪物的なパフォーマンスを持っています。

そして、そのSnubaのパワーをGUIから自由自在に引き出すための機能が「Discover 2」です。標準のエラー詳細画面が「1つの木(エラー)」を見るものだとしたら、Discoverは「森全体の生態系(エラーの傾向とビジネス影響)」を見渡すためのスコープだと思ってください。

—

2. 基礎セットアップ:Discoverを使い始めるための準備

「特別なインストール」と言っても、Sentry(Sentry.io、またはオンプレミス版)を使っていれば、Discoverは標準で備わっています。重要なのは、「Snubaが美味しく料理できる良質なデータ(材料)を送り込むこと」です。

ただエラーをキャッチするだけでは、Discoverの真価は発揮されません。まずは、ユーザーセグメントやビジネスコンテキストをSentryに教え込む「基礎セットアップ」を行いましょう。

ステップ1: ユーザーコンテキストの明示的な紐付け

エラーが発生した際、「誰が」それに遭遇したのかを特定できるようにします。例えば、フロントエンド(JavaScript/TypeScript)であれば、以下のように初期化またはログイン時にユーザー情報をセットします。

import as Sentry from “@sentry/react”;

// ユーザーがログインした瞬間に実行する
function handleUserLogin(user: { id: string; email: string; plan: string }) {
Sentry.setUser({
id: user.id, // 必須:ユーザーを一意に識別するID
email: user.email, // 任意:連絡先
// 自社独自のビジネス指標(プランなど)をカスタムタグとして持たせる
segment: user.plan, // 例: ‘enterprise’, ‘free’, ‘pro’
});
}

ステップ2: カスタムタグの設定

「どの機能(Feature)」や「どのブラウザのバージョン」で起きたかを後からスライス(切り分け)できるように、タグを仕込みます。

// 重要な処理の実行前にスコープを調整
Sentry.withScope((scope) => {
scope.setTag(“feature_module”, “checkout_flow”); // 機能モジュール名
scope.setTag(“payment_gateway”, “stripe_v2”); // 依存サービス名

try {
executeCheckout();
} catch (error) {
Sentry.captureException(error);
}
});

これだけで、Snubaのデータベースには「誰が・どのプランで・どの機能を使っている時のエラーか」という極上の分析用データが蓄積されていきます。

—

3. HelloWorld的動作確認:最初の一歩のクエリを書いてみよう

さあ、準備は整いました。Sentryのサイドメニューから [Discover] を開いてみてください。
ここがあなたの新しい司令室です。

まずは、最も基本となる「直近24時間で、どの機能モジュールでエラーが一番起きているか」を一覧化してみましょう。

Discoverクエリの基本構文と操作

検索バーに、以下のように入力してみてください(あるいはUIのドロップダウンで選択します)。

event.type:error timestamp >now()-24h

そして、以下の設定を行います。
1. Columns(表示列): `title`, `count()`, `user.id` (uniq)
2. Group by(グルーピング): `tags[feature_module]`

【ここで何が起きているか?】
Snubaエンジンに対し、「エラーイベントだけに絞り込み、過去24時間のデータを対象として、`feature_module`タグごとにグルーピングし、エラーの発生回数(`count()`)と、影響を受けたユニークユーザー数(`uniq(user.id)`)を集計せよ」という命令を瞬時に実行しています。

画面には、どの機能が最もユーザーの体験を阻害しているかがランキング形式で表示されたはずです。これがDiscoverの「Hello World」です!

—

4. 実践!ビジネスインサイトを抽出するカスタムクエリ事例

ここからが本番です。現場で本当に役立つ、少し高度なカスタムクエリの具体例を3つ紹介します。これをそのままあなたのSentryで試してみてください。

ケースA:VIPユーザー(Enterpriseプラン)に影響を与える致命的なバグの早期発見

「無料プランの細かいエラーは後回しにしたいが、大口顧客(Enterprise)の離脱に繋がるエラーは一刻も早く直したい」というビジネス視点でのトリアージです。

  • 検索クエリ:

tags[segment]:enterprise event.type:error timestamp >now()-7d

  • カラム設定: `title`, `user.email`, `device.browser`, `timestamp`
  • インサイト:

大口顧客のメールアドレスと共にエラーがリストアップされます。「どの企業の誰がこのエラーを踏んだか」が即座に分かるため、カスタマーサクセスチームにプロアクティブ(先回り)な連絡を入れ、謝罪と対応を行えます。信頼残高を爆上げする使い方の定番です。

ケースB:特定のリリース(バージョン)によるデグレ(退行不具合)の特定

昨日デプロイしたばかりのバージョン(例: `v1.2.4`)が、既存の機能に悪影響を与えていないかを調査します。

  • 検索クエリ:

release:my-app@1.2.4 event.type:error !is:handled

(※ `!is:handled` は、try-catchで捕捉されずにアプリをクラッシュさせた、より深刻な未処理エラーを意味します)

  • Group by: `transaction` (どのAPIエンドポイント、またはどの画面で起きたか)
  • インサイト:

新バージョンで急増した「アプリをクラッシュさせる致命傷」がどの画面で起きているかが一発で分かります。ロールバックすべきか、ホットフィックスを当てるべきかの客観的なデータ判断材料になります。

—

5. チームで共有する「カスタムダッシュボード」の作り方

Discoverで見つけた優秀なクエリは、自分だけの秘密にしておくのはもったいないですよね。チーム全体で監視すべき「ビジネス・インシデント・ダッシュボード」へと昇格させましょう。

1. Discover画面で、先ほど作ったお気に入りのクエリ(例:Enterpriseプランのエラー推移など)を実行します。
2. 画面右上にある [Add to Dashboard] ボタンをクリックします。
3. 既存のダッシュボードに追加するか、新規のダッシュボードを作成します(例:「プロダクト品質・ビジネスインパクト監視」)。
4. グラフの種類(Line Chart、Bar Chart、Tableなど)を選択します。

これで、エンジニアだけでなく、プロダクトマネージャー(PdM)やQAチームもアクセスできる「共通の羅針盤」が完成します。
「今週はどの機能のせいでエンタープライズのユーザビリティが下がっているか」をグラフで視覚的に共有できるため、開発プライオリティの議論が劇的にスムーズになります。

—

まとめ

SentryのSnubaとDiscover 2は、単なる「エラーのログ置き場」を「生きたビジネス・ユーザー行動分析プラットフォーム」に変える魔法の杖です。

  • Snubaという超高速エンジンがあるからこそ、膨大なログから瞬時にカスタム集計ができる。
  • Discoverを使って、ユーザー属性(プランやID)やカスタムタグを軸にデータをスライスする。
  • エラー対応を「作業」から「ビジネスを守る戦略的行動」へとアップデートする。

これをマスターすれば、あなたのチームのプロダクト品質は見違えるほど堅牢になり、周囲からのあなたを見る目も変わるはずです。
ぜひ、今日の業務からDiscoverを開いて、自社のデータをグリグリと触ってみてくださいね。あなたの開発ライフがより快適になることを応援しています!

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