<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ブログ on OpenTelemetry</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/</link><description>Recent content in ブログ on OpenTelemetry</description><generator>Hugo</generator><language>ja</language><atom:link href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>OpenTelemetry Go Logs API と SDK がリリース候補ステータスに到達</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/go-logs-api-sdk-rc/</link><pubDate>Tue, 20 Oct 2026 12:47:24 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/go-logs-api-sdk-rc/</guid><description>&lt;p&gt;OpenTelemetry Go &lt;code&gt;v1.47.0-rc.1&lt;/code&gt; がリリースされました。&#10;このリリースでは、Logs API と SDK がリリース候補（RC）に昇格しました。&#10;これは安定版 v1 の互換性保証を提供する前の最終段階です。&#10;設計は準備が整ったと考えており、互換性保証が発効する前に、コミュニティの皆さんに実際のアプリケーションやインテグレーションでテストしていただく必要があります。&lt;/p&gt;&#10;&lt;h2 id="what-is-included-in-the-release-candidate"&gt;リリース候補に含まれるもの&lt;a class="td-heading-self-link" href="#what-is-included-in-the-release-candidate" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;RC は以下の2つのモジュールを対象としています。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;go.opentelemetry.io/otel/log&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;go.opentelemetry.io/otel/sdk/log&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;これらのモジュールは、安定性がベータ段階の v0.22.0からv1.47.0-rc.1 に移行します。&#10;このバージョンにより、バージョン番号をそろえている他の安定版 OpenTelemetry Go モジュールと整合します。&#10;ログエクスポーターおよび &lt;code&gt;logtest&lt;/code&gt; モジュールは引き続き実験的であり、この RC の安定性スコープには含まれません。&lt;/p&gt;&#10;&lt;p&gt;このリリースでは、ルートパッケージ &lt;code&gt;go.opentelemetry.io/otel&lt;/code&gt; に &lt;code&gt;Logger&lt;/code&gt;、&lt;code&gt;GetLoggerProvider&lt;/code&gt;、&lt;code&gt;SetLoggerProvider&lt;/code&gt; が追加されました。&#10;&lt;code&gt;go.opentelemetry.io/otel/log/global&lt;/code&gt; の同等の API は非推奨になりました。&#10;これにより、グローバルなロガーアクセスが、トレーサーやメーターで既に使用されているパターンと統一されます。&lt;/p&gt;&#10;&lt;p&gt;完全なリリースノートについては、&lt;a href="https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.47.0-rc.1" target="_blank" rel="noopener" class="external-link"&gt;リリース候補のリリース&lt;/a&gt;を参照してください。&lt;/p&gt;&#10;&lt;h2 id="the-journey-to-release-candidate"&gt;リリース候補への道のり&lt;a class="td-heading-self-link" href="#the-journey-to-release-candidate" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;現在の設計に向けた作業は、2023年後半の &lt;a href="https://github.com/open-telemetry/opentelemetry-go/pull/4725" target="_blank" rel="noopener" class="external-link"&gt;Logs API とブリッジのプロトタイプ&lt;/a&gt;から始まりました。&#10;このプロトタイプにはベンチマークと初期のブリッジが含まれており、API を確定する前に、その形状とコストの両方をテストできました。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.24.0" target="_blank" rel="noopener" class="external-link"&gt;最初の Logs API アルファ版&lt;/a&gt;は2024年2月に続き、&lt;a href="https://github.com/open-telemetry/opentelemetry-go/pull/5260" target="_blank" rel="noopener" class="external-link"&gt;最初の Logs SDK アルファ版&lt;/a&gt;は4月に登場しました。&#10;2024年5月には、&lt;a href="https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.27.0" target="_blank" rel="noopener" class="external-link"&gt;API と SDK を合わせた最初のベータリリース&lt;/a&gt;を公開しました。&#10;それ以来、進化する OpenTelemetry Logs 仕様に継続的に追従し、API を当初のブリッジ中心のユースケースから直接利用へと拡大し、レコード表現、処理、制限、ライフサイクル動作、パフォーマンスを改善してきました。&#10;最近の変更には、シグナル間で共通の &lt;a href="https://github.com/open-telemetry/opentelemetry-go/pull/8490" target="_blank" rel="noopener" class="external-link"&gt;&lt;code&gt;attribute.Value&lt;/code&gt; と &lt;code&gt;attribute.KeyValue&lt;/code&gt; 型&lt;/a&gt;の採用と、エクスポーターのバックプレッシャー下でより安全な動作を実現するための &lt;a href="https://github.com/open-telemetry/opentelemetry-go/pull/8620" target="_blank" rel="noopener" class="external-link"&gt;&lt;code&gt;BatchProcessor&lt;/code&gt; の再設計&lt;/a&gt;が含まれています。&lt;/p&gt;</description></item><item><title>バージョン付きメトリクス: hostmetrics に初のリリース候補メトリクスを導入</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/hostmetrics-process-scraper-rc/</link><pubDate>Sat, 17 Oct 2026 13:10:34 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/hostmetrics-process-scraper-rc/</guid><description>&lt;p&gt;OpenTelemetry Collector Contrib v0.160.0 では、hostmetrics レシーバーの process スクレイパーにリリース候補（RC）の process セマンティック規約メトリクスを出力する機能が追加されました。&#10;これは安定版 v1 の前の最終段階です。&#10;System SIG は約1年かけてこの作業を進めてきました。&#10;process メトリクスは良い状態になったと考えていますが、RC はコミュニティがそれを証明するために存在します。&#10;process メトリクスを収集している方は、新しいバージョン付き出力を試して、何が壊れるかを教えてください。&lt;/p&gt;&#10;&lt;h2 id="why-stabilizing-the-hostmetrics-receiver-was-blocked"&gt;hostmetrics レシーバーの安定化が妨げられていた理由&lt;a class="td-heading-self-link" href="#why-stabilizing-the-hostmetrics-receiver-was-blocked" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;process スクレイパーのメトリクスは OpenTelemetry セマンティック規約で変更されました。&#10;これらの規約に合わせるということは、ユーザーがすでに依存しているメトリクス名、型、属性を変更することを意味するため、単純に定義をその場で編集してリリースすることはできませんでした。&lt;/p&gt;&#10;&lt;p&gt;Collector における動作変更のための通常のツールはフィーチャーゲートですが、ゲートはすでに存在するコードパスを切り替えるだけです。&#10;必要だったのは、レガシーと RC のメトリクス定義の両方がコード内に同時に存在し、メトリクスごとに選択可能で、エンドユーザーが新しいメトリクスの使用をオプトインできることでした。&#10;理想的には、これをユーザーの設定スキーマに影響を与えずに行うことです。&lt;/p&gt;&#10;&lt;p&gt;この要件は設定スキーマ &lt;code&gt;metadata.yaml&lt;/code&gt; に突き当たります。&#10;このファイルは、レシーバーが出力するメトリクスと属性、およびそれらの出力方法を定義します。&#10;hostmetrics レシーバーの各スクレイパーはこのファイルを1つ持ち、&lt;a href="https://github.com/open-telemetry/opentelemetry-collector/tree/62cdad2ea133239380b44d20d84eb26e114779b6/cmd/mdatagen?from_branch=main" target="_blank" rel="noopener" class="external-link"&gt;mdatagen&lt;/a&gt; がこのファイルから出力コードを生成します。&#10;&lt;code&gt;&amp;lt;metric&amp;gt;&lt;/code&gt; の2つの定義が、名前は同じだが型や属性が異なる場合、1つのファイルに共存できません。&lt;/p&gt;&#10;&lt;p&gt;System SIG は、&lt;a href="https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/45592" target="_blank" rel="noopener" class="external-link"&gt;バージョン付きメトリクスに関する GitHub イシュー&lt;/a&gt;で議論されたように、この問題を解決する2つの異なるアプローチに行き着きました。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;レガシーメトリクスと RC メトリクスに2つの異なる設定スキーマを使用する。&lt;/li&gt;&#10;&lt;li&gt;レガシーメトリクスと RC メトリクスの両方を含む1つの設定スキーマを使用する。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;1つ目は、レガシーと RC のメトリクスを別々のスキーマに保持する方法です。&#10;これにより命名の競合は回避できましたが、&lt;code&gt;metadata.yaml&lt;/code&gt; の &lt;code&gt;metrics:&lt;/code&gt; ブロックはエンドユーザーが Collector の設定を書くために使用する &lt;code&gt;metrics:&lt;/code&gt; ブロックを生成するものです。&#10;そのため、2つのスキーマファイルは2つのユーザー設定ブロックを意味し、すべての既存ユーザーはアップグレード時か、レガシーブロックが最終的に削除される時点のいずれかで設定を編集しなければなりません。&lt;/p&gt;&#10;&lt;p&gt;2つ目は、両方の定義を1つのファイルに共存させ、mdatagen を更新して名前の競合を処理する方法です。&#10;これはユーザーにコストをかけず、コンポーネントメンテナーに単一の &lt;code&gt;metadata.yaml&lt;/code&gt; ファイルで作業できる環境を提供しますが、スクレイパーの作業を開始する前に、Collector のコアリポジトリで mdatagen 自体を変更する必要がありました。&lt;/p&gt;</description></item><item><title>2026年の Prometheus と OpenTelemetry の相互運用性：調査結果</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/otel-prometheus-interoperability/</link><pubDate>Sat, 17 Oct 2026 01:32:42 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/otel-prometheus-interoperability/</guid><description>&lt;p&gt;私たちは OpenTelemetry と Prometheus のユーザーを対象に、メトリクスの収集、処理、保存の方法を尋ねるサーベイを実施しました。&#10;目標は、憶測ではなく実際の利用データに基づいて、エコシステムがどこまで進んだか、そして相互運用性にいまだ摩擦が残っているかを理解することでした。&lt;/p&gt;&#10;&lt;h2 id="key-takeaways"&gt;主なポイント&lt;a class="td-heading-self-link" href="#key-takeaways" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2024/prometheus-compatibility-survey/"&gt;2024年のサーベイ&lt;/a&gt;以降、相互運用性は測定可能な改善を遂げました。&#10;使いやすさの平均評価は3.1から3.6に上昇しました。&#10;これは回答者の2人に1人がカテゴリを丸ごと1段階上に評価した場合に相当し、両者を一緒に使うのが難しいと感じた回答者の割合は29%から10%に減少しました。&lt;/li&gt;&#10;&lt;li&gt;インフラストラクチャの計装では、Prometheus エクスポーターが最も利用されている方法（72%）であり、OTel レシーバーが僅差で続いています（57%）。&#10;回答者のほぼ半数は、一方からもう一方に移行するのではなく、両方を同時に使用しています。&lt;/li&gt;&#10;&lt;li&gt;アプリケーションの計装では、OTel SDK が最も利用されている方法で65%、Prometheus SDK が52%であり、41%の回答者は OTel スタイルのアプリケーション計装のみを使用しています。&lt;/li&gt;&#10;&lt;li&gt;Prometheus リラベリングルール（54%）とオープンソースの OTel Collector（53%）が最も一般的な2つの処理ステップであり、回答者の65%はパイプライン内にベンダーの変換やカスタムビルドの Collector を含まない、一方または両方の「バニラスタック」を使用しています。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="demographics"&gt;人口統計&lt;a class="td-heading-self-link" href="#demographics" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;回答した186人のうち、81人が Prometheus 隣接バックエンド上のアクティブな OpenTelemetry メトリクスユーザーとしてスクリーニングを通過しました。&#10;また、エンドユーザーに焦点を当てるため、オブザーバビリティベンダーの従業員を除外しました。&#10;分析対象サンプルの特徴は以下のとおりです。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;回答者全員がアクティブな OpenTelemetry ユーザーです。&lt;/li&gt;&#10;&lt;li&gt;回答者全員が何らかの Prometheus 系ツールを使用しています。&#10;Prometheus そのもの（46%）、Thanos、Cortex、Grafana Mimir などのオープンソースの Prometheus 互換バックエンド（42%）、または PromQL 互換のベンダー製品（12%）です。&lt;/li&gt;&#10;&lt;li&gt;回答者のオブザーバビリティ成熟度は高いです。&#10;48%は自組織が「確立されたオブザーバビリティプラクティスを持っている」（エキスパート）と回答し、41%は「オブザーバビリティプラクティスを構築中」（中級）であり、初心者と自認しているのはわずか11%でした。&lt;/li&gt;&#10;&lt;li&gt;組織規模は大きい方に偏っています。&#10;42%が従業員1,000人以上、31%が100〜999人、15%が50〜99人、12%が50人未満と回答しています。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="ease-of-use-change-over-time"&gt;使いやすさの経時変化&lt;a class="td-heading-self-link" href="#ease-of-use-change-over-time" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;OpenTelemetry と Prometheus を一緒に使うのはどの程度簡単ですか、あるいは難しいですか？&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;今年は、2024年の同様のサーベイと同じ質問を行い、エンドユーザーが相互運用性に進歩を感じているかを確認しました。&lt;/p&gt;&#10;&lt;p&gt;平均評価は0.5ポイント上昇し、3.1から3.6になりました。&#10;これは回答者の2人に1人がカテゴリを丸ごと1段階上に移動した場合に相当します。&#10;最も明確な変化はスケールの「難しい」側にあります。&#10;両者を一緒に使うのが難しいと感じた回答者の割合は、2024年の水準のおよそ3分の1にまで低下しました。&#10;また、今年は「非常に難しい」を選んだ人はいませんでした。&lt;/p&gt;</description></item><item><title>OTLP と Prometheus で .NET メトリクスをデュアルエクスポートする</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/dual-dotnet-metrics-export-with-otlp-and-prometheus/</link><pubDate>Sat, 17 Oct 2026 01:28:55 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/dual-dotnet-metrics-export-with-otlp-and-prometheus/</guid><description>&lt;p&gt;多くのアプリケーションは、メトリクスを直接 &lt;a href="https://prometheus.io/" target="_blank" rel="noopener" class="external-link"&gt;Prometheus&lt;/a&gt; にエクスポートしています。&#10;Prometheus に馴染みがない方に向けて簡単に説明すると、カウンターやヒストグラムのようなメトリクスを保存するための時系列データベースです。&#10;Prometheus にメトリクスを保存するアプリケーションは、通常、連携の一環として広く使われている Prometheus クライアントを使用しています。&lt;/p&gt;&#10;&lt;p&gt;OpenTelemetry が &lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/otel-graduates/"&gt;CNCF の Graduated プロジェクト&lt;/a&gt;となった今、多くの企業がオブザーバビリティアーキテクチャにメトリクス以外のシグナルを追加するために、OpenTelemetry への移行を検討しています。&#10;ログとトレースは、アプリケーションの挙動をより深く理解するための一般的な追加シグナルです。&#10;プロファイルも、さらに深い理解を得るための4番目のテレメトリーシグナルとして注目を集めています。&lt;/p&gt;&#10;&lt;p&gt;ここで移行のハードルが生まれます。あるシステムから別のシステムへメトリクスを移行する際に、一括切り替えのイベントなしにどうすれば移行できるでしょうか。&#10;移行のリスクを軽減するには、一定期間メトリクスを両方のシステムにエクスポートし、「移行前」と「移行後」の状態を比較・検証できるインクリメンタルなアプローチが望ましいです。&#10;これにより、メトリクスの監視やアラートの駆動において、どちらのシステムでも本番環境の可視性が失われていないことを確認できます。&lt;/p&gt;&#10;&lt;h2 id="using-the-opentelemetry-prometheus-exporter-for-net"&gt;.NET 用 OpenTelemetry Prometheus エクスポーターの使用&lt;a class="td-heading-self-link" href="#using-the-opentelemetry-prometheus-exporter-for-net" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;.NET 用 OpenTelemetry Prometheus エクスポーターの&lt;a href="https://github.com/open-telemetry/opentelemetry-dotnet/releases/tag/coreunstable-1.18.0-beta.1" target="_blank" rel="noopener" class="external-link"&gt;最新リリース&lt;/a&gt;では、本番メトリクスでまさにこのアプローチを取ることができます。&#10;アプリケーションやフレームワークのコードで &lt;a href="https://learn.microsoft.com/dotnet/core/diagnostics/metrics-instrumentation" target="_blank" rel="noopener" class="external-link"&gt;.NET Meter クラス&lt;/a&gt;を使用してメトリクスを収集し、Prometheus と、&lt;a href="https://www.nuget.org/packages/OpenTelemetry.Exporter.OpenTelemetryProtocol" target="_blank" rel="noopener" class="external-link"&gt;&lt;code&gt;OpenTelemetry.Exporter.OpenTelemetryProtocol&lt;/code&gt;&lt;/a&gt; NuGet パッケージが提供する &lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/docs/specs/otel/protocol/exporter/"&gt;OTLP エクスポーター&lt;/a&gt;などの別のエクスポーターの両方にエクスポートできます。&lt;/p&gt;&#10;&lt;p&gt;Prometheus エクスポーターは、事実上 OpenTelemetry SDK の上に構築された &lt;a href="https://prometheus.io/docs/instrumenting/clientlibs/" target="_blank" rel="noopener" class="external-link"&gt;Prometheus クライアントライブラリ&lt;/a&gt;であり、アプリケーション内に HTTP スクレイプエンドポイントを公開して、Prometheus サーバーが定期的にアプリケーションからメトリクスを収集できるようにします。&#10;このエクスポーターは OpenTelemetry の &lt;a href="https://github.com/open-telemetry/opentelemetry-specification/blob/27b10516ad3a27c12a0ab5c63456ddc95766bc68/specification/metrics/sdk_exporters/prometheus.md" target="_blank" rel="noopener" class="external-link"&gt;Prometheus 仕様&lt;/a&gt;（&lt;a href="https://github.com/open-telemetry/opentelemetry-specification/blob/27b10516ad3a27c12a0ab5c63456ddc95766bc68/spec-compliance-matrix.md" target="_blank" rel="noopener" class="external-link"&gt;マトリクス&lt;/a&gt;）を実装し、&lt;a href="https://github.com/open-telemetry/opentelemetry-specification/blob/27b10516ad3a27c12a0ab5c63456ddc95766bc68/specification/compatibility/prometheus_and_openmetrics.md" target="_blank" rel="noopener" class="external-link"&gt;OpenMetrics との互換性&lt;/a&gt;を確保するために、&lt;a href="https://prometheus.io/docs/instrumenting/exposition_formats/" target="_blank" rel="noopener" class="external-link"&gt;ドキュメント化されたすべてのテキストエクスポジションフォーマット&lt;/a&gt;（まだ実験段階の &lt;a href="https://prometheus.io/docs/specs/om/open_metrics_spec_2_0/" target="_blank" rel="noopener" class="external-link"&gt;OpenMetrics 2.0&lt;/a&gt; を除く）を実装しています。&lt;/p&gt;&#10;&lt;pre class="mermaid"&gt;flowchart LR&#10; subgraph APP[&amp;#34;アプリケーション&amp;#34;]&#10; AC[&amp;#34;アプリケーションコード&amp;#34;]&#10; SDK[&amp;#34;OpenTelemetry SDK&amp;#34;]&#10; PE[&amp;#34;Prometheus エクスポーター&amp;#34;]&#10; OE[&amp;#34;OTLP エクスポーター（クライアント）&amp;#34;]&#10; EP[&amp;#34;GET /metrics HTTP エンドポイント（サーバー）&amp;#34;]&#10;&#10; AC --&amp;gt;|&amp;#34;メトリクスを生成&amp;#34;| SDK&#10; SDK --&amp;gt;|&amp;#34;メトリクスを供給&amp;#34;| PE&#10; PE --&amp;gt;|&amp;#34;text/plain としてメトリクスを提供&amp;#34;| EP&#10; SDK --&amp;gt;|&amp;#34;メトリクスを供給&amp;#34;| OE&#10; end&#10;&#10; P[&amp;#34;Prometheus（クライアント）&amp;#34;]&#10; OTB[&amp;#34;OpenTelemetry バックエンド（サーバー）&amp;#34;]&#10;&#10; P --&amp;gt;|&amp;#34;HTTP GET /metrics（スクレイプリクエスト）&amp;#34;| EP&#10; EP --&amp;gt;|&amp;#34;メトリクスレスポンス（テキスト形式）&amp;#34;| P&#10;&#10; OE --&amp;gt;|&amp;#34;OTLP エクスポートリクエスト&amp;#34;| OTB&#10; OTB --&amp;gt;|&amp;#34;OTLP レスポンス/確認応答&amp;#34;| OE&lt;/pre&gt;&#10;&lt;p&gt;.NET アプリケーションコードで &lt;code&gt;Meter&lt;/code&gt; クラスとともに &lt;code&gt;Counter&amp;lt;T&amp;gt;&lt;/code&gt;、&lt;code&gt;Gauge&amp;lt;T&amp;gt;&lt;/code&gt;、&lt;code&gt;Histogram&amp;lt;T&amp;gt;&lt;/code&gt; の計装のみを使用することで、.NET OpenTelemetry SDK と専用の Prometheus クライアントの両方を使わずにメトリクスを収集できます。&lt;/p&gt;</description></item><item><title>OTel-Native by Design - あらゆるオブザーバビリティスタックへのエクスポートが可能なプロダクトを作る</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/otel-native-by-design/</link><pubDate>Sat, 17 Oct 2026 01:28:06 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/otel-native-by-design/</guid><description>&lt;p&gt;&lt;a href="https://github.com/danielgblanco" target="_blank" rel="noopener" class="external-link"&gt;Dan Gomez Blanco&lt;/a&gt;（New Relic）の協力のもと執筆。&lt;/p&gt;&#10;&lt;p&gt;セルフホスト型ソフトウェアや SaaS プロダクトを開発していると、ユーザーはいずれ&lt;strong&gt;ログ、トレース、メトリクス&lt;/strong&gt;を自身のオブザーバビリティスタックに送りたいと要望するようになります。&#10;コンプライアンスの順守やコスト管理、あるいはすべてのオブザーバビリティデータを一箇所に集約するためです。&lt;/p&gt;&#10;&lt;p&gt;ユーザーを組み込みのダッシュボードに囲い込んだり、エクスポート先を特定のベンダーに限定したりすることは、不必要な摩擦を生みます。&#10;かわりに、OpenTelemetry（OTel）互換のあらゆるバックエンドへのエクスポートをサポートすることが、ベンダーニュートラルかつ将来性のあるプラクティスであり、ユーザーにオブザーバビリティスタックを自由に選択できる環境を提供します。&lt;/p&gt;&#10;&lt;p&gt;この記事では、ユーザーが望むときにログ、トレース、メトリクスを OTel バックエンドにエクスポートできるよう、プロダクトを設計する方法を概説します。&lt;/p&gt;&#10;&lt;img src="https://deploy-preview-12367--opentelemetry.netlify.app/blog/2026/otel-native-by-design/cover.png" alt="OTLP 標準によるテレメトリーエクスポートを有効にすることで、ユーザーは自分が選んだプラットフォーム上でデータを所有・分析できるようになります。"&gt;&lt;h2 id="the-four-observability-signals"&gt;4つのオブザーバビリティシグナル&lt;a class="td-heading-self-link" href="#the-four-observability-signals" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;OpenTelemetry は4つのシグナルタイプを定義しており、すべて標準の &lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/docs/specs/otlp/"&gt;OpenTelemetry Protocol（OTLP）&lt;/a&gt;で伝送されます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/concepts/signals/logs/"&gt;ログ&lt;/a&gt;:&lt;/strong&gt; イベントレコード、リクエスト/アクセスログ、およびタイムスタンプとメタデータを含むアプリケーションログ。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/concepts/signals/traces/"&gt;トレース&lt;/a&gt;:&lt;/strong&gt; 分散トレースとスパンにより、ユーザーはサービス間のリクエストフローを確認し、ログと関連付けることができます。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/concepts/signals/metrics/"&gt;メトリクス&lt;/a&gt;:&lt;/strong&gt; カウンター、ゲージ、ヒストグラム（例: リクエストレート、レイテンシー、エラーレート）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/concepts/signals/profiles/"&gt;プロファイル&lt;/a&gt;:&lt;/strong&gt; アプリケーションが実行中にどこでリソースを消費しているかを示すサンプル。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-alert td-alert--md alert alert-note" role="alert"&gt;&lt;div class="td-alert-heading alert-heading" role="heading"&gt;プロファイルはパブリックアルファ段階です&lt;/div&gt;&#10; &lt;div class="td-alert-body"&gt;&#10; &lt;p&gt;プロファイルは2026年3月26日に&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/profiles-alpha/"&gt;パブリックアルファ&lt;/a&gt;に入りました。&#10;シグナルとして、OpenTelemetry はプロファイルを現在の3つの主要なオブザーバビリティシグナルと並ぶものとして位置づけようとしており、コードベース全体のリソース使用パターンをキャプチャすることで、ユーザーが本番環境のインシデントをトラブルシュートする助けとなります。&lt;/p&gt;&#10;&lt;p&gt;このブログではログ、トレース、メトリクスにのみ焦点を当てていますが、プロファイルがどのような形になるか、そしてコミュニティがオブザーバビリティシステムでどのように活用するか、楽しみにしています。&lt;/p&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;同じエクスポートの仕組みが3つすべて（ログ、トレース、メトリクス）に適用されます。&#10;ユーザーが OTLP エンドポイントを設定し、テレメトリーをそこに&lt;strong&gt;プッシュ&lt;/strong&gt;できるようにします。&#10;プロダクトが生成するものに応じて、1つ、2つ、または3つすべてのシグナルをサポートできます。&lt;/p&gt;&#10;&lt;p&gt;OTel エクスポートをサポートする多くのプラットフォームは、少なくともトレースとログをサポートしており、メトリクスサポートを提供するプラットフォームも増えています。&#10;3つすべてを最初から設計しておけば、後からレトロフィットする必要がなくなります。&lt;/p&gt;&#10;&lt;h2 id="what-a-good-telemetry-system-looks-like"&gt;「良い」テレメトリーシステムとは&lt;a class="td-heading-self-link" href="#what-a-good-telemetry-system-looks-like" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;優れたエクスポートの仕組みには、サポートするすべてのシグナルに対していくつかの明確な特性があります。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;ベンダーニュートラル:&lt;/strong&gt; ユーザーは、ベンダーごとにカスタムインテグレーションを構築することなく、任意の OTel 互換エンドポイント、つまり &lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/collector/"&gt;Collector インスタンス&lt;/a&gt;や &lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/ecosystem/vendors/"&gt;OTLP を直接サポートする多くのバックエンド&lt;/a&gt;のいずれかを指定できます。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;大がかりなカスタム開発が不要:&lt;/strong&gt; 外部プラットフォーム（またはユーザーのツール）は、独自 API のかわりに標準の &lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/languages/"&gt;OTel SDK&lt;/a&gt; と OTLP プロトコルを使ってインテグレーションできます。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;豊富なコンテキストの保持:&lt;/strong&gt; エクスポートされたデータには、メタデータ、タイムスタンプ、利用可能な場合のトレース/スパンの関連付け（例: トレース ID にリンクされたログレコード）が含まれるべきであり、ユーザーはコンテキストを失うことなく自身のバックエンドでデバッグと分析ができます。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;セマンティック規約のサポート:&lt;/strong&gt; &lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/docs/specs/semconv/"&gt;セマンティック規約&lt;/a&gt;への準拠は、テレメトリーデータの標準化を保証し、互換性のあるあらゆるバックエンドで容易に解釈できるようにします。&#10;また、ファーストパーティかサードパーティかを問わず、ソフトウェアシステムの動作を理解するためのエンドユーザーの認知的負荷を軽減します。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;サポートするシグナルに対してこれらの原則に沿った設計であれば、最新のプラットフォームがオブザーバビリティエクスポートについて考えるやり方と一致しています。&lt;/p&gt;</description></item><item><title>OpenTelemetry をラップしないでください — 助けるつもりが逆効果になっているかもしれません</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/dont-wrap-opentelemetry/</link><pubDate>Wed, 14 Oct 2026 14:33:38 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/dont-wrap-opentelemetry/</guid><description>&lt;p&gt;OpenTelemetry を導入する多くのチームで、あるパターンを目にしてきました。&#10;毎回、善意から始まります。&#10;あるエンジニアがチームの作業を楽にしたいと考え、OTel API の上に薄い抽象化レイヤーを構築します。&#10;&lt;code&gt;IMetric&lt;/code&gt; インターフェイス、&lt;code&gt;TelemetryHelper&lt;/code&gt; クラス、&lt;code&gt;MetricsWrapper&lt;/code&gt; モジュールなどを作り、チームの標準として展開します。&#10;「これを使えばいい」と彼らは言います。&#10;「もっとシンプルだから」と。&lt;/p&gt;&#10;&lt;p&gt;意図は本物です。&#10;しかし、結果はたいていよくありません。&lt;/p&gt;&#10;&lt;p&gt;ここでは .NET と Rust のメトリクスを具体例として使いますが、アンチパターンはすべての OpenTelemetry 言語 SDK とシグナルタイプに共通して当てはまります。&lt;/p&gt;&#10;&lt;p&gt;明確にしておくと、この記事は &lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/docs/specs/otel/overview/"&gt;OTel API&lt;/a&gt;、つまりアプリケーションやライブラリのコードがログ、メトリクス、トレースを生成するために呼び出す計装インターフェイスのラップについて述べています。&#10;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/docs/specs/otel/glossary/#telemetry-sdk"&gt;SDK&lt;/a&gt; を設定する共有ヘルパー、たとえばエクスポーターやサンプリングポリシー、リソース属性などのセットアップを組織が提供するのは、まったく合理的なことです。&#10;それはインフラストラクチャのセットアップであり、API ラッパーではなく、開発者がコードを計装する方法を妨げるものではありません。&lt;/p&gt;&#10;&lt;h2 id="what-the-wrapper-looks-like"&gt;ラッパーの典型的な姿&lt;a class="td-heading-self-link" href="#what-the-wrapper-looks-like" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;ラッパーは通常、小さく合理的なところから始まります。&#10;C# の場合:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="k"&gt;interface&lt;/span&gt; &lt;span class="nc"&gt;IMetric&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="n"&gt;RecordHistogram&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;long&lt;/span&gt; &lt;span class="n"&gt;val&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;KeyValuePair&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;attributes&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Rust の場合:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-rust" data-lang="rust"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;record_histogram&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;: &lt;span class="kt"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;attributes&lt;/span&gt;: &lt;span class="nb"&gt;Vec&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cm"&gt;/* ... */&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これがなぜ問題なのかを見ていきましょう。&lt;/p&gt;&#10;&lt;h2 id="anti-pattern-1-the-signature-that-forces-allocation"&gt;アンチパターン #1: アロケーションを強制するシグネチャ&lt;a class="td-heading-self-link" href="#anti-pattern-1-the-signature-that-forces-allocation" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;List&amp;lt;KeyValuePair&amp;lt;string, string&amp;gt;&amp;gt;&lt;/code&gt; や &lt;code&gt;Vec&amp;lt;(String, String)&amp;gt;&lt;/code&gt; — ラッパーが呼び出し元に構築を強制するコレクション型であれば、どれも同じ問題を抱えています。&#10;すべてヒープアロケーションが発生します。&lt;/p&gt;&#10;&lt;p&gt;OTel .NET の &lt;code&gt;Histogram&amp;lt;T&amp;gt;.Record()&lt;/code&gt; には、設計上アロケーションが不要な、1個、2個、3個の属性に対応する専用オーバーロードがあります:&lt;/p&gt;</description></item><item><title>OpenTelemetry のエンティティイベントで何ができるのか</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/consuming-opentelemetry-entity-events/</link><pubDate>Mon, 12 Oct 2026 10:33:36 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/consuming-opentelemetry-entity-events/</guid><description>&lt;p&gt;メトリクス、ログ、トレースはシステムがどのように &lt;em&gt;振る舞うか&lt;/em&gt; を教えてくれます。&#10;しかし、実際に何が &lt;em&gt;存在する&lt;/em&gt; かについてはあまり語りません。&#10;どのホスト、インターフェイス、スイッチ、サービス、ボリュームが今そこにあるのか、そして決定的に重要なこととして、その全体像がこの1時間、1日、あるいは四半期でどう変わったのか。&#10;この動的なインベントリは、オープンなオブザーバビリティスタックにおいて盲点であり続けてきました。&lt;/p&gt;&#10;&lt;p&gt;OpenTelemetry の &lt;strong&gt;エンティティイベント&lt;/strong&gt; は、Entities SIG の成果であり、&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/docs/specs/otel/entities/data-model/"&gt;エンティティデータモデル&lt;/a&gt;に記述されています。&#10;これがその盲点を埋め始める要素です。&#10;エンティティイベントは &lt;em&gt;ストリーム&lt;/em&gt; です。&#10;興味深い問いは &lt;strong&gt;「届いたあとに何をするのか」&lt;/strong&gt; です。&#10;この記事では、オープンソースのコンシューマーを実例として、その問いへの一つの答えを紹介します。&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; エンティティデータモデルとその規約はまだ &lt;strong&gt;開発中&lt;/strong&gt; （安定版ではない）であり、進化を続けています。&#10;以下の属性名は例示として扱い、最新の仕様と照合してください。&#10;ここでの内容はエンティティイベントを活用する一般的な方法論であり、どのようなコンシューマーにも当てはまります。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="a-60-second-primer-on-entity-events"&gt;エンティティイベントの60秒入門&lt;a class="td-heading-self-link" href="#a-60-second-primer-on-entity-events" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;OpenTelemetry は &lt;em&gt;エンティティイベント&lt;/em&gt; を、エンティティセマンティック規約でアノテーションされた &lt;strong&gt;OTLP ログレコード&lt;/strong&gt; として運びます。&#10;各イベントはエンティティの型、識別属性、説明属性、およびライフサイクルを示すイベントタイプを持ちます。&#10;コンシューマーは &lt;code&gt;otel.entity.event.type&lt;/code&gt; の存在だけでレコードを分類できます。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;# エンティティイベントのログレコード（例示）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;LogRecord&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Timestamp: 2026-05-26T08:00:00Z # プロデューサー側のタイムスタンプ&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; attributes:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; otel.entity.event.type: entity_state # 観測された状態、または entity_delete&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; otel.entity.type: host&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; otel.entity.id: { host.name: web-server-1 } # 識別属性（マップ）&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; otel.entity.attributes: { os.type: linux, host.arch: amd64 } # 説明属性（マップ）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;プロデューサーがこれらを送信します。&#10;ホストエージェント、ネットワークエージェント、OTLP を話すものなら何でも構いません。&#10;コンシューマーの仕事は、このような一連の観測を &lt;em&gt;問い合わせ可能な&lt;/em&gt; ものに変えることです。&#10;その形はパイプラインです。&lt;/p&gt;</description></item><item><title>OBI によるゼロコードのトレースとログの相関</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/obi-trace-log-correlation/</link><pubDate>Mon, 12 Oct 2026 09:34:48 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/obi-trace-log-correlation/</guid><description>&lt;p&gt;ページャーが鳴ります。&#10;トレースを見ると、あるサービスでリクエストが失敗していることがわかります。&#10;答えはログの中にあるはずですが、&lt;em&gt;あの&lt;/em&gt; リクエストに属するログ行はどれでしょうか。&#10;サービスがトレースコンテキスト付きの構造化ログを採用していなければ、正直なところ、タイムスタンプで grep して祈るしかありません。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/open-telemetry/opentelemetry-ebpf-instrumentation" target="_blank" rel="noopener" class="external-link"&gt;OpenTelemetry eBPF Instrumentation（OBI）&lt;/a&gt;は、サービスがすでに出力しているログに、欠けていたトレースコンテキストを追加できるようになりました。&#10;アプリケーション側の変更は不要です。&#10;SDK も、ロギングライブラリの設定変更も、アプリケーションの再ビルドや再デプロイも必要ありません。&lt;/p&gt;&#10;&lt;p&gt;最初に制約を明確にしておきます。&#10;対象となるのは stdout または stderr に書き込まれたログ、つまりコンテナランタイムがキャプチャするストリームです。&#10;ログ行にアノテーションが付与されるのは、書き込み時点で OBI が処理中のリクエストに対してアクティブなトレースコンテキストを持っている場合です。&#10;ロールアウトするのは、OBI の設定変更と、ログパイプラインでの1行のフィルター追加です。&lt;/p&gt;&#10;&lt;p&gt;内部的には、OBI は eBPF を通じて、各スレッドがログ行を書き込む時点でどのリクエストを処理しているかをすでに把握しています。&#10;それがこの仕組みのすべてです。&#10;コンテナのロギングパイプラインがログ行を受け取る前に、相関フィールドが追加されます。&#10;この記事の残りでは、実際に何が変わるのか、この機能が環境に何を要求するのか、そして有効化する方法を説明します。&lt;/p&gt;&#10;&lt;h2 id="what-changes-during-an-incident"&gt;インシデント時に何が変わるか&lt;a class="td-heading-self-link" href="#what-changes-during-an-incident" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;アプリケーションが次のように書き込みます。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;level&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;INFO&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;payment authorized&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;amount&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コンテナログは次のようになります。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;level&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;INFO&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;message&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;payment authorized&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;amount&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;trace_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;4bf92f3577b34da6a3ce929d0e0e4736&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;span_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;00f067aa0ba902b7&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ID は OBI がそのリクエストのスパンで報告するものと同一なので、相関は双方向に機能します。&#10;失敗したトレースから &lt;code&gt;trace_id&lt;/code&gt; をコピーしてログ検索に貼り付ければ、そのリクエストのログ行だけが得られます。&#10;あるいは、不審なログ行から &lt;code&gt;trace_id&lt;/code&gt; をコピーしてトレースバックエンドに入力すれば、そのログが属するトレースに到達できます。&lt;/p&gt;&#10;&lt;p&gt;JSON ログ、NDJSON、プレーンテキストで機能します。&#10;自由形式のログ行には &lt;code&gt;key=value&lt;/code&gt; アノテーションが付きます。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;payment authorized trace_id=4bf92f3577b34da6a3ce929d0e0e4736 span_id=00f067aa0ba902b7&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ロガーが設定済みのフィールドのいずれかをすでに出力している場合、OBI はそれを保持し、欠けているフィールドのみを補完します。&lt;/p&gt;&#10;&lt;p&gt;小さなデモでのエンドツーエンドの例を示します。&#10;計装されていない Go の &lt;code&gt;frontend&lt;/code&gt; が計装されていない Go の &lt;code&gt;backend&lt;/code&gt; を呼び出し、それぞれがリクエストごとに1行の JSON をログ出力します。&#10;これに OBI と Jaeger を加えた合計4つのコンテナです。&#10;アプリケーションコードには OpenTelemetry SDK は一切ありません。&lt;/p&gt;</description></item><item><title>OpenTelemetry が卒業しました… さて、次は？</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/otel-grad-now-what/</link><pubDate>Mon, 12 Oct 2026 09:27:26 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/otel-grad-now-what/</guid><description>&lt;p&gt;見逃していたかもしれない方のためにお伝えします。&#10;&lt;a href="https://www.cncf.io/announcements/2026/05/21/cloud-native-computing-foundation-announces-opentelemetrys-graduation-solidifying-status-as-the-de-facto-observability-standard/" target="_blank" rel="noopener" class="external-link"&gt;OpenTelemetry（OTel）が正式に CNCF graduated ステータスを取得しました&lt;/a&gt;！&#10;いまや &lt;a href="https://kubernetes.io" target="_blank" rel="noopener" class="external-link"&gt;Kubernetes&lt;/a&gt; や &lt;a href="https://prometheus.io/" target="_blank" rel="noopener" class="external-link"&gt;Prometheus&lt;/a&gt; などの素晴らしいオープンソースプロジェクトと並ぶ存在です。&#10;長い道のりでしたし、私たちもとても興奮しています… ですが、次はどうなるのでしょうか？&#10;これからの方向性を理解するには、これまでの歩みを振り返ることが重要です。&lt;/p&gt;&#10;&lt;h2 id="history"&gt;歴史&lt;a class="td-heading-self-link" href="#history" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;それほど遠くない過去、テレメトリーシグナルは標準化されていませんでした。&#10;つまり、テレメトリーのフォーマットはツールごとに異なり、各テレメトリーベンダーが独自の計装ライブラリを作成・管理していました。&#10;ベンダーロックインは大きな問題でした。&#10;ベンダーを切り替えたい場合、既存のベンダーのライブラリをコードから取り除き、新しいベンダーのライブラリに置き換える必要がありました。&#10;その結果、ベンダーの切り替えは容易な作業ではありませんでした。&lt;/p&gt;&#10;&lt;p&gt;さらに、3つのコアテレメトリーシグナル（トレース、ログ、メトリクス）はそれぞれ独立して扱われていたため、相互に関連付ける簡単な方法がありませんでした。&#10;このため、オブザーバビリティの全体像は不完全でした。&lt;/p&gt;&#10;&lt;p&gt;標準化に向けた過去の試みとして、&lt;a href="https://cncf.io" target="_blank" rel="noopener" class="external-link"&gt;CNCF&lt;/a&gt; の &lt;a href="https://opentracing.io" target="_blank" rel="noopener" class="external-link"&gt;OpenTracing&lt;/a&gt; と Google の &lt;a href="https://opencensus.io" target="_blank" rel="noopener" class="external-link"&gt;OpenCensus&lt;/a&gt; があり、これらが後の OpenTelemetry の基盤となりました。&lt;/p&gt;&#10;&lt;img src="https://deploy-preview-12367--opentelemetry.netlify.app/blog/2026/otel-grad-now-what/otel-timeline.png" alt="OpenTelemetry のタイムライン" title="OpenTelemetry timeline"&gt;&lt;p&gt;単一の標準を目指し、2019年5月に OpenCensus と OpenTracing が統合されて &lt;a href="https://opentelemetry.io" target="_blank" rel="noopener" class="external-link"&gt;OpenTelemetry&lt;/a&gt; が誕生しました。&#10;OpenTelemetry は両者の長所を取り入れ、さらにその先へと進み、トレース、メトリクス、ログの仕様、標準化された API セット、それらの API の言語固有の実装、そして &lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/collector/"&gt;Collector&lt;/a&gt; を提供しています。&lt;/p&gt;&#10;&lt;p&gt;OpenCensus と OpenTracing はいずれも正式にアーカイブされました。&#10;OpenTracing は2022年1月にアーカイブされ、OpenCensus は2023年7月にアーカイブされました。&lt;/p&gt;&#10;&lt;p&gt;すべての主要なオブザーバビリティベンダーの支援と、活発な開発者・エンドユーザーコミュニティのもと、OpenTelemetry はテレメトリーのオープン標準となりました。&lt;/p&gt;&#10;&lt;h2 id="growth"&gt;成長&lt;a class="td-heading-self-link" href="#growth" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://www.cncf.io/blog/2026/02/09/what-cncf-project-velocity-in-2025-reveals-about-cloud-natives-future/" target="_blank" rel="noopener" class="external-link"&gt;OpenTelemetry は CNCF で2番目に活発なプロジェクト&lt;/a&gt;であり、Kubernetes に次ぐ規模です。&#10;&lt;a href="https://www.cncf.io/announcements/2026/05/21/cloud-native-computing-foundation-announces-opentelemetrys-graduation-solidifying-status-as-the-de-facto-observability-standard/" target="_blank" rel="noopener" class="external-link"&gt;CNCF によると&lt;/a&gt;、OpenTelemetry は「2,800社超の企業からの12,000件超のコントリビューションと、さまざまな言語固有の Special Interest Group（SIG）にまたがる数百人のメンテナー」を擁しています。&lt;/p&gt;&#10;&lt;p&gt;設立以来、トレース、ログ、メトリクスは一般提供（GA）に達しました。&#10;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/blog/2024/profiling"&gt;プロファイリング&lt;/a&gt;が新しい OTel シグナルとして追加されました。&#10;&lt;a href="https://github.com/open-telemetry/opentelemetry-demo" target="_blank" rel="noopener" class="external-link"&gt;OpenTelemetry Demo&lt;/a&gt; は拡張されました。&#10;&lt;a href="https://github.com/open-telemetry/opentelemetry-collector" target="_blank" rel="noopener" class="external-link"&gt;OTel Collector&lt;/a&gt; も拡張され、新しいコンポーネントが定期的に追加されています。&#10;OTel エコシステムをより使いやすくするための新しいコンポーネントも追加されてきました。&#10;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/docs/specs/opamp/"&gt;OpAMP&lt;/a&gt;、&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/platforms/kubernetes/operator/"&gt;OTel Operator&lt;/a&gt;、&lt;a href="https://github.com/open-telemetry/weaver" target="_blank" rel="noopener" class="external-link"&gt;OTel Weaver&lt;/a&gt;、&lt;a href="https://github.com/open-telemetry/otel-arrow" target="_blank" rel="noopener" class="external-link"&gt;OTel Arrow&lt;/a&gt; などです。&lt;/p&gt;</description></item><item><title>OpenTelemetry 計装エコシステムの探求</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/exploring-instrumentation-ecosystem/</link><pubDate>Mon, 12 Oct 2026 08:49:49 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/exploring-instrumentation-ecosystem/</guid><description>&lt;p&gt;OpenTelemetry には多くの構成要素があります。&#10;API、SDK、プロトコル、セマンティック規約、計装、そして Collector のようなツールです。&#10;API とプロトコルはテレメトリーの作成と交換の方法を定義し、計装はアプリケーション内部で実際に何が起きているかを観測してテレメトリーに変換します。&#10;セマンティック規約は、計装を書く人々に対して、観測対象を記述するための共通の方法を提供します。&lt;/p&gt;&#10;&lt;p&gt;このアプローチの優れた点は、まったく別々の作者が異なるライブラリを異なる言語で計装しても、同じ規約に従ったテレメトリーを生成できることです。&#10;HTTP リクエストは、どのライブラリやどの言語が生成したかに関係なく、HTTP リクエストとして見えます。&#10;ユーザーはその共通の理解に基づいて、クエリ、ダッシュボード、その他のツールを構築できます。&#10;規約に合意しさえすれば、すべてが整合するはずです。&lt;/p&gt;&#10;&lt;p&gt;しかし、まだそうはなっていません。&lt;/p&gt;&#10;&lt;p&gt;規約は進化し、ドメインの安定化には何年もかかります。&#10;HTTP は2019年6月に仕様に入りましたが、コア規約が安定版に達したのは2023年11月でした。&#10;データベースはほぼ同時期に始まり、安定版に達したのは2025年5月でした。&lt;/p&gt;&#10;&lt;figure&gt;&lt;img src="https://deploy-preview-12367--opentelemetry.netlify.app/blog/2026/exploring-instrumentation-ecosystem/semconv-timeline.png"&#10;&#9;&#9;&#9;alt="Timeline comparing two semantic convention domains. HTTP enters the specification in June 2019, its core conventions reach stable in November 2023, and legacy attributes are listed in December 2023. Database enters in May 2019, goes through an attribute migration in May 2024, reaches release candidate in October 2024, and reaches stable in May 2025."&gt;&lt;figcaption&gt;&#10;&#9;&#9;&#9;&lt;p&gt;HTTP とデータベースのセマンティック規約のタイムライン。仕様への導入からコア規約の安定化まで。&lt;/p&gt;</description></item><item><title>OTel デモを壊しました</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/we-broke-the-demo/</link><pubDate>Mon, 12 Oct 2026 08:43:29 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/we-broke-the-demo/</guid><description>&lt;p&gt;長い間デモを運用してきた方は、最近いくつかの構造的な変更に気づいたかもしれませんし、期待どおりに動作しなくなったことに怒りを覚えたかもしれません。&#10;その気持ちはよくわかりますし、十分に理解しています。&#10;残念ながら、既存のフローを壊さずに変更を行う方法はありませんでした。&lt;/p&gt;&#10;&lt;p&gt;以前のものは一部なくなりました。&#10;新しいサービスが追加されました。&#10;属性名が変更されました。&#10;カスタムメトリクスのダッシュボードを持っていた方は、すべてが壊れているはずです。&lt;/p&gt;&#10;&lt;p&gt;これは偶然ではありません。&lt;/p&gt;&#10;&lt;p&gt;OTel デモは常にリビングリファレンス実装であり、コミュニティが OTel で何ができるかを示す場所でした。&#10;しばらくすると、私たちが目指す方向の妨げになるものが蓄積されていきました。&#10;3.0 は、それを一掃する取り組みです。&#10;意図的に、短期的な痛みを伴うことを承知の上で、明確な目的を持って行いました。&lt;/p&gt;&#10;&lt;p&gt;以下が主な変更点です。&lt;/p&gt;&#10;&lt;h2 id="what-we-broke-and-why"&gt;何を壊したか（そしてなぜ）&lt;a class="td-heading-self-link" href="#what-we-broke-and-why" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;アップグレードするとすぐに影響を受ける変更が2つあります。&#10;1つはダッシュボードを壊し、もう1つはローカルやフォークでのデモの実行方法を壊します。&lt;/p&gt;&#10;&lt;h3 id="the-rename-nobody-wanted-but-everyone-needed"&gt;誰も望まなかったが全員が必要としていたリネーム&lt;a class="td-heading-self-link" href="#the-rename-nobody-wanted-but-everyone-needed" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;この変更はすべてのサービスに影響し、既存のダッシュボードやクエリを壊すため、独立したセクションにする価値があります。&#10;すべてのカスタムテレメトリー属性が &lt;code&gt;app.*&lt;/code&gt; から &lt;code&gt;demo.*&lt;/code&gt; にリネームされました。&lt;/p&gt;&#10;&lt;p&gt;すべてです。&#10;&lt;code&gt;app.product.id&lt;/code&gt; は &lt;code&gt;demo.product.id&lt;/code&gt; になりました。&#10;&lt;code&gt;app.order.id&lt;/code&gt; は &lt;code&gt;demo.order.id&lt;/code&gt; に。&#10;&lt;code&gt;app.payment.amount&lt;/code&gt; は &lt;code&gt;demo.payment.amount&lt;/code&gt; に。&#10;すべてのサービスにわたって同様です。&#10;しかし、なぜでしょうか。&lt;/p&gt;&#10;&lt;p&gt;2022年に OTel デモを始めた頃、&lt;code&gt;app.*&lt;/code&gt; は予約済みの属性ではなく、その名前空間ですべてのカスタム属性とメトリクスを構築していました。&#10;時が経ち、2023年に &lt;code&gt;app.*&lt;/code&gt; が&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/docs/specs/semconv/registry/attributes/app/"&gt;クライアントサイドアプリケーション（ウェブアプリやモバイルアプリなど）に関連する属性を表す&lt;/a&gt;ためにプロジェクトに追加されました。&lt;/p&gt;&#10;&lt;p&gt;しかし、それが2023年に導入されたのに、なぜデモはまだ使い続けていたのでしょうか。&lt;/p&gt;&#10;&lt;p&gt;主な理由は2つあると考えられます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;それを支援するツールが必要でした。&lt;/li&gt;&#10;&lt;li&gt;タスクを手伝ってくれるコントリビューターがもっと必要でした。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;1つ目は、&lt;a href="https://github.com/martinjt" target="_blank" rel="noopener" class="external-link"&gt;Martin Thwaites&lt;/a&gt; が &lt;a href="https://github.com/open-telemetry/weaver" target="_blank" rel="noopener" class="external-link"&gt;OpenTelemetry Weaver&lt;/a&gt; をデモに導入したことで解決されました。&#10;2つ目は、&lt;a href="https://www.cncf.io/blog/2026/03/31/sustaining-opentelemetry-moving-from-dependency-management-to-stewardship/" target="_blank" rel="noopener" class="external-link"&gt;Bloomberg メンターシップ&lt;/a&gt;を通じてデモのコントリビューターになった &lt;a href="https://github.com/fbourgey" target="_blank" rel="noopener" class="external-link"&gt;Florian Bourgey&lt;/a&gt; の協力で解決されました。&#10;これは、OTel デモが OTel エコシステム全体とどれほど密接に結びついているかを示しています。&lt;/p&gt;</description></item><item><title>環境変数によるコンテキスト伝搬の安定化にご協力ください</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/environment-variable-context-propagation/</link><pubDate>Mon, 12 Oct 2026 08:43:13 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/environment-variable-context-propagation/</guid><description>&lt;p&gt;トレースは常にネットワーク境界を越えるわけではありません。&#10;ワークフローランナーがシェルを起動し、シェルがビルドツールを立ち上げ、ビルドツールがテストプロセスを開始します。&#10;バッチ処理やデータ処理システムでも、同様の子プロセスのチェーンが作られます。&#10;これらの境界を越えてトレース情報を受け渡す共通の方法がなければ、各プロセスのスパンは別々のトレースに分かれてしまいます。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/concepts/context-propagation/"&gt;コンテキスト伝搬&lt;/a&gt;に馴染みがない方に説明すると、これはあるサービスやプロセスから次のサービスやプロセスへ情報を運ぶ仕組みです。&#10;トレーシングにおいては、新しいスパンが同じトレースに参加できるようにするトレース ID やスパン ID が含まれます。&#10;また、バゲージも運ぶことができます。バゲージとは、下流の処理に渡されるアプリケーション定義のキーバリューペアです。&lt;/p&gt;&#10;&lt;p&gt;OpenTelemetry の仕様では、&lt;a href="https://github.com/open-telemetry/opentelemetry-specification/blob/eec6fadba46a5002f55ff88ce4405d58a1aa4aec/specification/context/env-carriers.md" target="_blank" rel="noopener" class="external-link"&gt;環境変数をコンテキスト伝搬のキャリアとして使用する&lt;/a&gt;ためのリリース候補が公開されました。&#10;プロトコルヘッダーやメッセージメタデータが利用できない場合に、プロパゲーターが環境変数を使ってトレースコンテキストやバゲージなどのデータをプロセス間で運ぶ方法を標準化するものです。&lt;/p&gt;&#10;&lt;p&gt;この仕様を Stable にする前に、言語実装者、ツール作者、プラットフォームエンジニア、そして実際の CI/CD、バッチ処理、コマンドラインのワークロードを運用しているユーザーからのフィードバックを求めています。&lt;/p&gt;&#10;&lt;h2 id="what-is-an-environment-variable-carrier"&gt;環境変数キャリアとは&lt;a class="td-heading-self-link" href="#what-is-an-environment-variable-carrier" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;キャリアとは、サービスやプロセス間で伝搬データを受け渡すために使われる媒体です。&#10;プロパゲーターは伝搬フィールドをキャリアに書き込み、受信側でそれを読み取ります。&#10;HTTP ヘッダーはよく知られたキャリアです。&#10;あるプロセスが別のプロセスを起動する場合、子プロセスの環境が同じ役割を果たすことができます。&#10;伝搬フィールドは子プロセスの起動前に書き込まれ、子プロセスの初期化時に読み取られます。&lt;/p&gt;&#10;&lt;p&gt;リリース候補では、この仕組みがプラットフォーム間で一貫して動作するためのルールを定義しています。&#10;仕様では、文字列のキーバリューキャリアと共に使われるプロパゲーターの型を &lt;a href="https://github.com/open-telemetry/opentelemetry-specification/blob/ce9394dc3dd53bb182611d2f3ba1e8f53975e905/specification/context/api-propagators.md#textmap-propagator" target="_blank" rel="noopener" class="external-link"&gt;&lt;code&gt;TextMapPropagator&lt;/code&gt;&lt;/a&gt; と呼んでいます。&lt;/p&gt;&#10;&lt;p&gt;たとえば、W3C Trace Context と W3C Baggage プロパゲーターを使用する場合、伝搬フィールドは以下のような環境変数で表されます。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;TRACEPARENT=00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;TRACESTATE=vendorname=opaquevalue&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;BAGGAGE=build.id=42,repository.name=example&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://github.com/open-telemetry/opentelemetry-specification/blob/ce9394dc3dd53bb182611d2f3ba1e8f53975e905/specification/context/api-propagators.md#operations" target="_blank" rel="noopener" class="external-link"&gt;OpenTelemetry Propagators API&lt;/a&gt; では、伝搬フィールドをキャリアに書き込むことを&lt;strong&gt;注入&lt;/strong&gt;、読み取ることを&lt;strong&gt;抽出&lt;/strong&gt;と呼びます。&lt;/p&gt;&#10;&lt;p&gt;プロセス内部では、OpenTelemetry は伝搬データを &lt;code&gt;Context&lt;/code&gt; に保持します。&#10;トレーシングの場合、そのデータには &lt;code&gt;SpanContext&lt;/code&gt; が含まれ、&lt;code&gt;Baggage&lt;/code&gt; も含まれることがあります。&#10;注入時に、プロパゲーターは現在の &lt;code&gt;Context&lt;/code&gt; からデータを読み取り、キャリアに書き込みます。&#10;抽出時には、キャリアを読み取り、そのデータを含む新しい &lt;code&gt;Context&lt;/code&gt; を返します。&lt;/p&gt;&#10;&lt;p&gt;環境変数キャリアはこれらの値を解釈しません。&#10;プレーンな文字列として扱います。&#10;フィールド名の選択、値の検証と解析は、設定されたプロパゲーターが引き続き担当します。&#10;これにより、キャリアは W3C フォーマットだけでなく、B3 のようなフォーマットでも使用できます。&lt;/p&gt;&#10;&lt;p&gt;環境変数名は HTTP ヘッダー名よりも制約が多いため、仕様では正規化アルゴリズムを定義しています。&#10;ASCII 文字を大文字に変換し、サポートされない文字をアンダースコアに置き換え、名前が数字で始まらないようにします。&#10;たとえば以下のようになります。&lt;/p&gt;</description></item><item><title>OpenTelemetry におけるメトリクスのカーディナリティ制限：実践ガイド</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/cardinality-limits-in-opentelemetry/</link><pubDate>Mon, 12 Oct 2026 08:43:02 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/cardinality-limits-in-opentelemetry/</guid><description>&lt;p&gt;OpenTelemetry のメトリクスは、本番環境で安全に使えるように設計されています。&#10;その安全性の一部を担っているのが、メトリクス SDK の&lt;strong&gt;カーディナリティ制限&lt;/strong&gt;です。&#10;この制限は、メトリクスが一意な属性の組み合わせを過剰に受け取ったときに、プロセスのメモリが際限なく増加するのを防ぎます。&lt;/p&gt;&#10;&lt;p&gt;この保護は有用ですが、多くのユーザーが予想しない結果をもたらします。&#10;メトリクスストリームがオーバーフローすると、合計値は正しいままですが、属性でフィルタリングまたはグループ化するクエリは過少にカウントされる可能性があります。&#10;これは、オーバーフローが始まる前には正しく見えていたダッシュボード、サービスレベル目標（SLO）、アラートに影響する可能性があります。&lt;/p&gt;&#10;&lt;p&gt;メトリクスのコンセプトドキュメントには、SDK の動作を詳しく説明する&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/concepts/signals/metrics/#cardinality-limits"&gt;カーディナリティ制限&lt;/a&gt;セクションが追加されました。&#10;この投稿は、そのドキュメントの運用面を補完するものです。&#10;制限が実際に何を意味するのか、オーバーフローした測定値のすべての属性がなぜ影響を受けるのか、適切な制限をどう選ぶか、すでに制限に達しているかどうかをどう確認するか、そして本番環境でどう監視するかを説明します。&lt;/p&gt;&#10;&lt;h2 id="the-basic-model"&gt;基本モデル&lt;a class="td-heading-self-link" href="#the-basic-model" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;メトリクスの測定値を記録するとき、&lt;code&gt;http.route=/checkout&lt;/code&gt;、&lt;code&gt;http.request.method=GET&lt;/code&gt;、&lt;code&gt;success=false&lt;/code&gt; などの属性を付与できます。&#10;SDK は属性値の完全なセットごとに測定値を集約します。&#10;一意な属性の組み合わせごとに、SDK がメモリ上で追跡する個別のデータポイントになります。&lt;/p&gt;&#10;&lt;p&gt;たとえば、このリクエストカウンターには4つの一意な組み合わせがあります。&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;code&gt;http.route&lt;/code&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;code&gt;success&lt;/code&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;カウント&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/home&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;130&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/home&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/cart&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;50&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/cart&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;このメトリクスストリームのカーディナリティは4です。&#10;&lt;code&gt;tenant_id&lt;/code&gt; のような高カーディナリティの属性を追加すると、組み合わせの数は非常に急速に増加します。&#10;これが SDK が制限を強制する理由です。&#10;デフォルトの集約カーディナリティ制限は、メトリクスストリームあたり2000の組み合わせです。&lt;/p&gt;&#10;&lt;p&gt;制限に達すると、追加の組み合わせは破棄されません。&#10;それらの値は &lt;code&gt;otel.metric.overflow=true&lt;/code&gt; でマークされた単一のオーバーフローデータポイントに集約されます。&#10;重要なのは、元の測定値の属性がオーバーフローデータポイントから削除されるという点です。&lt;/p&gt;&#10;&lt;p&gt;したがって、次の測定値がオーバーフローした場合：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{http.route=/checkout, success=false} 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;エクスポートされる値は次の一部となります：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;{otel.metric.overflow=true} 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;合計カウントは引き続き正しいです。&#10;リクエスト総数のクエリでは値を確認できます。&#10;しかし、&lt;code&gt;success=false&lt;/code&gt; のクエリではその値を確認できません。&#10;オーバーフローデータポイントは &lt;code&gt;success=false&lt;/code&gt; を持たないためです。&lt;/p&gt;&#10;&lt;p&gt;ここで覚えておくべきことがあります。&#10;オーバーフローは、高カーディナリティを引き起こした属性だけでなく、&lt;strong&gt;属性の組み合わせ全体&lt;/strong&gt;に影響します。&#10;真偽値の &lt;code&gt;success&lt;/code&gt; のような低カーディナリティの属性であっても、その測定値がオーバーフローに集約されると、フィルタリングやグループ化に対して信頼できなくなります。&lt;/p&gt;&#10;&lt;h2 id="the-production-implications"&gt;本番環境への影響&lt;a class="td-heading-self-link" href="#the-production-implications" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;カーディナリティ制限は、プロセスのメモリ保護メカニズムです。&#10;すべてのメトリクスの内訳がクエリ可能であることを一般的に保証するものではなく、バックエンドのカーディナリティ制限でもありません。&lt;/p&gt;</description></item><item><title>OpenTelemetry Java エージェント 3.0 がまもなく登場 — 今すぐプレビューしましょう</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/java-agent-3.0-preview/</link><pubDate>Sun, 11 Oct 2026 01:11:24 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/java-agent-3.0-preview/</guid><description>&lt;p&gt;&lt;a href="https://github.com/open-telemetry/opentelemetry-java-instrumentation" target="_blank" rel="noopener" class="external-link"&gt;OpenTelemetry Java エージェント&lt;/a&gt;の &lt;strong&gt;&lt;a href="https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/tag/v2.32.0" target="_blank" rel="noopener" class="external-link"&gt;2.32.0 リリース&lt;/a&gt;&lt;/strong&gt; が公開されました。&#10;これは &lt;strong&gt;3.0&lt;/strong&gt; のリリース候補であり、&lt;strong&gt;2026年10月&lt;/strong&gt; のリリースを目標としています。&#10;3.0 までに一部の動作が変更される可能性はありますが、デフォルトになる前に今すぐ新しい動作をプレビューできます。&lt;/p&gt;&#10;&lt;p&gt;3.0 はテレメトリー、設定、計装のデフォルトを変更します。&#10;データベースとコードの規約は安定版のデフォルトになり、メッセージングはまだ実験的な新しい規約を採用し、一部のキャプチャ設定や計装のデフォルトも変更されます。&#10;&lt;a href="#what-to-check"&gt;確認すべきポイント&lt;/a&gt;では各領域について説明しています。&lt;/p&gt;&#10;&lt;p&gt;ご自身のダッシュボード、アラート、ダウンストリームパイプラインに対して試し、3.0 が確定する前に&lt;a href="https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues" target="_blank" rel="noopener" class="external-link"&gt;問題があればお知らせください&lt;/a&gt;。&lt;/p&gt;&#10;&lt;h2 id="try-the-preview"&gt;プレビューを試す&lt;a class="td-heading-self-link" href="#try-the-preview" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;以下の例では、環境変数と&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/zero-code/java/agent/declarative-configuration/"&gt;宣言的設定&lt;/a&gt;を示しています。&#10;Java エージェントでの宣言的設定のサポートは実験的です。&#10;試す場合は、&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/zero-code/java/agent/declarative-configuration/#convert-your-existing-configuration"&gt;設定コンバーター&lt;/a&gt;と Ecosystem Explorer の&lt;a href="https://explorer.opentelemetry.io/java-agent/configuration/builder" target="_blank" rel="noopener" class="external-link"&gt;設定ビルダー&lt;/a&gt;を使って始められます。&#10;YAML ファイルは &lt;code&gt;-Dotel.config.file=/path/to/otel-config.yaml&lt;/code&gt; で渡してください。&lt;/p&gt;&#10;&lt;p&gt;環境変数を最初のタブに、宣言的設定を2番目のタブに表示しています。&#10;YAML スニペットは、既存の設定ファイルにマージするためのフラグメントです。&#10;リソース、エクスポーター、その他の設定はそのまま維持してください。&lt;/p&gt;&#10;&lt;h3 id="step-1-compare-old-and-new-telemetry"&gt;ステップ 1: 古いテレメトリーと新しいテレメトリーを比較する&lt;a class="td-heading-self-link" href="#step-1-compare-old-and-new-telemetry" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;テストデプロイメントで開始し、プレビュー設定を有効にする前にベースラインのテレメトリーをキャプチャしてください。&#10;次に、アプリケーションに関連するドメインを選択します。&#10;アンブレラプレビューフラグをオフにした状態で、&lt;code&gt;/dup&lt;/code&gt; を追加すると、古い属性と新しい属性、およびデュアルエミッションがサポートされているメトリクスを同時に出力できます。&lt;/p&gt;&#10;&#10;&#10; &lt;ul class="nav nav-tabs" id="tabs-0" role="tablist"&gt;&#10; &lt;li class="nav-item"&gt;&#10; &lt;button class="nav-link active"&#10; id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"&#10; data-td-tp-persist="環境変数" aria-controls="tabs-00-00" aria-selected="true"&gt;&#10; 環境変数&#10; &lt;/button&gt;&#10; &lt;/li&gt;&lt;li class="nav-item"&gt;&#10; &lt;button class="nav-link"&#10; id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"&#10; data-td-tp-persist="宣言的設定" aria-controls="tabs-00-01" aria-selected="false"&gt;&#10; 宣言的設定&#10; &lt;/button&gt;&#10; &lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;div class="tab-content" id="tabs-0-content"&gt;&#10; &lt;div class="tab-body tab-pane fade show active"&#10; id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OTEL_INSTRUMENTATION_COMMON_V3_PREVIEW=false&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OTEL_SEMCONV_STABILITY_OPT_IN=database/dup,code/dup&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;OTEL_SEMCONV_STABILITY_PREVIEW=messaging/dup&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;/div&gt;&#10; &lt;div class="tab-body tab-pane fade"&#10; id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0"&gt;&#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;instrumentation/development&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;general&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;stability_opt_in_list&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;database/dup,code/dup&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;java&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;common&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;v3_preview&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;semconv_stability&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;preview&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;messaging/dup]&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;たとえば、&lt;code&gt;public&lt;/code&gt; スキーマを使用するよう設定された、データベース &lt;code&gt;orders&lt;/code&gt; への PostgreSQL JDBC 接続を考えてみましょう。&#10;デュアルエミッションを使用すると、スパンに両方のネーミングスキームを持たせることができます。&lt;/p&gt;</description></item><item><title>OpenTelemetry Goのコンパイル時の計装v1の発表</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/go-compile-time-instrumentation-v1/</link><pubDate>Thu, 01 Oct 2026 02:53:40 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/go-compile-time-instrumentation-v1/</guid><description>&lt;p&gt;Java、Python、Node.js、.NETで開発している場合、コードを編集せずにOpenTelemetryをアプリケーションへ追加することが長年可能で、起動時にエージェントをアタッチすれば、テレメトリーの送信が始まります。&#10;Goは例外でした。&#10;Goプログラムは、起動時にフックできるランタイムを持たない単一の静的バイナリにコンパイルされるため、Go開発者は手動で計装するか、プロセス外のeBPFエージェントを使用する必要がありました。&lt;/p&gt;&#10;&lt;p&gt;この隔たりは埋まりつつあります。&#10;OpenTelemetryコミュニティは、&lt;a href="https://github.com/open-telemetry/opentelemetry-go-compile-instrumentation" target="_blank" rel="noopener" class="external-link"&gt;OpenTelemetry Go Compile-Time Instrumentation&lt;/a&gt;の最初の安定版リリースを発表します。&#10;2025年の初めに&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/blog/2025/go-compile-time-instrumentation/"&gt;このSIGを発表&lt;/a&gt;した際、AlibabaとDatadogは、Goをビルド時に計装する統一されたベンダー中立の方法を構築するために協力しました。&#10;v1はこのプロジェクトにとって最初の安定版リリースです。&lt;/p&gt;&#10;&lt;p&gt;Goサービスをビルドして実行している場合、バイナリまたはコンテナイメージのビルド方法を1行変更するだけで、コードを変更せずにアプリケーションとその依存関係のOpenTelemetryトレースとメトリクスを取得できます。&#10;プラットフォームエンジニアやSREにとっては、各チームが独自にコードを計装するのを待たずに、フリート全体のサービスへオブザーバビリティを追加できることを意味します。&lt;/p&gt;&#10;&lt;h2 id="what-is-go-compile-time-instrumentation"&gt;Goのコンパイル時の計装とは&lt;a class="td-heading-self-link" href="#what-is-go-compile-time-instrumentation" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Goは単一の静的バイナリにコンパイルされるため、長い間、インタプリタ言語よりも自動計装が困難でした。&#10;このプロジェクトは、ビルド中に標準のGoツールチェーン（&lt;code&gt;-toolexec&lt;/code&gt;メカニズム経由）にフックし、コード、依存関係、標準ライブラリがコンパイルされる際にOpenTelemetry計装を注入します。&#10;別個のエージェントはなく、ランタイムでアタッチするものもありません。&lt;/p&gt;&#10;&lt;p&gt;つまり、ソースコードを変更せずにテレメトリーを取得でき、計装はバイナリに直接コンパイルされます。&#10;アプリケーションコードは計装に関する懸念から解放され、自分が所有していないサードパーティライブラリもカバーされます。&lt;/p&gt;&#10;&lt;h2 id="key-capabilities-in-v1"&gt;v1の主な機能&lt;a class="td-heading-self-link" href="#key-capabilities-in-v1" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;ゼロコード計装&lt;/strong&gt;: 手動でコードを変更せずに、アプリケーションとその依存関係を計装します。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;コンパイル時の注入、ランタイムオーバーヘッドの追加なし&lt;/strong&gt;: 計装はランタイムでアタッチされるのではなく、バイナリに組み込まれます。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;サードパーティと標準ライブラリのカバレッジ&lt;/strong&gt;: 自分が所有していない依存関係と標準ライブラリパッケージを計装します。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;v1でサポートされる計装&lt;/strong&gt;: &lt;code&gt;net/http&lt;/code&gt;、&lt;code&gt;database/sql&lt;/code&gt;、gRPC、Redis、Goランタイムメトリクスを含む一般的なライブラリとフレームワークをサポートしており、さらに計装が定期的に追加されています。&#10;完全な最新リストは、&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/zero-code/go/compile-time/supported-libraries/"&gt;サポートされるライブラリ&lt;/a&gt;を参照してください。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;ルールベースで拡張可能&lt;/strong&gt;: SIGの計装ルール形式を通じて、新しいライブラリのサポートを追加できます。&#10;&lt;a href="https://github.com/open-telemetry/opentelemetry-go-compile-instrumentation/blob/v1.0.0/docs/instrument-guide.md" target="_blank" rel="noopener" class="external-link"&gt;計装ガイド&lt;/a&gt;と&lt;a href="https://github.com/open-telemetry/opentelemetry-go-compile-instrumentation/blob/v1.0.0/docs/rules.md" target="_blank" rel="noopener" class="external-link"&gt;ルールリファレンス&lt;/a&gt;を参照してください。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;セマンティック規約への準拠&lt;/strong&gt;: 送信されるテレメトリーは、現在のOpenTelemetryセマンティック規約に従います。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;CI/CDに対応&lt;/strong&gt;: 開発時にツールを実行するか、ビルドパイプラインに組み込めます。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="getting-started"&gt;はじめに&lt;a class="td-heading-self-link" href="#getting-started" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;このプロジェクトは、標準のGoツールチェーンをラップする&lt;code&gt;otelc&lt;/code&gt;というコマンドラインツールを提供します。&#10;ビルドの変更は1行だけで、以前 &lt;code&gt;go build&lt;/code&gt; を実行していた場所で &lt;code&gt;otelc go build&lt;/code&gt; を実行します。&#10;&lt;code&gt;go&lt;/code&gt; の後に続くすべての引数はツールチェーンに転送されるため、ビルドの残りの部分は変わりません。&#10;同じ置き換えはコンテナビルドでも機能します。&#10;デフォルトでは、&lt;code&gt;otelc&lt;/code&gt; はモジュール内のサポート対象ライブラリを検出し、設定やコード変更なしで自動的に計装します。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;otelc&lt;/code&gt; のインストール、アプリケーションのビルド、生成されるテレメトリーの確認については、&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/zero-code/go/compile-time/getting-started/"&gt;入門ガイド&lt;/a&gt;に従ってください。&#10;設定、サポートされるライブラリ、トラブルシューティングなどについては、&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/zero-code/go/compile-time/"&gt;コンパイル時の計装のドキュメント&lt;/a&gt;を参照してください。&lt;/p&gt;&#10;&lt;h2 id="when-should-you-use-it"&gt;どのような場合に使うべきか&lt;a class="td-heading-self-link" href="#when-should-you-use-it" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Goサービスを開発または運用している場合、OpenTelemetryのテレメトリーを取得するための補完的な方法が3つあり、コンパイル時の計装は創設時の投稿で約束された3番目の選択肢です。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;コンパイル時の計装（このプロジェクト）&lt;/strong&gt;: アプリケーションを再ビルドでき、コード変更やランタイムオーバーヘッドを加えずに、依存関係と標準ライブラリをカバーしたい場合に最適です。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;eBPF計装（&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/zero-code/obi/"&gt;OpenTelemetry eBPF Instrumentation、またはOBI&lt;/a&gt;）&lt;/strong&gt;: バイナリを再ビルドできない場合や、プロセス外部からゼロコードで複数言語を計装したい場合に最適です。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/languages/go/"&gt;OpenTelemetry Go API&lt;/a&gt; による手動計装&lt;/strong&gt;: カスタムスパンやドメイン固有のテレメトリーに最適で、他の2つの方法と組み合わせられます。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;v1はGoエコシステム全体を網羅するのではなく、対象を絞った計装セットを提供しており、カバレッジはリリースごとに拡大します。&#10;依存するライブラリがまだカバーされていない場合は、そのためのルールを追加するか、コンパイル時の計装と手動スパンを組み合わせることができます。&#10;上記の3つの方法は異なる方法で重複する問題を解決するため、OBIとGo SIGとともに、それらをより深く比較するフォローアップ投稿に取り組んでいます。&lt;/p&gt;</description></item><item><title>LLM 呼び出しの内側: OpenTelemetry による GenAI オブザーバビリティ</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/genai-observability/</link><pubDate>Sun, 20 Sep 2026 01:09:30 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/genai-observability/</guid><description>&lt;p&gt;AI エージェントに単純な質問をしたら、回答までに 45 秒もかかった、ということを想像してみてください。&#10;原因はモデルでしょうか。&#10;それともツール呼び出しが遅かったのでしょうか。&#10;あるいはリトライのループに陥っていたのでしょうか。&#10;アプリケーションが LLM を呼び出すたびに、モデル呼び出し、ツール実行、トークンのやり取りといった一連の処理が裏側で起きています。&#10;オブザーバビリティがなければ、原因は推測するしかありません。&lt;/p&gt;&#10;&lt;p&gt;OpenTelemetry の &lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/docs/specs/semconv/gen-ai/"&gt;Generative AI 向けセマンティック規約&lt;/a&gt; は、この内側を可視化します。&#10;GenAI 操作の記録方法を標準化しており、呼び出されたモデル、入出力のトークン数、そして明示的に有効化した場合にはプロンプト、応答、ツール呼び出し、ツールの実行結果の中身までを記録します。&lt;/p&gt;&#10;&lt;p&gt;この記事では、以下を順に紹介します。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;LLM を活用したアプリケーションから GenAI のテレメトリーをエクスポートする。&lt;/li&gt;&#10;&lt;li&gt;そのテレメトリーを受信して表示できるよう、オブザーバビリティツールを設定する。&lt;/li&gt;&#10;&lt;li&gt;GenAI ビジュアライザーを使って、GenAI のトレース、メトリクス、イベントを探索する。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="exporting-genai-telemetry"&gt;GenAI テレメトリーをエクスポートする&lt;a class="td-heading-self-link" href="#exporting-genai-telemetry" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;このチュートリアルでは、多くの開発者がすでにインストール済みであることから、テレメトリーを発生させるツールとして VS Code Copilot を使います。&#10;ただし、多くのコーディングアシスタントが OpenTelemetry によるモニタリングをサポートしています。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://code.visualstudio.com/docs/copilot/guides/monitoring-agents" target="_blank" rel="noopener" class="external-link"&gt;VS Code Copilot&lt;/a&gt; は、エージェントとのやり取りごとにトレース、メトリクス、イベントを出力します。&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://learn.chatgpt.com/docs/config-file/config-advanced#observability-and-telemetry" target="_blank" rel="noopener" class="external-link"&gt;OpenAI Codex&lt;/a&gt; は、API リクエスト、ツール呼び出し、セッションについて、構造化ログイベントと OTel メトリクスをエクスポートします。&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://code.claude.com/docs/en/monitoring-usage" target="_blank" rel="noopener" class="external-link"&gt;Claude Code&lt;/a&gt; は OTel でメトリクスとログイベントをエクスポートし、トレース対応はベータ版で提供されています。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;すでに使っているツールをモニタリングするだけでなく、自分の GenAI アプリケーションに OpenTelemetry を組み込めば、LLM とのやり取りの様子を可視化できます。&lt;/p&gt;&#10;&lt;h3 id="configure-telemetry-export"&gt;テレメトリーエクスポートを設定する&lt;a class="td-heading-self-link" href="#configure-telemetry-export" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;テレメトリーをエクスポートするには、いくつかの設定が必要です。&#10;&lt;a href="https://code.visualstudio.com/docs/copilot/guides/monitoring-agents" target="_blank" rel="noopener" class="external-link"&gt;VS Code Copilot&lt;/a&gt; の場合は、設定画面を開いて &lt;code&gt;copilot otel&lt;/code&gt; で検索してください。&lt;/p&gt;</description></item><item><title>小さな環境変数の旅路</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/spring-boot-declarative-config/</link><pubDate>Thu, 10 Sep 2026 12:25:50 +0000</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/spring-boot-declarative-config/</guid><description>&lt;p&gt;OpenTelemetry の&#10;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/zero-code/java/spring-boot-starter/"&gt;Spring Boot スターター&lt;/a&gt;は、バージョン 2.26.0 から宣言的設定をサポートするようになりました。&#10;これは &lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2025/declarative-config/"&gt;Java エージェントが 2025 年後半に導入した&lt;/a&gt;のと同じ YAML スキーマを &lt;code&gt;application.yaml&lt;/code&gt; の中に埋め込むものです。&#10;この投稿では、1 つの環境変数 &lt;code&gt;OTEL_SERVICE_NAME=petclinic&lt;/code&gt; がこの新しい仕組みの中で何をするのかを追跡し、どこに継ぎ目があるのかを明らかにします。&lt;/p&gt;&#10;&lt;div class="td-alert td-alert--md alert alert-tip" role="alert"&gt;&lt;div class="td-alert-heading alert-heading" role="heading"&gt;お急ぎですか？&lt;/div&gt;&#10; &lt;div class="td-alert-body"&gt;&#10; &lt;p&gt;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/zero-code/java/spring-boot-starter/declarative-configuration/"&gt;Spring Boot スターターの宣言的設定ドキュメント&lt;/a&gt;に直接ジャンプするか、&#10;&lt;code&gt;application.properties&lt;/code&gt; を&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/zero-code/java/spring-boot-starter/declarative-configuration/#convert-your-existing-configuration"&gt;インタラクティブコンバーター&lt;/a&gt;に貼り付けるか、&#10;&lt;a href="https://explorer.opentelemetry.io/java-agent/configuration/builder" target="_blank" rel="noopener" class="external-link"&gt;Ecosystem Explorer&lt;/a&gt; で Spring Boot スターターのターゲットを選択して SDK のセットアップを選んでください。&#10;ストーリーはコーヒーを片手にどうぞ。&lt;/p&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;長年にわたり、環境変数（とその JVM &lt;code&gt;-D&lt;/code&gt; 版）は OpenTelemetry SDK を設定する唯一の方法でした。&#10;すべてのエクスポーター、すべてのサンプラー、すべてのキャプチャするヘッダーが、フラットな &lt;code&gt;OTEL_*&lt;/code&gt; 変数のリストとして表現されていました。&lt;/p&gt;&#10;&lt;p&gt;OpenTelemetry Spring Boot スターターのバージョン 2.26.0 以降、このリストには新しい兄弟ができました。&#10;SDK の&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/languages/sdk-configuration/declarative-configuration/"&gt;宣言的設定スキーマ&lt;/a&gt;は、テレメトリーパイプライン全体（すべてのプロセッサー、すべてのエクスポーター、すべてのネストされたオプション）を SDK が実際に動作するのと同じ形で記述できる YAML ツリーです。&lt;/p&gt;&#10;&lt;p&gt;環境変数だけでは表現できないことに対して、Spring スターターのユーザーは &lt;code&gt;@Bean&lt;/code&gt; を書く必要がありました。&#10;Java エージェントのユーザーは、完全な&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/ja/docs/zero-code/java/agent/extensions/"&gt;エクステンション&lt;/a&gt;を書き、エージェントと一緒に配布する別の jar にパッケージする必要がありましたが、これは負担が大きいことがありました。&lt;/p&gt;&#10;&lt;p&gt;これらの新しい変更により、スキーマは &lt;code&gt;application.yaml&lt;/code&gt; の中の 1 つの &lt;code&gt;otel:&lt;/code&gt; キーの下に移動します。&#10;環境変数は引き続き機能しますが、その役割はより限定的になります。&#10;&lt;code&gt;OTEL_SERVICE_NAME&lt;/code&gt; はリソース属性として反映されますが、これはサービス名ディテクターが起動時にそれを読み取るためです。&#10;また、YAML に書いた &lt;code&gt;${VAR:default}&lt;/code&gt; プレースホルダーは名前を指定して環境変数を取り込みます。&#10;それ以外では、YAML が信頼できる情報源です。&lt;/p&gt;</description></item><item><title>OTel-Arrow フェーズ 2: 効率的なトランスポートから効率的なテレメトリーパイプラインへ</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/otel-arrow-phase-2/</link><pubDate>Sun, 28 Jun 2026 13:12:19 +0900</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/otel-arrow-phase-2/</guid><description>&lt;p&gt;OTel-Arrow の&lt;a href="https://github.com/open-telemetry/otel-arrow/blob/c6ed105cab28e537bf5c2c81a97e9b63677d3cff/docs/phase1-overview.md" target="_blank" rel="noopener" class="external-link"&gt;フェーズ 1&lt;/a&gt; では、OTAP（OpenTelemetry Arrow Protocol）を OpenTelemetry 向けの効率的なトランスポートプロトコルとして確立しました。&#10;Apache Arrow は、構造化データをシステム間で効率的に移動・処理するために設計された、言語非依存の列指向インメモリフォーマットです。&#10;テレメトリーを OpenTelemetry データモデルとの互換性を維持しつつ、大幅に低いネットワークオーバーヘッドで転送できることを実証しました。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/blog/2025/otel-arrow-phase-2/"&gt;フェーズ 2&lt;/a&gt; では異なる問いを立てました。&#10;Arrow をネットワーク上だけでなく、パイプラインが内部的に扱うデータ表現としても使ったらどうなるのか、という問いです。&lt;/p&gt;&#10;&lt;p&gt;テレメトリーの量は急速に増加しており、その背景には OpenTelemetry の幅広い導入、より豊富な計装、そしてよりダイナミックな AI やエージェントベースのワークロードがあります。&#10;この規模になると、属性の削除、フィールドのリネーム、メタデータの追加、シグナルのルーティングといった一般的なパイプライン操作は、できるだけコストが低いことが求められます。&#10;これらの操作の多くは単純で反復的です。&#10;プロセッサーがあるレコードの属性に対して処理を行う場合、同じバッチ内の多くのレコードに対しても同じ属性への処理が行われることが多いのです。&lt;/p&gt;&#10;&lt;p&gt;このパターンは列指向の表現とよく適合します。&#10;テレメトリーをコンパクトな Arrow バッチに保ったまま、プロセッサーが属性のリネーム、データのエンリッチメント、シグナルのルーティングを行えれば、パイプラインは各変換にかかる周辺処理を削減し、CPU とメモリをより効率的かつ予測可能に使用できます。&#10;OTAP は、テレメトリーの増加という次のフェーズにおいて、OpenTelemetry パイプラインをより効率的に運用する上で重要な役割を果たせると考えています。&lt;/p&gt;&#10;&lt;h2 id="a-dataflow-engine-built-to-test-the-arrow-path"&gt;Arrow パスを検証するためのデータフローエンジン&lt;a class="td-heading-self-link" href="#a-dataflow-engine-built-to-test-the-arrow-path" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;このアイデアを探るため、OTel-Arrow Dataflow Engine を構築しました。&#10;これは OTAP をパイプライン内の主要なデータ表現として設計した Rust ランタイムです。&#10;OTAP ストリームをエンドツーエンドで受信・送信でき、&lt;a href="https://deploy-preview-12367--opentelemetry.netlify.app/docs/specs/otlp/"&gt;OTLP&lt;/a&gt;（OpenTelemetry Protocol）も別のファーストクラスのデータパスとしてサポートしています。&lt;/p&gt;&#10;&lt;p&gt;このデュアルパス設計により、同じランタイム内で 2 つのモードを比較できます。&#10;テレメトリーを Arrow レコードバッチのまま保持する OTAP ダイレクトパスと、明示的な境界で OTLP と OTAP 間の変換を行う OTLP 互換パスです。&#10;結果は明確です。&#10;テレメトリーが OTAP パス上にエンドツーエンドで留まると、トランスポートと処理のコストが大幅に低下します。&lt;/p&gt;&#10;&lt;p&gt;OpenTelemetry Collector は、OpenTelemetry パイプラインのための広く利用されている汎用的な実装です。&#10;そのパイプラインモデルは OTLP 形式のインメモリデータ構造を中心に構築されており、柔軟で OpenTelemetry データモデルと密接に整合していますが、大量のバッチ処理には比較的コストがかかります。&#10;本研究の目的は、異なる設計ポイントを検証することです。&#10;OTAP を主要なデータ表現とし、OTLP 互換性を明示的な境界で処理するテレメトリーデータプレーンの構築です。&lt;/p&gt;</description></item><item><title>レガシー環境における OpenTelemetry セキュリティプラクティスの適用</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/security-legacy-environments/</link><pubDate>Fri, 05 Jun 2026 16:04:50 +0900</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/security-legacy-environments/</guid><description>&lt;p&gt;製造業をはじめとするレガシー環境において、組織がモダンなオブザーバビリティのアプローチを模索する中で、OpenTelemetry は注目を集めつつあります。&#10;しかし、こうしたプラクティスを従来型のシステムに適用すると、これまでとは異なるセキュリティ上の課題が生じます。&#10;レガシーインフラの制約は、セキュリティ制御をどこにどのように適用すべきかを根本的に変えてしまいます。&lt;/p&gt;&#10;&lt;p&gt;レガシー環境や産業環境には、次のような特徴がよくみられます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;変更や計装が不可能なシステム&lt;/li&gt;&#10;&lt;li&gt;長い機器のライフサイクルと限られたパッチ適用の機会&lt;/li&gt;&#10;&lt;li&gt;フラットなネットワーク、もしくはセグメンテーションが弱いネットワーク&lt;/li&gt;&#10;&lt;li&gt;一般的な &lt;a href="https://en.wikipedia.org/wiki/Personal_data" target="_blank" rel="noopener" class="external-link"&gt;PII&lt;/a&gt; ではない、機密性の高い運用データ&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;本記事では、こうした環境で OpenTelemetry を保護する際に何が異なるのか、そしてそれに応じてアプローチをどのように適応させればよいのかに焦点を当てます。&lt;/p&gt;&#10;&lt;h2 id="why-legacy-environments-are-different"&gt;なぜレガシー環境は異なるのか&lt;a class="td-heading-self-link" href="#why-legacy-environments-are-different" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;クラウドネイティブシステムにおけるセキュリティのガイダンスは、次のような前提に立っています。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;サービスは計装可能である&lt;/li&gt;&#10;&lt;li&gt;暗号化と認証はどこでも強制できる&lt;/li&gt;&#10;&lt;li&gt;システムは定期的にパッチを適用できる&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;レガシー環境や産業環境では、これらの前提が成り立たないことがよくあります。&lt;/p&gt;&#10;&lt;p&gt;その結果、セキュリティはどこにでも理想的な制御を適用することではなくなります。&#10;&lt;strong&gt;テレメトリーパイプラインの正しい場所に制御を配置し&lt;/strong&gt;、可視性とリスクのバランスを取ることが重要になります。&lt;/p&gt;&#10;&lt;h2 id="security-challenges-unique-to-legacy-systems"&gt;レガシーシステム特有のセキュリティ課題&lt;a class="td-heading-self-link" href="#security-challenges-unique-to-legacy-systems" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;h3 id="systems-cannot-be-modified"&gt;システムを変更できない&lt;a class="td-heading-self-link" href="#systems-cannot-be-modified" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;多くの産業システムは、エージェントを実行できず、モダンなライブラリをサポートできず、まったく変更できません。&#10;これは次のことを意味します。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;ソースにおけるモダンな TLS や認証のサポートが限定的、あるいは一貫していない&lt;/li&gt;&#10;&lt;li&gt;SDK を用いた直接的な計装ができない&lt;/li&gt;&#10;&lt;li&gt;中継機能（Collector、ブリッジ、ログパイプライン）に依存する&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;ソースシステムがモダンな制御を強制できない場合、セキュリティの負担はより多く Collector、中継システム、ネットワーク境界へと移ります。&lt;/p&gt;&#10;&lt;h3 id="weak-or-non-existent-network-segmentation"&gt;脆弱な、あるいは存在しないネットワークセグメンテーション&lt;a class="td-heading-self-link" href="#weak-or-non-existent-network-segmentation" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;レガシー環境のネットワークアーキテクチャは、モダンなオブザーバビリティを念頭に設計されていないことがよくあります。&#10;セグメンテーションが最小限のフラットあるいは共有ネットワーク上で動作するものもあれば、レガシーなプロトコルが混在する深くネストされたネットワークに依存するものもあります。&#10;いずれの場合も、テレメトリー収集を導入することで次のような事態が起こり得ます。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;意図しないネットワークセグメントに対して新たな受信エンドポイントが露出する&lt;/li&gt;&#10;&lt;li&gt;Collector やブリッジへの意図しない横方向アクセスが許容される&lt;/li&gt;&#10;&lt;li&gt;これまで分離されていたゾーンの間に予期せぬ経路が生まれる&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;このような環境では、Collector の配置は Collector の設定と同じくらい重要です。&#10;ネットワーク境界、ファイアウォール、プロトコルゲートウェイに対して Collector がどこに位置するのかを慎重に評価してください。&lt;/p&gt;&#10;&lt;h3 id="limited-patching-and-long-lifecycles"&gt;限られたパッチ適用と長いライフサイクル&lt;a class="td-heading-self-link" href="#limited-patching-and-long-lifecycles" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;産業システムはアップグレードなしで何年も稼働することがあります。&#10;Collector の配置方法によって、パッチ適用の戦略は決まります。&#10;一般的なモデルは 2 つあります。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Collector を外部ブリッジとして配置する（推奨）:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Collector はレガシーシステムの境界の外側（別のホスト、VM、コンテナ上）で動作し、産業環境とオブザーバビリティバックエンドの間のブリッジとして機能します。&#10;このモデルでは、次のような利点があります。&lt;/p&gt;</description></item><item><title>OpenTelemetry が CNCF の Graduated プロジェクトに</title><link>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/otel-graduates/</link><pubDate>Fri, 22 May 2026 19:35:22 +0900</pubDate><guid>https://deploy-preview-12367--opentelemetry.netlify.app/ja/blog/2026/otel-graduates/</guid><description>&lt;p&gt;本日、Cloud Native Computing Foundation（CNCF）は OpenTelemetry が Graduated になったことを&#10;&lt;a href="https://www.cncf.io/announcements/2026/05/21/cloud-native-computing-foundation-announces-opentelemetrys-graduation-solidifying-status-as-the-de-facto-observability-standard/" target="_blank" rel="noopener" class="external-link"&gt;発表しました&lt;/a&gt;。&lt;/p&gt;&#10;&lt;p&gt;Graduated はプロジェクトにとって重要なマイルストーンであり、OpenTelemetry のコミュニティとエコシステムの強さを反映するものです。&#10;OpenTracing と OpenCensus の統合以降、数千人ものコントリビューター、メンテナー、エンドユーザー、そして多くの組織が、OpenTelemetry を業界全体で利用される、オープンでベンダーニュートラルなオブザーバビリティフレームワークへと育てる手助けをしてきました。&lt;/p&gt;&#10;&lt;p&gt;このマイルストーンはコミュニティのものです。&lt;/p&gt;&#10;&lt;p&gt;コード、ドキュメント、仕様、言語 SDK、セマンティック規約、バグ報告、レビュー、コミュニティサポート、アドボカシー、そしてエンドユーザー体験を寄せてくださったすべての方々に感謝します。&#10;OpenTelemetry は、毎日プロジェクトに時間と専門知識を投じ続けてくれる人々のおかげで存在しています。&lt;/p&gt;&#10;&lt;p&gt;また、Graduated のプロセスを通じて OpenTelemetry を支えてくださった CNCF コミュニティ、Technical Oversight Committee のスポンサー、そしてエンドユーザーの皆様にも感謝しています。&lt;/p&gt;&#10;&lt;p&gt;Graduated はゴールではありません。&#10;OpenTelemetry コミュニティは、グローバル規模のクラウドネイティブソフトウェアのために、相互運用可能で高品質なオブザーバビリティの標準とツールを構築することに、これからも取り組み続けます。&lt;/p&gt;&#10;&lt;p&gt;この旅の一員でいてくださり、ありがとうございます。&#10;この先に何が待っているのか、私たちはワクワクしています。&lt;/p&gt;</description></item></channel></rss>