🚨

Sentryのアラート設定で特定のHTTPリクエストのみ監視対象から除外する

2025/04/01に公開

はじめに

私たちのプロジェクトでは、アプリケーションの監視とアラート検知に二通りのアプローチを採用しています。具体的には、以下の2つのツールを併用しています:

基本的にはSentryで監視と検知を行っていますが、データベースの監視はCloud Monitoringを利用しています。
しかし、Sentryを運用していく中で、特定のリクエストによって大量のアラートが発生し、本当に重要なアラートの見落としにつながるリスクが出てきました。今回は、この問題を解決するために設定した、特定のリクエストをSentryのアラートから除外する方法について解説します。

設定したいアラート内容

今回はAPIサーバーのリクエストレイテンシが低下したことを検知するアラート設定を行います。

条件

  • 95%タイルのAPIリクエストの応答が500msを超えた
  • 10分間隔で測定する
  • 特定のAPIリクエストは除外したい

今回のポイントは特定のAPIリクエストは除外したいという点です。不要なアラート検知を抑止するため、バッチ処理など時間がかかることが判明しているAPIはアラート検知の対象外とします。

Sentryの管理画面からのアラート設定方法

1. アラートルールへのアクセス

Sentryのダッシュボードから「Alerts」を選択
「Create Alert Rule」ボタンをクリック

2. アラートタイプの選択

「Transaction Duration」を選択

3. アラート条件の設定

メトリクスの設定
「Set Conditions」をクリックし、以下の項目を設定:
測定項目: Transaction Duration
統計方法: p95(95パーセンタイル値)
時間間隔: 10分
フィルター条件の設定

  1. 監視環境の選択
    staging(ステージング環境)
    production(本番環境)
    など、必要な環境を指定

  2. トランザクションの絞り込み

  • APIサーバーの監視設定: transaction.op is http.server
    APIサーバーへのリクエストに限定して監視します。
  • 特定エンドポイントの除外設定
    メソッド指定での除外:transaction is not DELETE /users
    URLパスでの除外: http.url is not https://hogehoge.com/users
    ※ URLパスでの除外はエンドポイントが単一のHTTPメソッドのみを使用する場合に適しています

閾値の設定
abovebelow閾値の設定を行います

アクションの設定
アラートを検知したときのアクションを設定します。SlackやEmailへの通知やPagerDutyとの連携などが可能です。

アラート名の設定
Sentryで表示するアラート名を設定します。

設定内容の例です

フィルター条件が適切かどうか判断したいとき

Sentryダッシュボードから「Discover」を選択し、検索ボックスに同じ条件を入力します。
監視したいエンドポイントが含まれているか、除外すべきエンドポイントが除外されているか、予期せぬエンドポイントが含まれていないかを確認することができます。

まとめ

以上、Sentryで特定のHTTPリクエストを監視対象から除外する方法でした。Sentryの運用はまだ始まったばかりなので、誤検知の最小化、必要なイベントの見落とし防止、通知頻度の最適化を目指して定期的な見直しと改善を図っていきたいと思います。

レスキューナウテックブログ

Discussion