Linux ホストでワンコマンド OpenTelemetry セットアップ
システム依存関係としての OpenTelemetry
アプリケーションやシステムに OpenTelemetry をセットアップするには、それらがどこで動作しているかに依存します。 OpenTelemetry Operator のおかげで Kubernetes は高度に自動化されていますし、AWS Lambda も OpenTelemetry Lambda レイヤーによって自動化されています。
しかし、Linux ホスト上で直接動作する数えきれないほどの Java、.NET、Node.js、Python アプリケーションには、このような自動化がありませんでした。 これらを計装するには、エージェントを手動でダウンロードし、環境変数を自分で設定する必要がありました。 今年2月にブリュッセルで開催された OTel Unplugged EU では、ある要望が繰り返し上がりました。 明確なパッケージング、インストール、使用方法のパスです。 皆さんが求めたのは次のようなものでした。
{apt|yum} install opentelemetry
そして今、実際にそれができるようになりました!
試してみよう
opentelemetry パッケージは、OpenTelemetry Injector と Java、.NET、Node.js、Python 向けの OpenTelemetry SDK および自動計装パッケージをインストールします。
インジェクターはホスト上のプロセス起動時にフックし、アプリケーションに対応する自動計装を有効化します。
アプリケーションコードやデプロイスクリプトの変更は不要です。
導入は3つのステップで完了します。 パッケージをインストールし、テレメトリーの送信先を SDK に設定し、計装対象のプロセスを再起動します。
パッケージのインストール
プロジェクトには今すぐ試すための手順が定義されています。 すぐに始めたい方は以下をご覧ください。
Debian、Ubuntu、およびその派生ディストリビューションでは、APT リポジトリを追加します。
echo "deb [trusted=yes] https://open-telemetry.github.io/opentelemetry-packaging/debian stable main" | sudo tee /etc/apt/sources.list.d/opentelemetry.list
sudo apt update
sudo apt install opentelemetry
Fedora、RHEL、およびその派生ディストリビューションでは、YUM リポジトリを追加します。
cat <<EOF | sudo tee /etc/yum.repos.d/opentelemetry.repo
[opentelemetry]
name=OpenTelemetry Auto-Instrumentation System Packages
baseurl=https://open-telemetry.github.io/opentelemetry-packaging/rpm/packages
enabled=1
gpgcheck=0
EOF
sudo dnf install opentelemetry
opentelemetry-injector パッケージと、監視したい言語の自動計装パッケージを個別にインストールすることもでき、それらはシームレスに連携します。
オプションやデータの送信先について詳しくは、完全な手順をお読みください。
テレメトリーの送信先の設定
デフォルトでは、自動計装は OTLP データを localhost に送信します。
ポート 4317 が OTLP/gRPC、ポート 4318 が OTLP/HTTP です。
ここから2つのオプションがあります。
SDK から直接テレメトリーを送信する場合: /etc/opentelemetry/injector/default_env.conf にエンドポイントとクレデンシャルを設定すると、インジェクターがそれらをすべての計装済みプロセスに渡します。
OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp.example.com
OTEL_EXPORTER_OTLP_HEADERS=api-key=REPLACE_ME
ホスト上で Collector を実行する場合: デフォルトの localhost エンドポイントのまま、同じホストに OpenTelemetry Collector をインストールし、/etc/otelcol/config.yaml でテレメトリーの転送先を設定します。
Collector パッケージは現在 opentelemetry メタパッケージには含まれていません。
今後の変更については Collector パッケージングセクションをご覧ください。
Packaging SIG がお届けします
Packaging SIG は、2026年5月に正式に設立されました。
Packaging SIG の目標は、OpenTelemetry Injector による SDK と自動計装パッケージの注入、OpenTelemetry eBPF Instrumentation(OBI)、および OpenTelemetry Collector を組み合わせることで、(仮想)ホスト上で動作するアプリケーションの監視において、プロダクトライクで慣用的な体験を提供することです。
私たちは OpenTelemetry がプロダクトのように感じられるべきだと考えており、プロジェクトの Stable By Default ビジョンの実現に向けて取り組んでいます。
opentelemetry-packaging リポジトリで協力し、CNCF Slack の #otel-packaging チャンネルで議論し、毎週水曜日の太平洋時間午前10時にミーティングを開催しています。
ぜひお越しください!
今後の展望(TM)
パッケージングの取り組みはまだ新しいものです。 スコープ、スケーラビリティ、セキュリティに関する改善が直近のロードマップに含まれています。
本番環境に向けて
リポジトリは GitHub 上で GitHub Pages を通じてホストされています。 これは本番ワークロード向けではなく、本番環境レベルのホスティングソリューションを検討する予定です。
パッケージの署名はまだ行われていません。 手動でエラーが発生しやすいステップを作ることなく、迅速にリリースできるセキュアなソリューションを見つける予定です。
Collector パッケージング
OpenTelemetry Collector パッケージを新しいリポジトリに追加する作業に取り組みます。 Collector パッケージは現在 opentelemetry-collector-releases で公開されています。 詳しくはこちらのイシューを追跡してください。
対応言語の拡大と OBI
現在、インジェクターは Java、.NET、Node.js、Python 向けの SDK ベースの自動計装を有効化します。
SDK の自動計装がない言語(Go、Rust、C++ など)については、OpenTelemetry eBPF Instrumentation(OBI) と協力し、eBPF を使用してアプリケーションを計装できるようにする予定です。
OpenTelemetry Injector には Ruby のサポート計画もあり、近い将来に実現するかもしれません!
ありがとうございます!
この取り組みに参加してくださったコントリビューターの皆さん、ありがとうございます。
Packaging SIG の提案と初期実装を多くのレビュアーの皆さんにもお礼申し上げます!