Sentryを見ていていて、OTelId というのがあった
調べたところ、これが OpenTelemetry だとわかったのだが、OpenTelemetry に詳しくなかったので調べた
OpenTelemetry は Cloud Native Computing Foundation(CNCF)がホストする、可観測性のためのオープンソースフレームワーク
主要な特徴
- ベンダー中立なAPIとSDKの提供
- 分散トレーシング、メトリクス、ログの統合的な収集
- 多言語対応(Java, Python, Go, JavaScript など)
- 既存の監視ツールとの互換性
主要なコンポーネント
1. トレーシング(Tracing)
分散トレーシング マイクロサービス間のリクエストの流れを追跡する機能
// トレーシングの基本的な実装例 const tracer = opentelemetry.trace.getTracer('my-service'); const span = tracer.startSpan('processRequest'); try { // ビジネスロジック await processBusinessLogic(); } finally { span.end(); }
2. メトリクス(Metrics) システムのパフォーマンスや状態の数値化と収集
// メトリクスの収集例 const meter = opentelemetry.metrics.getMeter('my-service'); const counter = meter.createCounter('requests_total', { description: 'Total number of requests' }); counter.add(1);
3. ログ(Logs) - アプリケーションの動作状況やエラー情報の記録 - 既存のログシステムとの統合も可能
SentryがOpenTelemetry(OTel)をサポートする理由
- OpenTelemetryでの、トレース、メトリクス、ログといった可観測性データの、Sentryへのデータ送信を容易にする。これにより、開発者は複雑な設定や再実装を避けつつ、Sentryのパフォーマンス監視機能を利用できる
- SentryがOpenTelemetryをサポートすることで、開発者は特定のツールに依存せず、柔軟な監視体制を構築できる
- SentryはOpenTelemetryのスパンデータを取り込み、独自のトランザクションやスパンとして処理。これにより、分散システム全体のトレースとエラー情報を一元的に可視化し、問題の根本原因を迅速に特定できる
- Sentryは、Java、Python、Node.js、Ruby、Go、.NETなど、主要なプログラミング言語向けにOpenTelemetryとの統合を提供。これにより、開発者は数行のコード追加でSentryとOpenTelemetryの連携を実現できる
- Sentryは、OpenTelemetry Protocol(OTLP)によるデータ受信のサポートを進めており、OpenTelemetry Collectorからの直接データ送信が可能になる予定。これにより、より柔軟でスケーラブルな監視体制の構築が期待される