OpenTelemetry概要

119 Views

June 27, 25

スライド概要

2025/06/27 社内勉強会「OpenTelemetry概要」にて使用したスライド

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

概要 OpenTelemetry 2025/06/27 This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 1

2.

Agenda とは OpenTelemetryの構成 OpenTelemetryの計装 OpenTelemetry This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 2

3.

とは OpenTelemetry This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 3

4.

OpenTelemetry 傘下のプロジェクト OpenTelemetry と OpenCensusの2プロジェクトが合併してできた CNCF (Cloud Native Computing Foundation) https://opentelemetry.io This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 4

5.

登場の背景 OpenTelemetry オブザーバビリティの課題 マイクロサービス環境で障害の原因特定に時間がかかる 各サービスで異なる監視ツール・ログ形式を使用 パフォーマンス問題の分析が困難 が解決する問題 OpenTelemetry 標準化されていないテレメトリーデータ形式 → OTLPとして形式を標準化 計装の複雑さ → APIを標準化 データの統合困難 → 追跡のための仕組みを標準化 This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 5

6.

OpenTelemetry とは の略称でも知られるOpenTelemetryは、トレース、メトリクス、ログのよう なテレメトリーデータを計装、生成、収集、エクスポートするためのベンダー非 依存なオープンソースのオブザーバビリティフレームワークです。 業界標準として、OpenTelemetryは40以上のオブザーバビリティベンダーによっ てサポートされ、多くのライブラリ、サービス、アプリによって統合され、多く のエンドユーザーによって採用されています。 OTel https://opentelemetry.io/ja/docs/ This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 6

7.

OpenTelemetry とは オブザーバビリティ (可観測性) オブザーバビリティとは、システムが実用的な洞察をどの程度出力できるかを決 める性質のことを指します。 オブザーバビリティにより、ユーザーはシステム外 部への出力を元にそのシステムの状態を理解し、(是正)措置を取ることが可能に なります。 コンピューターシステムは、CPU時間・メモリ・ディスク容量といった低水準の シグナルや、APIの応答時間・エラー数・秒間トランザクション数などを含む高 水準でビジネスに直結するシグナルを観測することで評価されます。 (snip) 可観測なシステムは、有意義かつ実用的なデータを運用者に提供し、運用者が(イ ンシデントへのより素早い対応や開発者の生産性向上といった)好ましい結果を出 すことを可能にします。 システムのダウンタイムとともに、手間のかかる手作業 での仕事も少なくなります。 This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . https://glossary.cncf.io/ja/observability/ 7

8.

OpenTelemetry とは オブザーバビリティ (可観測性) 問題発生時の行動の違い 従来の監視 サーバーにSSHログインしたりログ監視ツールからログファイルを確認 する OSリソースの監視ツールを確認して推移を分析する オブザーバビリティ オブザーバビリティツールを確認してシグナルを分析する This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 8

9.

OpenTelemetry とは テレメトリー オブザーバビリティツールで観測する3種のシグナル(データ) ログ: アプリケーションの動作記録 例: 2025-06-25 14:30:15 ERROR UserService - User not found: id=123 メトリクス: システムの状況やリソースの使用状況を数値で表現 例: HTTP応答時間、エラー率、JVMヒープ使用量、DB接続数 分散トレース: 1つのリクエストがシステム全体でどう処理されたかを追跡 例: ユーザーの注文処理 → 在庫確認 → 決済処理 → 配送依頼の流れ This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 9

10.

の構成 OpenTelemetry This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 10

11.

OpenTelemetry の構成 のコンポーネント OpenTelemetry 各コンポーネントの仕様 (OpenTelemetry Specification) テレメトリーデータの形式を定義する標準プロトコル (OTLP) テレメトリーデータの標準命名規則 (semantic conventions) 仕様、テレメトリーデータ生成API、テレメトリーデータのエクスポートを提供す るSDK Java, C++, C#, Erlang, Go, JavaScript, PHP, Python, Ruby, Rust, Swift コード変更せずにテレメトリーデータを生成する自動計装コンポーネント テレメトリーデータの受信・処理・送信を行うプロキシとなるOpenTelemetry Collector (otelcol) This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 11

12.

OpenTelemetry の構成 が提供しない物 OpenTelemetry テレメトリーデータを収集・分析するツール OTelは標準化された形式(OTLP)で送信するまでをカバー 受信・蓄積・表示は各ベンダーが提供する製品で実施する 例: Grafana, Prometheus, Jaeger, Elastic stack, DataDog, NewRelic, etc... クラウドプラットフォーム(AWS, GCP, Azure, etc...)のマネージドサービ ス メリット: ベンダーロックインを回避、監視ツールの変更が容易 This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 12

