2024.10.01
【勉強】ミドルウェア・アプリケーションのEOL・EOSLについて学んでみた
2023.08.02
開発環境・ツールSentryのAlertフィルタリング方法
本記事では、エラートラッキングサービスのSentryを使用した際のAlertのフィルタリング方法をいくつか解説します。
アプリケーションでエラーが出た時に、それをキャッチしてSlackに通知を飛ばす……みたいな構成にする場合、「ノイズになるエラーが多すぎて重要なエラーがわかりにくい!」ということがあると思います。
このノイズとなるエラーについて、Sentryでフィルタリングする方法について解説します。
Alertのフィルタリング方法については、主に以下の三つがあります。
Sentryに通知されたエラー(正確に言うとエラー以外でも通知できる)は、issueという形で管理されます。
このissueをignoreすると、Alertに設定している条件でも通知が飛ばなくなります。
ignoreは各issue画面や、issue一覧などから出来ます。issue画面だと、画像右上のボタンからignore出来ます。
この機能を使ってフィルタリングする利点としては、以下の通り。
issueは発生したソースコードの行ごとなど、Sentry上のルールでグループ化されます。
「同じエラーなのに別々のissueになってしまって管理が面倒」という場合は、「Merge」でissueを一つまとめてからignoreしてください。
Mergeはissueの一覧でチェックマークを付けた後に、Mergeボタンを押すことで出来ます。(Merge出来るのは同じ種類のエラー等、一定の条件があるようです)
詳しくはMergeの公式ドキュメントもご確認してください。公式ドキュメントには、他にもissueのグループ化方法が書いています。
Slackなどに通知を飛ばしているAlert自体もフィルタリング機能を持っています。
かなり細かい条件が設定できます。例としては以下のような条件。
画像のようにAlertの「Edit Rule」画面で設定できます。上記以外にもかなり細かい条件を設定できます。詳しくは、公式ドキュメントのアラートの作成や、アラートのベストプラクティスを確認してください。
また、Alertでは通知先のSlackのチャンネルなども変更できるので、重要なエラーだけSlackチャンネルを振り分けるといったこともできます。
上記のignoreと組み合わせて使うこともできますが、両方でフィルタリングすると、どちらの条件でフィルタリングされたかわかりづらくなります。運用上は片方に寄せるか、それぞれ役割を決めて設定・管理するのがよいと思います。
アプリケーション内のSentrySDKのconfigでSentryに通知するエラーを限定することが出来ます。
excluded_exceptionsを使うと、指定したエラーを通知から除外できます。
以下の例はRubyでHTTP404エラーを通知から排除しています。
config.excluded_exceptions += ['ActionController::RoutingError', 'ActiveRecord::RecordNotFound']
詳細は公式ドキュメントをご確認ください。
他にも送信前に判定を行うbefore_sendや、特定のトランザクションがSentryに通知しないように判定できるtraces_samplerやbefore_send_transactionなどもあります。こちらは公式ドキュメントがありますので、そちらをご確認ください。
これらのアプリケーションでのエラーフィルタリングは、Sentryにそもそも通知を行わないため、issueとして記録されません。
このため「不要なノイズだと思っていたけど、実は不具合が裏に隠れていた」みたいな場合に、後からの追跡が難しくなる場合があります。原因がはっきりしている記録が必要ないエラーだけをアプリケーション側で指定し、基本的にはSentryに通知してSentry側でフィルタリングすることをおすすめします。
Sentryは多機能なエラートラッキングサービスです。通知のフィルタリングについても色々な方法で行えます。その一方であちこちでフィルタリングすると使用者側が混乱する可能性があります。
フィルタリングする際にはプロジェクト内で運用方針を定めてルール化し、「どこで何をフィルタリングしているのか」がわかるようにしておくようにしましょう。
【記事への感想募集中!】
記事への感想・ご意見がありましたら、ぜひフォームからご投稿ください!【テクノデジタルではエンジニア/デザイナーを積極採用中です!】
下記項目に1つでも当てはまる方は是非、詳細ページへ!Qangaroo(カンガルー)
【テクノデジタルのインフラサービス】
当社では、多数のサービスの開発実績を活かし、
アプリケーションのパフォーマンスを最大限に引き出すインフラ設計・構築を行います。
AWSなどへのクラウド移行、既存インフラの監視・運用保守も承りますので、ぜひご相談ください。
詳細は下記ページをご覧ください。
最近の記事
タグ検索