【入門編】Rollbar Sandbox環境のベストプラクティス:ステージングから本番へのエラー通知ルーティングを安全に分離する – 運用監視・オブザーバビリティ活用バイブル

こんにちは。現場で血反吐を吐きながらシステムを安定させてきた、オブザーバビリティの「深淵」を知るエンジニアです。

今日は、多くの開発者が一度は経験する「地獄のミス」――「テストのつもりが、本番のSlackチャンネルにエラー通知を連打してしまった」という悪夢を、Rollbarを使って完全に封じ込めるための鉄則を伝授します。

Rollbarは単なる「エラー収集機」ではありません。正しく設定すれば、あなたのプロダクトの「健全性の羅針盤」になります。さあ、一緒に構築していきましょう。

—

1. なぜ「環境の分離」がオブザーバビリティの第一歩なのか

Rollbarには「Project Access Token」という鍵があります。これを環境ごとに使い分けるのが鉄則です。

初心者がやりがちな失敗は、`.env`ファイルの設定を間違えて、ローカル環境から本番のRollbarプロジェクトへデータを送ってしまうこと。これを防ぐには、「物理的な分離」と「論理的な分離」の両輪が必要です。

—

2. Rollbarの神髄:環境別セットアップの極意

ステップ1:Rollbarプロジェクトの作成(物理的分離)

Rollbarのダッシュボードで、以下の3つのプロジェクトを個別に作成してください。

  • `my-app-production`
  • `my-app-staging`
  • `my-app-development`

なぜ分けるのか?
本番のノイズを減らすためです。開発中の「意図的なエラー」や「デバッグログ」が本番の統計に混ざると、真に優先すべきバグが見えなくなります。

ステップ2:Access Tokenの環境変数化(鉄則)

絶対にコード内にトークンをハードコードしてはいけません。環境変数(`ROLLBAR_ACCESS_TOKEN`)を活用しましょう。

// config/rollbar.js
const Rollbar = require(‘rollbar’);

const rollbar = new Rollbar({
accessToken: process.env.ROLLBAR_ACCESS_TOKEN, // ここが肝!
environment: process.env.NODE_ENV, // ‘production’, ‘staging’ 等を明示
captureUncaught: true,
captureUnhandledRejections: true,
});

module.exports = rollbar;

—

3. 精度高い「HelloWorld」的動作確認

ただエラーを投げるだけでは不十分です。「本当に正しい環境の、正しい場所に届いているか」を確認します。

以下のスクリプトを走らせてみてください。

// test-rollbar.js
const rollbar = require(‘./config/rollbar’);

// 意図的にエラーを発生させる
try {
throw new Error(“これはテストエラーです。環境分離が成功していれば、指定のプロジェクトにだけ飛ぶはずです。”);
} catch (err) {
rollbar.error(err, {
customData: “Sandboxテスト実行中”,
user: “admin-tester”
});
console.log(“エラーを送信しました。Rollbarダッシュボードを確認してください。”);
}

ここがプロの視点:
テストが成功したら、必ずRollbarのダッシュボードで「Environment」項目を見てください。ここに `production` 以外が表示されていれば、あなたの構成は安全です。

—

4. 事故を防ぐための「3つの絶対防衛ライン」

設定ミスを防ぐために、現場では以下の運用を徹底しています。

1. 環境変数のプレフィックス命名:
ローカルの `.env` には `ROLLBAR_ACCESS_TOKEN_DEV` と明示的に書き、本番環境のCI/CD(GitHub ActionsやAWS Systems Manager等)でのみ `ROLLBAR_ACCESS_TOKEN` が注入されるようにします。
2. `environment` フィールドの強制:
Rollbarの初期化設定で `environment` を動的に渡すことで、ダッシュボード上でのフィルタリングを容易にします。
3. 通知チャンネルの徹底分離:
Rollbarダッシュボードの [Settings] > [Notifications] から、Slack等の通知先を環境ごとに完全に分けます。「本番用チャンネル」には本番プロジェクトのトークンしか繋がらないようにする。これが物理的な防波堤になります。

—

まとめ:オブザーバビリティは「安心」を買う行為

Rollbarのセットアップを適切に行うことは、単なる作業ではありません。「自分たちが書いたコードが、今どういう状態にあるか」を、ノイズなしで直視する環境を作ることです。

環境を分け、トークンを管理し、通知を制御する。この地味な作業こそが、後の巨大な障害を未然に防ぐ「最強の守り」になります。

最初から完璧を目指す必要はありません。まずはローカルと本番を分けるところから。これをマスターすれば、毎日のデプロイが少しだけ、心穏やかなものになるはずですよ。

何か詰まったら、いつでも聞いてくださいね。現場の知見を詰め込んで、また回答します。

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