Sentryバックエンドサービス開発者向けガイド

サービス管理 (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

ポート割当て

ポートサービス説明
9000ClickHouseSnubaデータベース
3021Symbolicatorスタックトレース処理
1218Snubaイベント検索
9092KafkaRelay-Sentry通信
6379Redisキャッシュ/キュー管理
5432PostgreSQLメインデータベース
7899RelaySDKイベント受信
8000Sentry DevAPI+フロントエンド

非同期ワーカー

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

タグ: Sentry バックエンド開発 Docker redis PostgreSQL

7月8日 16:43 投稿