はじめに
自作アプリを運用するにあたってエラーの検知やパフォーマンス状況を監視するためにモニタリングツールを導入することになった(なっていはいないが、、、)
そもそも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
今回は無料会員にしました
ちなみに、料金プランはこちら(Google翻訳しています)
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.「セントリーをインストールする」の「始める」をクリックします
SentryのSDKをインストール
pip install --upgrade sentry-sdk
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に検知させます
# ...
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サイトを見ると
画面下部のメッセージが「エラー待ち」の赤文字から「エラーを受信しました」の緑文字に変わっています。
以上
アプリが実行中にエラーが発生するとSentryの管理画面にエラーの情報が表示されます
サンプルがてら置いておきます
(https://techblog.cartaholdings.co.jp/entry/archives/4091 より引用)
おわりに
裏タイトルは「Djangoアプリに監視ツールSentryを導入した」になるんでしょうか
Sentryはリアルタイムにエラーをキャッチし、エラーの情報を知らせてくれます。
これにより、エンジニアはエラーの原因を迅速に特定し、修正することができます。
初心者でも最初のセットアップから実装まで短い時間でできたので導入の手間は軽いと思います。
エラーの対応を迅速にしてUXを向上させましょう!