
※ 以下の記事は Sentryでエラー監視を始めよう!① 導入編 の続きになります
STEP 1 アカウントを用意しよう
STEP 2 アプリケーションへのSentry導入
こんな感じに導入を進めて、Sentryダッシュボードでエラーも確認できたと思います。
次は、実際の活用法です!
STEP 3 ソースマップ設定
STEP 4 本番環境に向けて便利な設定を追加
STEP 5 ユーザー識別情報を送信しよう
STEP 3 ソースマップ設定
ビルド時にminifyされるアプリは、エラーが発生してもコードのどの部分でエラーが発生したのか人間には分かりません。そのため、ビルド時にソースマップをSentryに登録する設定が必要です
Viteを使っている環境なら、以下のように簡単に設定できます。
① プラグイン導入
yarn add -D @sentry/vite-plugin
② Auth Token を取得
ダッシュボードから作成できます
https://YOUR_PROJECT.sentry.io/settings/
My Account > api > auth-tokens
③ ビルドツールの設定へ追加
import { sentryVitePlugin } from '@sentry/vite-plugin';
import vue from '@vitejs/plugin-vue';
import { defineConfig, loadEnv } from 'vite';
// SEE: https://vitejs.dev/config/
export default ({ mode }) => {
process.env = { ...process.env, ...loadEnv(mode, process.cwd()) };
return defineConfig({
...
build: { sourcemap: true }, // この設定が重要
plugins: [
vue(),
// ソースマップ設定 配列の最後に追加
// SEE: https://docs.sentry.io/platforms/javascript/guides/vue/sourcemaps/
sentryVitePlugin({
// プロジェクトの設定値と一致させる必要あり
// AuthTokenは環境変数として読み込むのが望ましい
org: 'YOUR_ORGANIZATION',
project: 'YOUR_PROJECT',
authToken: process.env.SENTRY_AUTH_TOKEN,
sourcemaps: {
// ビルド出力先のディレクトリを指定
assets: ['./dist/**/*.js'],
ignore: ['./node_modules/**'],
},
}),
],
});
};
上記のように設定することでビルド時にソースマップが作成され、自動的にSentryへ送信されます
Viteの他、いろいろなビルドツールに対応しているので確認してみてください
STEP 4 本番に向けて便利な設定を追加
このまま使っても問題はないですが、SentrySetup.ts
へ使いやすくなるような設定を追加しましょう
import * as Sentry from '@sentry/vue';
import { App } from 'vue';
import { Router } from 'vue-router';
export const sentrySetup = (app: App, router: Router) => {
// dsnコードと環境名を読み込み。環境変数として定義するのが望ましい
const SENTRY_DSN = import.meta.env.VITE_SENTRY_DSN as string;
const APP_ENVIRONMENT = import.meta.env.VITE_APP_ENVIRONMENT as string;
const APP_URL = import.meta.env.VITE_APP_URL as string;
Sentry.init({
app,
dsn: SENTRY_DSN,
environment: APP_ENVIRONMENT,
integrations: [
Sentry.browserTracingIntegration({ router }),
],
tracePropagationTargets: ['localhost', APP_URL],
// 開発中にlocalhostからエラーを送信したくない
enabled: APP_ENVIRONMENT !== 'local', // 追加
// サンプリングレート設定
// NOTE: Transaction上限を確認しながら設定する, 開発中はすべてのエラーを送信
tracesSampleRate: import.meta.env.MODE === 'prod' ? 0.05 : 1.0, // 追加
beforeSend(event, hint) {
if (event.exception) {
console.error(`[Exeption handled by Sentry]: (${hint.originalException})`, { event, hint });
}
return event;
},
});
};
enabled
Sentryへエラーを送信する環境(またはURL)を設定できます
開発中、ローカルからのエラーは基本キャッチしなくても良いはずなので、弾いてしまいましょう
tracesSampleRate
リリースされると、膨大なユーザーが使うことが予想され、すべてのエラーを拾っていてはすぐにTransaction上限を超えてしまいます
サンプリングレートを適切に設定して、エラーを拾いすぎないようにしましょう
他にもいろいろと便利な設定があります。使いやすいように随時カスタマイズしてください!
STEP 5 ユーザー識別情報を送信しよう
クライアントテスト時やリリース後、どのユーザーが直面したエラーなのか判定したい場合があると思います
以下のように、好きな情報をエラーに付与することができます
(設定しなくても多くの情報を確認できます)
<script setup lang="ts">
import * as Sentry from '@sentry/vue';
onMounted(async () => {
// userIdの解決
const userId = await getUserId();
// Sentryにユーザー情報 (UID, 環境情報) を登録
Sentry.setUser({ id: userId, environment: APP_ENVIRONMENT });
...
</script>
まとめ
Sentryはいいぞ!!
エラー監視して、無駄な情報の齟齬を無くしましょう!