13.

https://opentelemetry.io/img/otel-diagram.svg 13

14.

の計装 OpenTelemetry ※計装: テレメトリーデータを生成・送信するために必要な処理を実装すること This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 14

15.

OpenTelemetry の計装 計装方法 以下の方法を組み合わせて計装する i. Zero-code Instrumentation ii. Library Instrumentation iii. Manual Instrumentation Spring Boot 、MicroProfileではManual Instrumentationを容易にする仕組みがある This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 15

16.

OpenTelemetry の計装 計装方法 - Zero-code Instrumentation の仕組みを用いて動的に計装処理を追加する 主要なフレームワーク・ライブラリに計装処理が自動追加される 実行時に -javaagent:path/to/opentelemetry-javaagent.jar Dotel.service.name=service-name を追加するだけ 以下はフレームワークの拡張機能として依存関係に追加すれば計装できる Quarkus ( io.quarkus:quarkus-opentelemetry ) デフォルトはトレースのみ有効。メトリクス・ログはプロパティで有効 化が必要 Java agent Spring Boot ( io.opentelemetry.instrumentation:opentelemetry-springboot-starter ) This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 16

17.

OpenTelemetry の計装 計装方法 - Library Instrumentation ライブラリを計装処理でラップした or ライブラリの拡張機能で計装できるように したライブラリを使用する 例: Java標準のHTTP Client ( java.net.http.HttpClient ) a. 依存関係に io.opentelemetry.instrumentation:opentelemetry-javahttp-client を追加 b. // import io.opentelemetry.instrumentation.httpclient.JavaHttpClientTelemetry; // import java.net.http.HttpClient テレメトリー トレース、メトリクス を収集する を返す /** ( ) HttpClient */ public HttpClient createTracedClient(OpenTelemetry openTelemetry) { return JavaHttpClientTelemetry.builder(openTelemetry).build().newHttpClient(createClient()); } /** HttpClient */ private HttpClient createClient() { return HttpClient.newBuilder().build(); } 通常の を返す This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 17

18.

OpenTelemetry の計装 計装方法 - Manual Instrumentation が提供するAPIを直接使用してアプリケーションに計装処理を実装する ログ: io.opentelemetry.api.logs.Logger メトリクス: io.opentelemetry.api.metrics.Meter + データの種類毎に選択 ( io.opentelemetry.api.metrics.LongCounter , DoubleGauge 等) トレース: io.opentelemetry.api.trace.Tracer SDK This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 18

19.
[beta]
OpenTelemetry

の計装

計装方法 - Spring Boot

ログ: 自動的に計装される (logbackに対するZero-code Instrumentatio)
メトリクス、トレース: io.opentelemetry.api.OpenTelemetry をDIして Meter ,
Tracer を取得可能
@Controller
public class MyController {
private final Meter meter;
private final Tracer tracer;
public MyController(OpenTelemetry openTelemetry) {
this.meter = openTelemetry.getMeter("application");
this.tracer = openTelemetry.getTracer("application");
}
}

トレース: メソッドに @WithSpan を指定すると記録対象になる
This work by Takayuki Maruyama is licensed under CC BY-SA 4.0

.

19

20.

OpenTelemetry の計装 計装方法 - MicroProfile Telemetry Jakarta RESTful Web Services, MicroProfile REST Client れる 次のオブジェクトをインジェクト可能 のトレースは自動計装さ io.opentelemetry.api.OpenTelemetry トレース io.opentelemetry.api.trace.Tracer io.opentelemetry.api.trace.Span io.opentelemetry.api.baggage.Baggage メトリクス io.opentelemetry.api.metrics.Meter メソッドに @WithSpan を指定すると記録対象になる パラメーター設定はMicroProfile Configで管理される This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 20

21.

OpenTelemetry の計装 デモ https://opentelemetry.io/ecosystem/demo/ 構成 オンラインショップを構成するマイクロサービス群 テレメトリーデータ送信に使用するOpenTelemetry Collector テレメトリーデータを収集するOpenSearch, Prometheus, Jaeger テレメトリーデータを可視化・分析するGrafana デモ用にリクエストを生成するLocust This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 21

22.

OpenTelemetry の計装 参考 公式 OpenTelemetry https://opentelemetry.io/ 仕様 OpenTelemetry https://opentelemetry.io/docs/specs/ 言語毎のAPI & SDK https://opentelemetry.io/docs/languages/ [Java] Zero-code Instrumentation, Library Instrumentation ク・ライブラリの一覧 に対応するフレームワー https://github.com/open-telemetry/opentelemetry-javainstrumentation/blob/main/docs/supported-libraries.md This work by Takayuki Maruyama is licensed under CC BY-SA 4.0 . 22