BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース OpenTelemetryがPythonおよびSwift Tracing API/SDKを1.0に移行

OpenTelemetryがPythonおよびSwift Tracing API/SDKを1.0に移行

原文(投稿日:2021/05/22)へのリンク

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には、サンプリング、処理、エクスポートの制御が含まれている。サポートされているトレースエクスポーターには、JaegerZipkinDataDogOpenTelemetry Protocol(OTLP) がある。Python用のJaegerエクスポーターは、Thriftコンパクトプロトコル over UDPを使用したトレースの送信をサポートしている。アプリケーションの隣にJaeger Agentをデプロイすることができない構成の場合、代わりにコレクターはThrift over HTTPを使用するように構成できる。Swift SDKには、Prometheus、Datadog、OpenTelemetry Collector用のメトリクスエクスポーターもある。

OpenTelemetry Collectorは、テレメトリデータを読み書きするためのベンダーに依存しない実装として使用できる。Jaeger、Prometheus、Fluent Bitなどの複数のオープンソースの可観測性データ形式をサポートしている。

OpenTracingOpenCensusはどちらも、OpenTelemetryに置き換えられる。OpenTracingのユーザは、仕様が安定版になったら、OpenTracing Shimを使って移行できる。現在、OpenCensusユーザ向けのshimはない。

OpenTelemetryプロジェクトのビジョンは、可観測性の3つの柱である分散トレース、メトリック、ログの一貫した標準を作成することである。これらのリリースでは、PythonとSwiftの両方で分散トレースがサポートされている。今後数か月間のロードマップには、メトリックとログのAPIとSDKの構築が含まれている。

Swiftリリースはまだベータ版と考えられている。DatadogのシニアソフトウェアエンジニアであるNacho Bonafonte氏によると「現在のAPIは安定版と見なすことができるが、すべてのパーツが厳密なベータテストを通過しているわけではない」。

リリース内には Swiftのみのコンポーネントがいくつかある。これには、ネットワークトラフィックをキャプチャするためのURLSessionインストルメンテーション、システム情報をレポートするためのSDK ResourceExtensionSwiftMetricsとの実験的な統合がある。

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でのサポートを検討している。

この記事に星をつける

おすすめ度
スタイル

BT