2.7K Views
February 26, 25
スライド概要
2025.02.26 そのオブザーバビリティツール、どう活かした?実践例と効果の全貌 エラーからパフォーマンスまで監視! 新規プロダクトでのSentry活⽤法 ファインディ株式会社 CTO室 Tools開発 林 優太 © Findy Inc. 1
⾃⼰紹介 ● ● ● ⽒名:林 優太 所属:ファインディ株式会社 (2024/4 ~) 役割:フルスタックエンジニア Findy Toolsの開発をフルスタックに担当。 RailsでのGraphQL APIやNext.jsやReactでのフロントエンドの開発。 𝕏: @hyuta555 また、SentryやDatadogなどの監視ツールの設定や活⽤も⾏っている。 © Findy Inc. 2
Findy Tools について 開発ツールのレビューや技術スタックの情報が集まるサイト。 https://findy-tools.io https://findy-tools.io/products/sentry/22/268 © Findy Inc. 3
概要 ● ● ● ● ● ● Sentryの紹介 エラートラッキングと管理 分散トレース WebVitals 応⽤ まとめ © Findy Inc. 4
Sentryの紹介 © Findy Inc. 5
Sentryの紹介 フルスタックモニタリングツール アプリケーションのエラートラッキングやそれに関連するモニタリングができるツール。 エラーをリアルタイムで検出し、通知や原因特定の情報収集、管理を⾏う。 また、TraceやProfileなどのパフォーマンスに関する情報も収集できる。 ● ● ● ● ● ● Error SessionReplay WebVitals etc... Error Trace Profiling etc... Findy Toolsでの活⽤例 © Findy Inc. 6
Sentryの紹介
導⼊が⼿軽
●
●
サポートされている⾔語やフレームワークが多い
○ Go, Java, JavaScript, PHP, Python, Ruby, Perl, Rust, Scala etc...
○ Android, Cocoa, Flutter, React, Next.js, Rails etc...
基本的にSentrySDKをアプリケーションに追加して、設定ファイルにクライアントキー(DSN)を
設定するだけで使い始めることができる
Railsでの導⼊例
# gemをインストール
gem "sentry-ruby"
gem "sentry-rails"
# SDKを初期化 config/initializers/sentry.rb:
Sentry.init do |config|
config.dsn = 'https://<key>@sentry.io/<project>'
config.breadcrumbs_logger = [:active_support_logger]
config.traces_sample_rate = 1.0
end
参考:
https://sentry.io/platforms
https://sentry.io/for/rails
© Findy Inc. 7
エラートラッキングと管理 © Findy Inc. 8
エラートラッキングと管理 エラートラッキング アプリケーションで発⽣したエラーを⾃動的に収集し、発⽣状況を確認できる。 (例) RailsでDBのカラムのStringの最⼤値を超えた値を⼊れた際のエラー © Findy Inc. 9
エラートラッキングと管理 エラーの詳細例 © Findy Inc. 10
エラートラッキングと管理 エラーの詳細例 実⾏されたSQL↓ サーバーの環境やユー ザの環境の情報 © Findy Inc. 11
エラートラッキングと管理 ⼀覧でIssue(エラー)を管理 Issueという単位で同じ箇所の エラーをまとめて管理できる。 活⽤法 毎週1回、過去1週間に記録さ れたIssueを開発チームで確認 するMTGをしている。 修正できるものや調査が必要 なものはGitHubのIssueとして 記録。 対処のできないノイズのIssue はアーカイブする。 © Findy Inc. 12
エラートラッキングと管理 Slackへのアラート エラーの発⽣発⽣回数や新規に検知したエラーで、絞り込んでSlackへアラートのメッセージを送信できる。 活⽤法 Slackのアラートチャンネルは新 規メッセージで通知が来るよう に設定。 エラーが発⽣した時に、すぐに 気がつける仕組みを構築。 ただ、調査に時間がかかるもの や件数が少ないものは後で対処 している。 © Findy Inc. 13
分散トレース © Findy Inc. 14
分散トレース Next.jsからRailsリクエストまでの⼀連を追跡 同じOrganizationにSentryのProjectを 作成することで、⾃動的に分散Traceが 有効になる。 Next.jsへのリクエスト時にサーバサイ ドで実⾏されたRailsのAPI実⾏のト レースがNext.jsのTraceの配下に表⽰ される。 活⽤法 読み込みが遅いページやエラー発⽣ 時にTraceを確認。 フロントかバックエンドAPIのどこ に原因があるのかの調査が容易。 © Findy Inc. 15
分散トレース サンプリングの設定に注意 分散トレースのサンプリングは、「ヘッドベース」でサンプリングが決定する。 ヘッドベースとはトレースの開始した際にサンプリングレートが決まるもの。 次の図のBackendでサンプリングを設定しても、Browserのサンプリング値が優先される。 (例) Browserのサンプリングレート: 1 Backendのサンプリングレート: 0.5 →Backendのサンプリングレートは Browserのサンプリングが適⽤されて1に 引⽤: https://docs.sentry.io/concepts/key-terms/tracing/distributed-tracing/#consistency-within-a-trace © Findy Inc. 16
Web Vitals © Findy Inc. 17
Web Vitals フロントエンドのパフォーマンス計測 ユーザのブラウザで計測されたWebVitalsを収集して解析できる。 Frontendのみで利⽤可能。 活⽤法 サイト全体やページグループごとに スコアを確認できる。 スコアが悪化しているページを特定 して、原因を特定しやすい。 SEOにも影響するので定期的に⾒直 している。 © Findy Inc. 18
応⽤ © Findy Inc. 19
応⽤ contextにuserを設定 Sentryへ送信する情報にアプリケーション固有のユーザ情報を指定できる。 設定可能な値: id, username, email, ip_address トレースやErrorに表⽰される # railsでの例 # application_controller.rbなどで指定 Sentry.set_user(id: @current_user.id) 活⽤法 エラー発⽣時や問い合わせ起因の調査で、ユーザを特 定できるので、調査がしやすい。 参考: https://docs.sentry.io/platforms/ruby/guides/rails/enrichingevents/identify-user/ © Findy Inc. 20
応⽤ Datadogとの連携 DatadogのSentryインテグレーションと連携することでDatadogからエラーイベントを取得できる。 活⽤法 Datadogのダッシュボードで他のメトリクスやイベントと⼀元管理して確認している。 参考: https://docs.datadoghq.com/ja/integrations/sentry/ © Findy Inc. 21
応⽤
ブラウザーのノイズのエラーを除外
ブラウザで発⽣するエラーはノイズが多い
(例)
● ブラウザ固有のもの
● ブラウザ拡張機能のもの
● サードパーティスクリプト etc
活⽤法
1.
2.
ignoreErrors にエラーメッセージを指
定してSentryの送信対象から除外
thirdPartyErrorFilterIntegration
アプリケーションコードのビルド中にアプ
リケーションのJSをマークし、それ以外を
サードパーティとして扱うことができる。
JavaScript SDK 8.10.0から利⽤可能
// sentry.client.config.js
Sentry.init({
dsn: process.env.SENTRY_DSN,
integrations: [
Sentry.thirdPartyErrorFilterIntegration({
filterKeys: ['product'],
behaviour:
'drop-error-if-exclusively-contains-third-party-frames',
}),
],
ignoreErrors: [
'AbortError: Aborted',
],
});
参考: https://docs.sentry.io/platforms/javascript/configuration/filtering/
© Findy Inc. 22
まとめ © Findy Inc. 23
まとめ ● エラートラッキングツールとして⾼機能 ● 導⼊がSDKのインストールのみで⼿軽 ○ 新規プロダクトで導⼊しやすい ● フロントエンドからバックエンドなどの、分散トレースが利⽤できる ○ 調査やパフォーマンスチューニング ● WebVitalsでフロントエンドのパフォーマンスモニタリング ● 以上より、新規プロダクトで多くの活⽤法がある © Findy Inc. 24
FIndy Toolsではエンジニアを募集しています! 【新規事業】フルスタックエンジニア_Dev https://herp.careers/v1/findy/OizlnuRrN5HI © Findy Inc. 25
ご清聴ありがとうございました! © Findy Inc. 26