サービス管理 (devservices)
Sentryは開発環境で必要な依存サービスを管理するdevservices抽象化レイヤーを提供します。
sentry devservices [オプション] コマンド [引数]
オプション:
--help ヘルプ表示
コマンド:
attach フォアグラウンドで単一サービス実行
down 全サービス停止
rm 全サービスと関連データ削除
up 依存サービスの起動/更新
サービスログの確認
# Snubaログを追跡
docker logs -f sentry_snuba
CLIクライアントの実行
# Redis
docker exec -it sentry_redis redis-cli
# ClickHouse
docker exec -it sentry_clickhouse clickhouse-client
# PostgreSQL
docker exec -it sentry_postgres psql -U postgres
コンテナ状態のリセット
# 全サービス関連データ削除
sentry devservices rm
# 単一サービス削除例
sentry devservices rm postgres
ポート割当て
| ポート | サービス | 説明 |
|---|---|---|
| 9000 | ClickHouse | Snubaデータベース |
| 3021 | Symbolicator | スタックトレース処理 |
| 1218 | Snuba | イベント検索 |
| 9092 | Kafka | Relay-Sentry通信 |
| 6379 | Redis | キャッシュ/キュー管理 |
| 5432 | PostgreSQL | メインデータベース |
| 7899 | Relay | SDKイベント受信 |
| 8000 | Sentry Dev | API+フロントエンド |
非同期ワーカー
SentryはCeleryベースの非同期タスクキューを採用しています。
タスク登録
from sentry.tasks.base import instrumented_task
@instrumented_task(
name="custom.task_operation",
queue="priority_queue",
retry_delay=300,
max_attempts=5
)
def execute_operation(task_type, **kwargs):
# タスク処理ロジック
ワーカー実行
sentry run worker
ブローカー設定
Redis設定例
BROKER_URL = "redis://authpass@host:6379/1"
RabbitMQ設定例
BROKER_URL = "amqp://user:pass@host:5672/vhost"
ストレージ設定
ノードストレージ
# Djangoバックエンド
SENTRY_NODESTORE = 'sentry.nodestore.django.DjangoNodeStorage'
ファイルストレージ
# Google Cloud設定例
filestore.backend: "gcs"
filestore.options:
bucket_name: "storage-bucket"
時系列データストレージ
SENTRY_TSDB = 'sentry.tsdb.redissnuba.RedisSnubaTSDB'
ライトバッファ
SENTRY_BUFFER = 'sentry.buffer.redis.RedisBuffer'
SENTRY_BUFFER_OPTIONS = {'cluster': 'buffer'}
メトリクス設定
# StatsD設定例
SENTRY_METRICS_BACKEND = 'sentry.metrics.statsd.StatsdMetricsBackend'
SENTRY_METRICS_OPTIONS = {'host': 'metrics-host', 'port': 8125}
クォータ管理
SENTRY_QUOTAS = 'sentry.quotas.redis.RedisQuota'
SENTRY_QUOTA_OPTIONS = {'cluster': 'quota'}
レート制限設定
# システム全体
system.rate-limit: 1000
# ユーザー単位
auth.user-rate-limit: 50
チャートレンダリング
Chartcuterieサービスによるグラフ生成:
from sentry.charts import generate_chart, ChartType
chart_url = generate_chart(ChartType.PERFORMANCE_TREND, metrics_data)
開発環境設定
# config.yml
chart-rendering.enabled: true
# 設定ビルド
yarn build-chartcuterie-config
# サービス起動
sentry devservices up chartcuterie