OpenTelemetryを理解する 第5回:コレクターの使用とデータの可視化

所要時間:約 7分
OpenTelemetry
OpenTelemetryを今すぐ始めよう
OpenTelemetry
OpenTelemetryのデータを今すぐ送信してみよう

このブログ記事では、テレメトリデータのパイプラインを構築するための強力な新ツールである OpenTelemetry コレクターについて説明します。次に、セマンティック規約に沿って計測データを収集し、それをコレクターにエクスポートするJavaアプリケーションを示します。最後に、データはコレクターからオブザーバビリティプラットフォームに流れ、New Relic Oneで可視化されます。

OpenTelemetryコレクター

現代のソフトウェア環境は、オープンソースとプロプライエタリのコンポーネントが混在していることが多く、さまざまなレベルの設定が可能なさまざまなテクノロジーで計装されています。このような環境では、高度な設定が可能で拡張性のある手段であるOpenTelemetry コレクターを使って、データの収集、処理、および送信をコントロールすることができます。あなたのコンポーネントは、Prometheus、Jaeger、Kafka、Zipkinのような様々なフォーマットで遠隔測定データを公開していますか?コレクターをゲートウェイクラスターとして構成することで、これらすべてのフォーマットを受け入れ、共通の処理を適用してから、お好みのバックエンドのオブザーバビリティプラットフォームに送信することができます。データウェアハウスにデータのコピーを追加で送りたいですか?ニーズに合ったエクスポーターがない場合は自分で書くこともできます。

また、コレクターをエージェントとして使用することもできます。コレクターはエージェントとして各ホストに配置され、システムのメトリクスをスクレイピングすることができます。ホスト上のプロセスはエージェントにテレメトリーデータを送信し、エージェントはそのデータを転送する前にホストのメタデータを追加してデータを強化することができます。今回のデモではこの方法はを紹介していませんが検討の余地はあります。

次のビデオは、Dockerでコレクターをローカルで実行する方法を示しています(newrelic-opentelemetry-examplesの例)。コレクター はOpenTelemetry Protocol (OTLP) でデータを受信し、New Relic One に送信するように設定されています。また、コレクターにデータをエクスポートするJava アプリケーションも出ています。このような設定はあらゆるコンテナベースの環境に適応して展開することができます。 

参考までに、opentelemetry-collectorにはコレクターのコアコードが、opentelemetry-collector-contribにはコレクターの実験的およびベンダー固有の拡張機能が含まれています。

セマンティック規約

第2回で説明したように、OpenTelemetryのセマンティック規約は、類似した操作のために計装データを収集するための共通の規約を定義しています。例えば、JavaとPythonで書かれた2つのWebサーバーにそれぞれ計装を行い、セマンティック規約に従っていれば、似たような見た目のトレースデータやメトリクスデータが生成されます。これにより、異なるプラットフォームを使用する人々がデータからより多くの意味を導き出し、より良い体験を得ることが可能になります。 

現在、リソーストレースメトリクスには様々なセマンティック規約が定義されていますが、OpenTelemetryの成熟に伴い、さらに多くの規約が追加される予定です。なお、これらの規約はまだ実験的なものであり、変更される可能性があります。 

次のビデオは、OpenTelemetryのJavaエージェントJARファイルで計装されたJavaアプリケーションを示しています。このエージェントは、セマンティックな規約に沿って良い仕事をしています。アプリケーションを実行すると、規約に沿ってコレクターにデータを送信している様子がわかります。

New Relic Oneでデータを視覚化する

次に、New Relic Oneのデータを見て、セマンティック規約がどのように作用するかを見てみましょう。

OpenTelemetry のデータが New Relic に流れ込むと、クエリアラートカスタムダッシュボードなど、New Relic One のすべてのツールからアクセスできるようになります。トレースデータはスパンオブジェクトとして取り込まれます。メトリクスデータはディメンジョナルメトリクスオブジェクトとして取り込まれます。データを報告するコンポーネントを識別するためにエンティティが作成されます。エクスプローラーでそのエンティティに移動すると、様々な興味深いシグナルを表示するダッシュボードが表示されます。ダッシュボードはセマンティック規約に依存しており、セマンティック規約に忠実に従っているアプリケーションでは、エクスペリエンスの質が向上します。 

次のビデオでは、シンプルなNRQLクエリを使用してデータが流れていることを確認する方法と、エンティティエクスプローラーを使用してアプリケーションのダッシュボードに移動する方法を紹介しています。最後に、より複雑なマイクロサービスのセットアップのUIを見てみましょう。

このブログ連載では、コアとなる概念から実用的な例までを紹介してきました。Java アプリケーションと OpenTelemetry コレクターを連携させ、New Relic にテレメトリーデータをエクスポートし、New Relic One で可視化する方法を紹介しました。OpenTelemetry を理解するためのこのブログシリーズを終えた今、学んだことをご自身の環境で実践することができます。OpenTelemetryを理解することで、この強力な新しいツール群を活用して、オブザーバビリティの目標を達成できることを願っています。