OpenTelemetryとは

OpenTelemetry(OTel)は、開発チームが単一の統一された形式でテレメトリデータを生成、処理、送信できるようにするオープンソースのオブザーバビリティフレームワークです。メトリック、ログ、トレースを収集し、監視プラットフォームにルーティングするための標準化されたプロトコルとツールを提供するために、Cloud Native Computing Foundation(CNCF)によって開発されました。

OpenTelemetryは、ベンダーに依存しないSDK、API、そしてツールを提供し、データは分析目的でどのようなオブザーバビリティバックエンドにも送信できます。

OpenTelemetryは、急速にクラウドネイティブアプリケーションにおける主要なオブザーバビリティテレメトリ標準になりつつあります。OpenTelemetryの採用は、特定のベンダーや既存のテクノロジーの限界に縛られることなく、将来のデータ需要に備えたい組織にとって、きわめて重要であると考えられています。

Elastic OpenTelemetry microservices

テレメトリデータの概要

テレメトリデータは、分散システムから収集されたログ、メトリック、トレースで構成されます。「オブザーバビリティの柱」として知られるこれら3つのカテゴリのデータは、開発者、DevOps、ITチームがシステムの動作とパフォーマンスを理解するのに役立ちます。

Logs(ログ):ログとは、ある時点にシステムで起こった個別のイベントをテキストで記録したものです。コードのブロックが実行されるたびに、ログエントリが生成されます。通常、コンテキストのペイロードとともに、イベントがいつ発生したかを示すタイムスタンプが含まれます。ログデータは、プレーンテキスト、構造化、非構造化など、さまざまな形式で提供されます。ログは、特に、トラブルシューティング、デバッグ、コードの検証に役立ちます。

Metrics(メトリック):メトリックとは、一般的に時系列データとして知られる、一定期間ごとに測定される数値のことです。タイムスタンプ、イベントの名前、イベントの値などの属性が含まれます。最新のシステムでは、メトリックによって、問題を監視、分析、対応し、アラートを容易にすることができます。システムエラー率、CPU使用率、サービスのリクエスト率など、インフラやアプリケーションに関する情報が得られます。

トレース:トレースは分散システムを通るリクエストのパスを表します。OpenTelemetryのトレースはスパンによって定義されます。スパンのグループがトレースを構成します。トレースは、チームがさまざまなサービスやコンポーネントを経由したリクエストのエンドツーエンドジャーニーや動作を理解するのに役立ちます。分散トレーシングは、完全な実行パスを追跡し、問題を引き起こすコードを特定できます。トレースは、アプリケーションの全体的な正常性を可視化しますが、その基礎となるインフラストラクチャーの可視性は限定的です。環境の全体像を把握するには、オブザーバビリティの他の2つの柱であるログとメトリックが必要です。

OpenTelemetryの簡潔な歴史

OpenTracingとOpenCensusは、標準化されたデータ形式の欠如に対処するために、それぞれ独立して開発された重複する分散型トレースプロジェクトです。OpenTelemetryは、OpenTracingとOpenCensusプロジェクトのコードベースを統合し、それぞれの長所をCloud Native Computing Foundationがホストする単一のプロジェクトに統合するために作られました。

OpenTracingは、バックエンドにデータを送信するためのベンダー依存しないAPIを提供します。OpenCensusは、開発者がコードをインストルメントし、バックエンドにデータを送信するために使用する言語固有のライブラリのコレクションでした。いずれもオープンソースで、ソフトウェアのソースコードが共同で開発され、誰でも使用、修正、配布することができました。

OpenTelemetryにより、開発者はOpenTracingとOpenCensusのどちらかを選択する必要がなくなりました。OpenTelemetryは、データの収集と転送のための統一されたライブラリ、API、エージェント、コレクターサービスのセットを提供します。

OpenTelemetryの仕組み

OpenTelemetryは、テレメトリデータを収集し、Observabilityバックエンドにエクスポートするための共通のフレームワークを提供します。標準化された、ベンダーに依存しないAPI、SDK、ツールのセットを使用し、データのインジェスト、変換、転送を行います。

言語固有のOpenTelemetry APIは、システム全体のテレメトリデータ収集を調整し、コードをインストルメントします。OpenTelemetry SDKは、データ収集、処理、エクスポートを支援するライブラリを通してAPIを実装し、サポートします。また、OpenTelemetryはサービスの自動インストルメンテーションを提供し、カスタムインストルメンテーションをサポートします。テレメトリデータは、ベンダーが提供するエクスポートツールまたはOpenTelemetryプロトコル(OTLP)のいずれかを使用してエクスポートできます。

OpenTelemetry architecture

OpenTelemetryのコアコンポーネント

OpenTelemetryのコアコンポーネントには、次のコンポーネントがあります。

コレクター

OpenTelemetryコレクターは、ベンダーに依存しないプロキシで、テレメトリデータを受信、処理、エクスポートします。複数の形式でのテレメトリデータの受信と、エクスポート前のテレメトリデータの処理とフィルタリングをサポートします。

言語SDK

OpenTelemetry言語SDKを使用すると、OpenTelemetry APIを使用して、ある言語でテレメトリデータを生成し、バックエンドにデータをエクスポートできます。

インストルメンテーションライブラリ

OpenTelemetryは、サポートされている言語用の一般的なライブラリとフレームワークから関連するテレメトリデータを生成する、幅広いコンポーネントをサポートしています。

自動インストルメンテーション

OpenTelemetryの言語固有の実装により、ソースコードを変更せずに、アプリケーションをインストルメントできます。

エクスポートツール

