6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Sentryでエラーをモダンに確認しよう!

Posted at

Sentryとは?

Sentryはエラーモニタリングツールになります!

アプリケーションのエラーや例外をリアルタイムで検出し、
詳細な情報を収集・表示するためのツールです。

Sentryを導入するといいこと

Sentryを導入することで、以下の利点があります:

Sentryの利点

  • リアルタイムなエラー検知:エラー発生後通知を受け取り、早期対応が可能
  • エラーレポート可視化:スタックトレース等、エラーが発生した状況をすぐに把握可能
  • 頻度やユーザー影響の確認:エラーの回数、どのユーザーに影響があったのかを確認することができ、優先度を決めやすくなります!

Sentryの導入方法(Spring Boot)

今回はSpring Bootのプロジェクトを例に、導入をしてみます。

1. Sentryの新規登録

下記からSentryの公式から新規登録をしてください!
個人開発レベルであれば、課金は不要かと個人的に思います。

新規登録

公式ページにアクセスすると下記のような画面が表示されるので、
各種入力をしましょう。

スクリーンショット 2024-11-09 17.37.26.png

Install

登録が終わったら早速「Install Sentry」からStartしましょう!

スクリーンショット 2024-11-09 15.25.06.png

SDKを入れる

今回はJavaを例に説明していますが、色々SDKが用意されてます!

スクリーンショット 2024-11-09 15.25.22.png

2. 依存関係を追加

gradleとmavenで記載方法は異なりますが、
バージョンは導入時の内容に合わせてください!

mavenの場合

pom.xml
<dependency>
    <groupId>io.sentry</groupId>
    <artifactId>sentry-spring-boot-starter-jakarta</artifactId>
    <version>6.19.1</version>
</dependency>
<dependency>
    <groupId>io.sentry</groupId>
    <artifactId>sentry-logback</artifactId>
    <version>6.19.1</version>
</dependency>

gradleの場合

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'io.sentry:sentry-spring-boot-starter-jakarta:6.19.1'
    implementation 'io.sentry:sentry-logback:6.19.1'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

3. SentryのDSNを設定

次にapplication.propertiesにSentryの
DSN(プロジェクトの識別子)を追加します!

application.properties
# DSNはSentryを導入時に
sentry.dsn=https://<YOUR_SENTRY_DSN>@sentry.io/<PROJECT_ID>

# 環境を指定(production, stagingなど)
sentry.environment=development

DSNを設定する必要がありますが、DSNの説明は以下になるので
こちらはご確認ください!

https://docs.sentry.io/concepts/key-terms/dsn-explainer/

4. Springの方でエラーを発生させる

Springの方でSentryに意図的なエラーを発生させましょう!

sampleController.java
@Controller
public class ErrorController {
    
    @GetMapping("/a")
    public String generateError() {
        try {
            throw new Exception("This is Test.");
        } catch (Exception e) {
            Sentry.captureException(e);
        }
    }
}

アプリケーションを起動し、
「/a」 にアクセスしてエラーがSentryに表示されるか確認します。
(「/a」は今思うと少し適当でしたが・・w)

5. エラーをSentryで見てみよう!

キターーーーーーー!

スクリーンショット 2024-11-09 17.45.27.png

少々見づらいので、拡大。
「This is Test.」のメッセージがしっかり送信されてますね!

スクリーンショット 2024-11-09 17.46.24.png

どんな情報が見れるの?

下記ページにアクセスしてみましょう。

スクリーンショット 2024-11-09 17.46.24.png

エラーが出た箇所

エラーレベルやエラーが出たURL等が出てますね!
後はGETメソッド等などの情報もありそうです。

スクリーンショット 2024-11-09 17.52.57.png

スタックトレース

スタックトレース等もみれます。

スクリーンショット 2024-11-09 17.54.52.png

発生頻度

後はエラーの回数や頻度が分かります。
今回は手動で1度エラーを発生しただけですが、

  • 優先度
  • 頻度
  • ユーザ数

まで画面から把握ができそうですね!

スクリーンショット 2024-11-09 17.53.03.png

Slack通知

左側メニューから、Settings > Integrations で
様々な連携ができることがわかります!

スクリーンショット 2024-11-09 17.56.29.png

※連携を行うにはteamPlan以上が必要です。

通知はこちらの記事で詳しく確認できます!

料金プラン

無課金ですと1人のみの使用で、単純なエラーや通知程度ならできそうです!
Slack等の通知や複数の開発者が使用できるには、「Team」プラン以上が必要みたいです。

  • Team:1ヶ月26ドル
  • Business:1ヶ月80ドル
  • Enterprise:必要な機能だけ選択するプラン?(ご存知の方教えていただけると!)

スクリーンショット 2024-11-09 18.01.51.png

まとめ

構築お疲れ様でした!
今回はJavaを例にしましたが、他言語でも結構簡単に
エラーが見えるようになります。

情報も多いので、個人開発にも現場にも役に立てるかと
思います!

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?