sentry-python-setup について
Pythonプロジェクトへの Sentry 導入と設定を案内するスキルです。エラー監視、ログ、トレースを設定する開発者向けに、主要フレームワークや非同期アプリ、動作確認を扱います。
主な機能
- 01sentry-sdk のインストール
- 02Sentry の初期化と設定
- 03Django、Flask、FastAPI などに対応
- 04環境変数の設定
- 05イベント確認とトラブルシューティング
活用シーン
- 01Python アプリにエラー監視を追加
- 02非同期アプリで Sentry を設定
- 03イベントやトレースの未送信を調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ getsentry/ sentry-agent-skills --skill sentry-python-setupインストール後、Claude Code で/sentry-python-setupを入力して読み込まれたか確認します。
詳細
Sentry Python のセットアップ
Python プロジェクトに Sentry をインストールして設定します。
このスキルを使う場面
- ユーザーが Python アプリに「Sentry を追加」または「Sentry をインストール」したい場合
- ユーザーが Python でエラー監視、ログ記録、トレースを行いたい場合
- ユーザーが「sentry-sdk」や Python フレームワーク(Django、Flask、FastAPI)に言及した場合
重要: 以下の設定オプションとコードサンプルは例です。API やデフォルト値が変更されている可能性があるため、実装前に必ず docs.sentry.io で確認してください。
インストール
pip install sentry-sdk
設定
アプリケーションのできるだけ早い段階で初期化します。
import sentry_sdk
sentry_sdk.init(
dsn="YOUR_SENTRY_DSN",
send_default_pii=True,
# Tracing
traces_sample_rate=1.0,
# Profiling
profile_session_sample_rate=1.0,
profile_lifecycle="trace",
# Logs
enable_logs=True,
)
非同期アプリケーション
非同期アプリの場合は、非同期関数内で初期化します。
import asyncio
import sentry_sdk
async def main():
sentry_sdk.init(
dsn="YOUR_SENTRY_DSN",
send_default_pii=True,
traces_sample_rate=1.0,
enable_logs=True,
)
# ... rest of app
asyncio.run(main())
フレームワークとの統合
上記と同じ sentry_sdk.init() 呼び出しを使用します。アプリの起動前に実行される場所に配置してください。
| フレームワーク | 初期化する場所 | 備考 |
|---|---|---|
| Django | settings.py の先頭 | Django を自動検出します。追加のインストールは不要です |
| Flask | app = Flask(__name__) の前 | Flask を自動検出します |
| FastAPI | app = FastAPI() の前 | FastAPI を自動検出します |
| Celery | Celery ワーカーの設定内 | Celery を自動検出します |
| AIOHTTP | アプリの作成前 | AIOHTTP を自動検出します |
設定オプション
| オプション | 説明 | デフォルト | 最小 SDK バージョン |
|---|---|---|---|
dsn | Sentry DSN | None(指定しない場合、SDK は何もしません) | — |
send_default_pii | ユーザーデータを含める | None | — |
traces_sample_rate | トレースするトランザクションの割合 | None(トレースは無効) | — |
profile_session_sample_rate | プロファイリングするセッションの割合 | None(プロファイリングは無効) | 2.24.1+ |
profile_lifecycle | プロファイリングモード("trace" または "manual") | "manual" | 2.24.1+ |
enable_logs | Sentry にログを送信する | False | 2.35.0+ |
environment | 環境名 | "production"(または SENTRY_ENVIRONMENT 環境変数) | — |
release | リリースバージョン | 自動検出 | — |
環境変数
SDK は以下を自動的に読み取ります。
SENTRY_DSN=https://[email protected]/456
SENTRY_ENVIRONMENT=production
SENTRY_RELEASE=1.0.0
sentry-cli(ソースマップ、リリース)では、以下も設定します。
SENTRY_AUTH_TOKEN=sntrys_xxx
SENTRY_ORG=my-org
SENTRY_PROJECT=my-project
または、コード内で DSN を渡します。
import os
import sentry_sdk
sentry_sdk.init(
dsn=os.environ.get("SENTRY_DSN"),
# ...
)
検証
# Intentional error to test
division_by_zero = 1 / 0
または、手動でキャプチャします。
sentry_sdk.capture_message("Test message from Python")
トラブルシューティング
| 問題 | 解決策 |
|---|---|
| エラーが表示されない | init() が早い段階で呼び出されていることを確認し、DSN を確認します |
| トレースがない | traces_sample_rate を 0 より大きい値に設定します |
| IPython のエラーがキャプチャされない | 対話型シェルではなく、ファイルから実行します |
| 非同期エラーが見つからない | 非同期関数内で初期化します |
コメント
Markdown 対応