インスツルメンテーションをバックエンドの構成から切り離すことで、エクスポートツールはインスツルメンテーションを変更することなくバックエンドの変更を容易にします。また、複数のバックエンドにテレメトリをアップロードすることもできます。

OpenTelemetryの利点

OpenTelemetryの利点は、データの標準化と将来を見据えた柔軟性です。その結果、オブザーバビリティが改善され、効率が向上し、コストが削減されます。

データ収集の標準化

OpenTelemetryは、インスツルメンテーションを変更せずに、テレメトリデータを収集し、そのデータをSplunk、New Relic、Dynatrace、Datadogなどのバックエンドにエクスポートする一貫した方法を探しているDevOpsチームに最適なソリューションです。オープン規格と標準化されたデータ収集により、OpenTelemetryは可視性を高め、オブザーバビリティを簡素化します。設定が簡単なオブザーバビリティにより、チームはシステムの正常性についての理解を深め、パフォーマンスの問題を特定し、サービス中断が発生する前に根本原因を修正するために必要な時間を短縮できます。OpenTelemetryを使用する組織は、社内でソリューションを開発したり、複数のアプリケーションのために個々のツールを調査したりすることで、時間を無駄にする必要がありません。OpenTelemetryでは、ノイズやコスト、構成変更の必要性を減らせるため、組織はデータの収集方法ではなく、データの活用に集中できます。そして、最も合理的なツールや形式を使ってチームにインサイトを提供し、コラボレーションを向上させることができます。

ベンダーのロックインを回避

OpenTelemetryでは、特定のベンダーに縛られずに、任意のバックエンドを選択できるため、将来まで投資を保護します。システム、バックエンド、プロセスの変更に対応できるため、単一のプラットフォーム、ソリューション、契約に縛られることがなく、テクノロジーニーズの進化に合わせて拡張し、適応させることができます。この独立性と柔軟性は、テクノロジーの限界ではなく、収益と顧客にとって何が最善かを基準にビジネスの意思決定を行えることを意味します。

OpenTelemetryを使えば、成長のためのスケーラビリティ、プラットフォーム間の互換性、そして既存の監視およびオブザーバビリティツールと容易に統合できます。

OpenTelemetryとElastic

OpenTelemetryは、統合されたテレメトリ形式でアプリケーションをインストルメントするための標準仕様を提供していますが、バックエンドコンポーネントや分析コンポーネントは提供していません。Elasticsearchオブザーバビリティを活用すれば、オープンかつ拡張可能なElasticsearchプラットフォームにOpenTelemetryデータをシームレスに統合できます。

ElasticはOpenTelemetryプロトコルをネイティブでサポートしており、さまざまな言語のログ、メトリック、トレースを取り込むことができます。これにより、Elasticのパワフルな分析および可視化機能を大規模に活用することがさらに簡単になります。

2023年4月、ElasticはElastic Common Schema(ECS)をOpenTelemetryに提供し、セマンティック規約とECSを統合して共通のテレメトリデータスキーマにするという長期的な目標を掲げています。Elasticは、データアーキテクチャーに向けてOpenTelemetryにおける標準化を計画しており、今後OpenTelemetryプロジェクトへの投資を増やし、コラボレーションを増やしていく予定です。

OpenTelemetry and the Elastic Stack

ElasticはOpenTelemetryプロジェクトの強力なコントリビューターです。管理者がCI/CDプラットフォームを監視し、トラブルシューティングを行い、開発者がCI/CDパイプラインのスピードと信頼性を向上させるために、ElasticオブザーバビリティはCI/CDプロセスに可視性を提供します。パイプラインの監視ダッシュボード、アラート、根本原因分析を提供するために、ElasticはJenkins、Ansible、Mavenを含む最も一般的なCI/CDプラットフォームのコミュニティと協力し、OpenTelemetryでツールをインストルメントします。

Elasticオブザーバビリティはエンタープライズグレードのソリューションです。OpenTelemetryのインストルメンテーションで収集したデータを直接Elasticのデプロイに送ることができます。ハイブリッドクラウドアプリケーションを完全に可視化し、そのすべてを保存、分析、可視化できます。また、Elasticの強力な機械学習機能を利用することで、分析や回復の時間を短縮がきます。

OpenTelemetryソリューションの詳細

OpenTelemetry FAQ

OpenTelemetryは標準か?

はい。OpenTelemetryはオープンソースプロジェクトであり、ログ、トレース、メトリックの統一規格です。

テレメトリの例

テレメトリデータの例としては、システム監視とオブザーバビリティで使用されるログ、メトリック、トレースがあります。

OpenTelemetryとJaegerの違い

OpenTelemetryは、さまざまなオープンソースや商用バックエンドへのデータ処理とエクスポートを支援しますが、Jaegerなどのオブザーバビリティバックエンドではありません。OpenTelemetryがテレメトリデータの生成と管理を支援するAPI、SDK、ツールのセットを提供するのに対して、Jaegerはオープンソースの分散トレーシングツールです。ITチームは、マイクロサービスアーキテクチャーに基づくアプリケーションの監視とトラブルシューティングにJaegerを使用しています。Jaegerはログとメトリックをサポートしていません。

OpenTelemetry APIとSDKの違い

OpenTelemetry API(アプリケーションプログラミングインターフェース)は、システム全体のテレメトリデータ収集を調整し、コードをインストルメントします。APIは言語固有のものなので、コードの言語と一致している必要があります。OpenTelemetry SDK(ソフトウェア開発キット)は、データ収集、処理、オブザーバビリティバックエンドへのエクスポートを支援するライブラリを通してAPIを実装し、サポートします。