SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「OpenTelemetry」で始めるオブザーバビリティ入門

エラーやボトルネックの発見に役立つ「計装」とは? OpenTelemetryを活用してトラブルに備えよう!

  • X ポスト
  • このエントリーをはてなブックマークに追加

アプリのコードは変更しないとだめ? 2つの計装方法の違いを知る

 計装には、自動計装(Automatic Instrumentation)と手動計装(Manual Instrumentation) [1] という2つの主要なアプローチがあります。

  • 自動計装:既存のアプリケーションのコードに手を加えることなく行う計装手法。主に、言語別のエージェントや設定を利用することで計装を行う
  • 手動計装:アプリケーションのコードに直接計装用のコードを追加する計装手法。きめ細かく計装をカスタマイズすることができる

 自動計装は、アプリケーションコードへの変更が発生しないため、手始めに基本的なメトリクスやトレースデータを取得するのに適したアプローチです。ただし、利用している言語が自動計装に対応していない、使用しているライブラリなどによってはあまりテレメトリーデータが取得できない、アプリケーション固有の詳細な処理に関するテレメトリーデータをカバーできない、などといったケースがしばしば発生します。

 自動計装に対応している開発言語としては、以下のようなものが挙げられます。

  • .NET
  • Go[2]
  • Java
  • JavaScript(Node.js)
  • PHP
  • Python

 詳細は公式ページをご確認ください。

 また、いくつかのライブラリやフレームワークでは、OpenTelemetryによる計装をサポートしており、迅速かつ簡単に計装ができるような仕組みを提供しています。代表的なものだと、JavaフレームワークであるSpring BootやQuarkus、Node.jsで提供されるWebアプリケーションフレームワークであるExpressやNext.jsなどが挙げられます。自動計装に対応しているライブラリやフレームワークは言語ごとに異なります(例:Javaの場合)。

 自動計装に対応していない開発言語を利用している場合や、自動計装で取得されたトレースやメトリクスデータをよりきめ細やかにコントロールしたい場合には、手動計装を利用していきます。

 アプリケーションのコードに手を入れることになりますが、デバッグなどのためにログ出力を追加するようなイメージで実施できるはずです。また、OpenTelemetryが提供するAPI、SDK、ライブラリを利用している限り、オブザーバビリティベンダー固有のコードが皆さんのアプリケーションに入ることはありません(ベンダー独自の計装ライブラリで計装してしまうと、アプリケーションコードがベンダーロックインの状態に陥る可能性があります)。このあたりが、OpenTelemetryを採用するメリットでもあるわけです。

 対応している言語と、それぞれの実装例は公式ページに記載されています。また、言語別のOpenTelemetryプロジェクトのステータスも確認いただくことができます。Javaを参照実装として、各言語において仕様・実装の安定化に向けて開発が進められています。

 計装によってアプリケーションから取得したテレメトリーデータは、OpenTelemetry Collectorに集約し、その後オブザーバビリティバックエンドに送信する構成を取るのが一般的には推奨されます。直接バックエンドにテレメトリーデータを送ることも可能ですが、データ送信のバッチ化や暗号化、センシティブデータの加工などを計装側で制御するのは大変なので、開発環境や極小規模な環境以外では避けた方が無難とされています。

https://opentelemetry.io/docs/collector/deployment/agent/
推奨される構成

[1] 「自動計装」「手動計装」という単語は従来から使用されてきた用語ですが、執筆時点(2024/09/10)におけるOpenTelemetry公式ドキュメントサイトでは「ゼロコード」「コードベース」「ライブラリ」という用語が使用されることがあります。「ゼロコード」は自動計装に、「コードベース」および「ライブラリ」が手動計装に対応するもののようです。特に「ライブラリ」は、下に述べているアプリケーションで利用しているフレームワークなどに対応するOpenTelemetryのパッケージを活用して計装を行う取り組みを指しています。本記事では引き続き「自動計装」と「手動計装」という単語を使用します。

[2]eBPFベースの自動計装が開発中(Work In Progress)です。OpenTelemetry公式ドキュメントサイトではゼロコード対応言語として明記されています。

次のページ
自動計装をやってみる

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
「OpenTelemetry」で始めるオブザーバビリティ入門連載記事一覧

もっと読む

この記事の著者

中上 健太朗(Splunk Services Japan合同会社)(ナカガミ ケンタロウ)

 Splunk Services Japan合同会社でオブザーバビリティソリューションを担当するエンジニア。Splunk Observabilityのご紹介・ご提案・導入支援などに従事。従来の運用から一歩進んだアプローチへとお客様がステップアップできるように日々活動を行っている。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20275 2024/10/31 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング