エラーは「修正するもの」ではなく「資産」である:Rollbar × BigQuery で構築するオブザーバビリティの極致
「エラーログを30日で消す」という運用は、現代のプロダクト開発において最大の損失だ。我々が対峙しているのは単なるバグではない。ユーザーの離脱率、コンバージョン低下、そしてプロダクトの将来的な負債の断片だ。
Rollbarは素晴らしいツールだが、標準の保持期間に縛られていては、四半期ごとのエラー傾向や、特定の機能リリースが長期的にもたらしたビジネスインパクトを定量化することはできない。
今日は、RollbarのデータをBigQueryへ流し込み、エラーを「長期的なビジネス資産」へと昇華させるアーキテクチャを解剖する。
—
1. アーキテクチャの核心:Rollbar Insightsからデータレイクへの旅路
RollbarのUIでポチポチとエラーを追うのは今日で卒業だ。Rollbar InsightsのWebhookを利用し、Cloud Functionsを介してBigQueryへストリーム投入するパイプラインを構築する。
推奨アーキテクチャ
`Rollbar (Webhook) -> Cloud Functions (Pub/Sub経由) -> BigQuery -> Looker Studio`
なぜPub/Subを挟むのか? 単純なWebhook直結では、急激なエラーバースト発生時にCloud Functionsがスロットリングされ、データ欠損を起こすからだ。オブザーバビリティのデータは「1ビットたりとも落とさない」のが鉄則である。
—
2. 実践:BigQueryへのデータ転送設定(ベストプラクティス)
Cloud Functions (Go/Python) で受け取る際、Rollbarから送られてくるJSONペイロードをそのまま放り込むのは素人だ。必ず「分析しやすいスキーマ」に正規化して格納せよ。
PythonによるCloud Functions実装例
import functions_framework
from google.cloud import bigquery
エラーデータの構造を定義したスキーマ管理が重要
client = bigquery.Client()
table_id = “your_project.observability.rollbar_errors”
@functions_framework.http
def store_rollbar_error(request):
data = request.get_json()
# 必要なメタデータのみを抽出して正規化
row = {
“event_id”: data.get(“event_id”),
“timestamp”: data.get(“timestamp”),
“error_message”: data.get(“body”, {}).get(“message”),
“environment”: data.get(“environment”),
“occurrences”: data.get(“occurrences”), # 再現性の分析に必須
“url”: data.get(“request”, {}).get(“url”)
}
# BigQueryへのストリーミング挿入
errors = client.insert_rows_json(table_id, [row])
return ‘OK’, 200
—
3. 開発スピードを加速するプロのテクニック
ツールを使いこなす者は、マウスを極力触らない。
Rollbar UIの「隠れた」ショートカット
- `Shift + ?`: キーボードショートカット一覧を即座に表示(必須)。
- `g` → `i`: Issues一覧へ即時遷移。
- `g` → `d`: Deploymentsビューへジャンプ。リリース直後のエラー急増を追う際に必須。
チームの生産性を底上げする「設定共有化」
チーム開発で最も避けたいのは「人によってエラー通知の感度が違う」ことだ。`rollbar.yaml`(またはコード内の初期化設定)をリポジトリルートに配置し、以下のルールを強制せよ。
設定ファイルのベストプラクティス(`rollbar_config.json`)
{
“enabled”: true,
“environment”: “${APP_ENV}”, // 環境変数の強制
“code_version”: “${COMMIT_SHA}”, // デプロイハッシュとの紐付け(必須)
“check_ignore”: {
“instances”: [“ignore_404_static_assets”], // ノイズ削減
“rules”: [
{“path”: “error.message”, “match”: “.is not a function.”} // 特定のパターンを抑制
]
}
}
—
4. Looker Studioで可視化すべき「3つのKPI」
ただエラー数を並べるだけのダッシュボードはゴミだ。経営層やPMが意思決定できる指標を表示せよ。
1. エラー収束率 (Error Burn-down): リリース後、エラーが何日で鎮火しているか。開発の習熟度を示す指標。
2. ユーザーインパクトスコア: `エラー数 × 影響を受けたユーザー数`。単なるエラーの総数より、ビジネス上の優先度が明確になる。
3. 環境別デグレード検知: 本番環境とステージング環境でのエラー発生乖離。CI/CDパイプラインの品質を証明する。
—
結論:エンジニアは「エラーの番人」から「データの分析家」へ
Rollbarの30日という制限は、システムが健全であれば問題ないかもしれない。しかし、複雑な分散システムにおいて「長期的なエラー傾向」を把握することは、技術的な意思決定(リファクタリングすべき場所、廃止すべき機能)の羅針盤となる。
明日から、Rollbarをただの通知ツールとしてではなく、「プロダクトの健全性を映し出すデータベースのソース」として扱ってほしい。
データは嘘をつかない。君たちのコードが持つ「真の品質」を、BigQueryで可視化する準備はできているか?