このブログ記事は「OpenTelemetryを理解する」シリーズの一部で、「Understand OpenTelemetry Part 5: Use The Collector and Visualize Data」の抄訳記事です。
第1回ではOpenTelemetryの概要を説明し、なぜOpenTelemetryが計測器の未来を担うのかを議論しました。
第2回ではOpenTelemetryオープンソースプロジェクトのコアコンポーネントについて説明しています。
第3回では主なOpenTelemetryのデータソースであるトレース、メトリックス、ログに焦点を当てました。
第4回ではいくつかのシンプルな Java アプリケーションを OpenTelemetryで計装する方法を検討しました。
第5回ではその続きとして、Dockerを使ってローカルにOpenTelemetry コレクターを実行し、OpenTelemetry Javaエージェントで計装されたJavaアプリケーションがどのように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にはコレクターの実験的およびベンダー固有の拡張機能が含まれています。
いますぐ始めましょう
- OpenTelemetryクイックスタートガイドを見てみましょう
- New RelicのOpenTelemetryの例を見てみましょう
- New RelicのネイティブOTLPエンドポイントのプレリリースにサインアップしてみましょう
セマンティック規約
第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を理解することで、この強力な新しいツール群を活用して、オブザーバビリティの目標を達成できることを願っています。
次のステップ
New Relicの無償枠にサインアップし、OpenTelemetryデータを今すぐ送信してみましょう。
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。