OpenTelemetryは、PythonおよびSwiftの分散トレースAPIとSDKのバージョン1.0をリリースした。どちらにも、OpenTelemetry APIサポート、SDK、一般的なテレメトリ形式へのエクスポーター、入門用資料が含まれている。Pythonリリースは安定版と考えられているが、Swiftリリースはまだベータ版である。
各リリースのAPIには、Tracing API、Baggage API、Context API、Propagators APIが含まれている。トレースは、単一の操作 (Webサイトのボタンをクリックするなど) から生成されたイベントや、アプリケーション内のさまざまなコンポーネントにわたって集約されたイベントの集合を表す。OpenTelemetry内では、バゲッジは名前と値のペアを表す。これは、1つのサービス内のイベントを、同じトランザクション内の以前のサービスによって提供された詳細と併せて、インデックスを作成することを目的としている。たとえば、プロバイダーは、リクエストを担当するAPIユーザに関するコンテキストを含めることができる。
コンテキストは、API境界を越えて値を伝播する不変のメカニズムである。境界を越えるプロセスは、同じ共有コンテキストオブジェクトを使ってプロセス内でデータにアクセスする。状態は、プロパゲーターを使って次のプロセスに送信される。これらは、コンテキストを利用して、トレースやバゲッジなどの各プロセスに関係するデータを読み書きするオブジェクトである。
SDKには、サンプリング、処理、エクスポートの制御が含まれている。サポートされているトレースエクスポーターには、Jaeger、Zipkin、DataDog、OpenTelemetry Protocol(OTLP) がある。Python用のJaegerエクスポーターは、Thriftコンパクトプロトコル over UDPを使用したトレースの送信をサポートしている。アプリケーションの隣にJaeger Agentをデプロイすることができない構成の場合、代わりにコレクターはThrift over HTTPを使用するように構成できる。Swift SDKには、Prometheus、Datadog、OpenTelemetry Collector用のメトリクスエクスポーターもある。
OpenTelemetry Collectorは、テレメトリデータを読み書きするためのベンダーに依存しない実装として使用できる。Jaeger、Prometheus、Fluent Bitなどの複数のオープンソースの可観測性データ形式をサポートしている。
OpenTracingとOpenCensusはどちらも、OpenTelemetryに置き換えられる。OpenTracingのユーザは、仕様が安定版になったら、OpenTracing Shimを使って移行できる。現在、OpenCensusユーザ向けのshimはない。
OpenTelemetryプロジェクトのビジョンは、可観測性の3つの柱である分散トレース、メトリック、ログの一貫した標準を作成することである。これらのリリースでは、PythonとSwiftの両方で分散トレースがサポートされている。今後数か月間のロードマップには、メトリックとログのAPIとSDKの構築が含まれている。
Swiftリリースはまだベータ版と考えられている。DatadogのシニアソフトウェアエンジニアであるNacho Bonafonte氏によると「現在のAPIは安定版と見なすことができるが、すべてのパーツが厳密なベータテストを通過しているわけではない」。
リリース内には Swiftのみのコンポーネントがいくつかある。これには、ネットワークトラフィックをキャプチャするためのURLSessionインストルメンテーション、システム情報をレポートするためのSDK ResourceExtension、SwiftMetricsとの実験的な統合がある。
SwiftMetricsShimは、ネイティブのSwiftメトリクスAPIと統合され、データをOpenTelemetry API関数にリダイレクトする。
let meter: Meter = // ... Your existing code to create a meter
let metrics = OpenTelemetrySwiftMetrics(meter: meter)
MetricsSystem.bootstrap(metrics)
詳細については、それぞれCNCF SlackインスタンスのPythonチャネルとSwiftチャネルで確認できる。どちらのプロジェクトもGitHubでのサポートを検討している。