LoginSignup
1
1

モニタリングツールのSentryを導入してみた

Posted at

はじめに

自作アプリを運用するにあたってエラーの検知やパフォーマンス状況を監視するためにモニタリングツールを導入することになった(なっていはいないが、、、)

そもそもChatGPTに提案されました

...エラーハンドリング、ロギング、モニタリングなど、さらに多くの要素を考慮する必要があります。

エラーハンドリング、ロギングなら日々実装しているので問題ないですが
モニタリングの文字には???でした

ChatGPTにモニタリングのツールを聞いて、それをネットで調べていたところ
モニタリングツールは人気2トップがありました

それが
・Sentry
・New Relic

Sentryはエラーの検知に向いていて、New Relicはパフォーマンスを監視するのに向いています

今回はパフォーマンスの重要度を低くしているため安定運用のためにSentryを選択しました。
ChatGPTさんは両方取り入れるのが良いとのことでしたが、実際に両方取り入れている企業様はいらっしゃるんでしょうか?

Python(FW:Django)製のアプリにSentryを導入していきます

・Sentry公式ドキュメント

Sentryの導入手順

1.会員登録

https://sentry.io/signup/?original_referrer=https%3A%2F%2Fwww.google.com%2F&utm_campaign=Google_Search_Brand_SentryKW_ROW_Alpha&utm_content=g&utm_id=%7B20403208976%7D&utm_medium=cpc&utm_source=google&utm_term=sentry
スクリーンショット 2023-09-09 20.40.37.png

今回は無料会員にしました
ちなみに、料金プランはこちら(Google翻訳しています)
スクリーンショット 2023-09-09 20.37.58.png
https://sentry.io/pricing/?original_referrer=https%3A%2F%2Fwww.google.com%2F&utm_campaign=Google_Search_Brand_SentryKW_ROW_Alpha&utm_content=g&utm_id=%7B20403208976%7D&utm_medium=cpc&utm_source=google&utm_term=sentry

2.メール認証
送られてきたConfirm Emailのメールを確認します

ここからはSentryのWebサイトを操作していきます(Google翻訳しています)
3.「セントリーをインストールする」の「始める」をクリックします
screencapture-self-0734100ae-sentry-io-onboarding-welcome-2023-09-09-20_26_23.png

4.Django(ジャンゴ)を選択します
screencapture-self-0734100ae-sentry-io-onboarding-select-platform-2023-09-09-20_26_56.png

5.SDKを設定します
screencapture-self-0734100ae-sentry-io-onboarding-setup-docs-2023-09-09-20_46_04.png

SentryのSDKをインストール

pip install --upgrade sentry-sdk

setting.pyに追加します

setting.py
import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration

sentry_sdk.init(
    dsn="https://xxx.your-dsn",
    integrations=[DjangoIntegration()],
    # If you wish to associate users to errors (assuming you are using
    # django.contrib.auth) you may enable sending PII data.
    send_default_pii=True,
    # Set traces_sample_rate to 1.0 to capture 100%
    # of transactions for performance monitoring.
    # We recommend adjusting this value in production.
    traces_sample_rate=1.0,
    # Set profiles_sample_rate to 1.0 to profile 100%
    # of sampled transactions.
    # We recommend adjusting this value in production.
    profiles_sample_rate=1.0,
)

urls.pyを編集してエラーを発生させてSentryに検知させます

urls.py
# ...
division_by_zero = 1 / 0
# ...
urlpatterns = [
    # ...
    path('sentry-debug/', division_by_zero),
]

VScodeなどのエディタで編集しており、runserverを実行している時にコンソールに以下が出力されると思います

    division_by_zero = 1 / 0
                       ~~^~~
ZeroDivisionError: division by zero

SentryのWebサイトを見ると
画面下部のメッセージが「エラー待ち」の赤文字から「エラーを受信しました」の緑文字に変わっています。
スクリーンショット 2023-09-09 21.04.38.png

以上

アプリが実行中にエラーが発生するとSentryの管理画面にエラーの情報が表示されます
サンプルがてら置いておきます
20220630130955.png
(https://techblog.cartaholdings.co.jp/entry/archives/4091 より引用)

おわりに

裏タイトルは「Djangoアプリに監視ツールSentryを導入した」になるんでしょうか
Sentryはリアルタイムにエラーをキャッチし、エラーの情報を知らせてくれます。
これにより、エンジニアはエラーの原因を迅速に特定し、修正することができます。
初心者でも最初のセットアップから実装まで短い時間でできたので導入の手間は軽いと思います。
エラーの対応を迅速にしてUXを向上させましょう!

1
1
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
1
1