TL;DR
システムの各コンポーネントのコードが、分散トレースのデータ、測定値、イベントの記録などのシグナルを出すようにすること。英語では instrumentation と呼ぶ。
なぜ必要か
OpenTelemetry のドキュメントでは、システムを観測できるようにするには計装が必要だとしている。オブザーバビリティを実現するには、アプリケーションが適切に計装されていなければならない。
仕組み
OpenTelemetry では、計装の方法を 2 つに分けている。
コードベースの計装は、アプリケーションの中で OpenTelemetry の API を使う。アプリケーションの内部のロジックまで深く観測できるが、自分でコードを書くので、アプリケーションの変更が必要になる。
ゼロコードの計装は、コードを変えずに、ライブラリや実行環境からテレメトリを得る。手始めに使う場合や、アプリケーションを変更できない場合に向くが、アプリケーションの境界で起きることしか分からない。2 つは組み合わせて使える。
入門 OpenTelemetry ―現代的なオブザーバビリティシステムの構築と運用 によると、シグナルは、テレメトリを生成する実装である計装と、解析ツールにネットワーク経由でデータを送る伝送システムで構成される。
例
- tracing では、計装するには Subscriber の実装が必要で、基本的には公式が提供する
tracing-subscriberを使う。 - Go のプロファイラ pprof でも、コードに計装しないとプロファイルは取れない(今日から始める pprof)。